局部参数是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
翻译:沉潜飞动
译文链接:查询中的局部参数