局部参数是Solr请求的特定的一种查询参数。局部参数提供了设置某些元数据的方法,比如,查询字符串。(在Solr文档中,局部参数有local parameters和LocalParams两种写法。)
局部参数指定参数的前缀,以下面的查询参数为例:

q=solr rocks

我们可以为这个查询串设置局部参数,来为标准查询解析器提供更多的信息。比如,我们修改默认操作符为AND和默认搜索域为“title”:

q={!q.op=AND df=title}solr rocks

这样就能够在搜索过程中,查询“title”域中匹配的“solr”和“rocks”的结果。

局部参数的基本语法

要指定一个局部参数,在参数前查询下面内容:

  • 以{!开始
  • 接着是一些以空格分割的键值对
  • 以}结尾,之后跟其他查询参数

你可以为每个参数指定一个局部参数。键值对中的值可以使用单引号或双引号、反斜杠转义。

查询类型的短形式

如果一个局部参数没有名称,默认使用“type”。这就允许分析查询字符串时使用短形式表示。比如:

q={!dismax qf=myfield}solr rocks

等同于:

q={!type=dismax qf=myfield}solr rocks

如果没有指定“type”字段,默认使用Lucene解析器。比如:

fq={!df=summary}solr rocks

等同于:

fq={!type=lucene df=summary}solr rocks

使用“v”指定参数值

局部参数中的特殊的键“v”是指定该参数值的另一种方式。

q={!dismax qf=myfield}solr rocks

等同于:

q={!type=dismax qf=myfield v='solr rocks'}

参数的取值

相对于直接指定参数,还可以使用参数引用或间接寻址方式来使用其他参数。这样可以简化查询,与用户输入、或在在solrconfig.xml中配置的前端GUI参数解耦。

q={!dismax qf=myfield}solr rocks

等同于:

q={!type=dismax qf=myfield v=$qq}&qq=solr rocks

原文链接:Local Parameters in Queries
翻译:沉潜飞动
译文链接:查询中的局部参数