Solr查询中的局部参数Local Parameters

时间:2022-02-19 16:13:51

摘要: Solr中的Local Parameters(局部变量或本地参数)主要指的是query的特定参数,局部参数可以用来对一些参数类型添加meta-data元数据。本文整理自Solr官方文档

语法

可以通过下面的语法来指定Local Parameters
1. 以{!开头
2. 插入key=value形式的键值对,多个键值对以空格分开
3. 以}结尾,然后跟上查询参数q

你可以指定每个参数只有一个本地参数前缀。键-值对中的值可以通过单引号或双引号引用,通过反斜杠转义含有引号的字符串。

实例

本地参数被指定为前缀。有如下一个查询:
q=solr rocks
我们可以使用Local Parameters给这个Standard Query Parser提供更多的信息。比如,可以将查询操作符改为AND,将默认查询字段设置为title
q={!q.op=AND df=title}solr rocks
这样,就使得查询在title字段进行,并且返回的结果中包含solrrocks

简写查询类型

如果Local Parameters参数值没有名字,那么它的名字是隐式的“type”。
一个简写形式如下:
q={!dismax qf=myfield}solr rocks
它等同于:
q={!type=dismax qf=myfield}solr rocks
如果没有指定“type”,默认用的是lucene parser
一个简写形式如下:
fq={!df=summary}solr rocks
它等同于:
fq={!type=lucene df=summary}solr rocks

指定以v为key的参数

有一种特殊的方式,可以将query的值以v为键设置到Local Parameters
有如下的查询参数:
q={!dismax qf=myfield}solr rocks
它等同于:
q={!type=dismax qf=myfield v='solr rocks'}

参数非关联化Parameter Dereferencing

参数非关联允许你使用另一个参数的值,而不是直接指定它。可以帮助你简化查询语句,解耦输入的参数,避免前端的输入与solrconfig.xml中参数定义的冲突。
有如下的查询参数:
q={!dismax qf=myfield}solr rocks
它等同于:
q={!type=dismax qf=myfield v=$qq}&qq=solr rocks