首页 > 解决方案 > 何时在 solr 中使用本地参数

问题描述

我正在努力将我的大脑包裹在 solr 中的本地参数上。你什么时候会真正使用它们来做类似的事情q.op?q={!q.op=OR}solr rocks有何不同以及何时?q=solr rocks&q.op=OR有用。q=我能想到的主要事情是,如果您只能通过您正在使用的任何 api 或 lib 访问参数。是否主要用于嵌套更复杂的搜索,如果是,文档中是否有示例?

似乎某些参数本质上是不同的,例如{!boost...vs bq/ bf,但我仍然不明白为什么您不能/不应该能够做一些事情,比如?q=solr rocks&boost=[some boost thing]如果本地参数是相当可互换的。

在这个过程中我有什么误解吗?

标签: solredismax

解决方案


本地参数是 Solr 请求中特定于查询参数的参数。

本地参数提供了一种将元数据添加到某些参数类型(例如查询字符串)的方法。(在 Solr 文档中,局部参数有时称为 LocalParams。)

重要的部分是“某些参数类型”。这意味着它不仅对q参数有效。

您上面给出的示例也可以与fq参数一起使用,例如使用 dismax 搜索查询作为fq

fq={!dismax qf=myfield}solr rocks

另一个非常有用的事情是能够fq在创建构面时标记和排除参数 - 即允许您过滤结果集而不过滤用于构面的文档:

q=mainquery&fq=status:public&fq={!tag=dt}doctype:pdf&facet=true&facet.field={!ex=dt}doctype

在这里,{!tag}and{!ex}参数会针对该特定参数而不是整个查询(查询参数会这样做)更改某些内容。

在将参数与参数解引用支持解耦时也很有用,这意味着您可以通过使用invariantsolrconfig 中的查询参数来锁定参数本身(及其参数),然后使用新的查询参数发送实际用户提供在查询中输入字符串:

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

在这种情况下,您可以将参数锁定为q上面给出的任何内容,然后仅通过qq.

还有许多其他使用 localparams 来更改特定查询参数的示例,但希望这能让您了解为什么以及如何使用它们。


推荐阅读