solr - 何时在 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]
如果本地参数是相当可互换的。
在这个过程中我有什么误解吗?
解决方案
本地参数是 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}
参数会针对该特定参数而不是整个查询(查询参数会这样做)更改某些内容。
在将参数与参数解引用支持解耦时也很有用,这意味着您可以通过使用invariant
solrconfig 中的查询参数来锁定参数本身(及其参数),然后使用新的查询参数发送实际用户提供在查询中输入字符串:
q={!type=dismax qf=myfield v=$qq}&qq=solr rocks
在这种情况下,您可以将参数锁定为q
上面给出的任何内容,然后仅通过qq
.
还有许多其他使用 localparams 来更改特定查询参数的示例,但希望这能让您了解为什么以及如何使用它们。
推荐阅读
- python - 我怎样才能通过张量并获得我想要的位置的值?
- reactjs - React hooks 单选按钮列表给出警告:列表中的每个孩子都应该有一个唯一的“key”道具
- python - 神经网络直线 - GEKKO
- powerbi-desktop - PowerBi - 在一张卡片中显示两个度量
- python - 如何在列表中均匀添加新索引?
- python-3.x - 导入错误无法在空闲时导入请求,但可以在 Jupyter/spider 上
- kubernetes - 删除 argo cron 工作流是否也会删除由它启动的所有 argo 工作流
- mysql - 为什么某些 docker exec 命令并不总是在批处理文件中工作?
- python - 通过消除重复编写 Pandas groupby 代码的有效方法
- python - Spyder 探查器时间不加起来(totalTime =/= localTime + 子函数 totalTime)