我刚刚开始学习Solr中的boost,到目前为止,我已经能够根据一些特定的短语添加boost查询,比如:bq=manufacturer:sony^2。但是,我现在想将逻辑应用于助推,但我不知道如何继续。
具体来说,我已经有了一个包含多个术语的boost查询,如
bq = manufacturer:"sony"^2 name:"bob"^3 town:"place"^4 age:"40"^5
但我想知道是否有可能添加另一个术语,它是一个较小的术语的集合,如果一个或多个匹配,那么对于给定的搜索结果,整个术语加权更高?类似于:
bq = manufacturer:"sony"^2 (name:"bob" OR town:"place" OR age:"40")^5
其中括号中的多项有一个相关的权重(5),只有当一个或多个子术语匹配时,才是“激活的”。
这样的东西只是属于一个bq,还是更接近于boost函数?我有点搞不懂主要的区别是什么。
谢谢你的帮助。
发布于 2017-07-17 18:27:21
根据Solr文档https://cwiki.apache.org/confluence/display/solr/The+DisMax+Query+Parser
bq (Boost Query)参数bq参数指定一个额外的可选查询子句,该子句将添加到用户的主查询中,以影响评分。
bf (Boost函数)参数bf参数指定将用于构造FunctionQueries的函数(带有可选的提升),该函数将作为影响得分的可选子句添加到用户的主查询中。
如果要使用本机Solr函数之一从字段中派生值,则可以使用bf参数。
在您的例子中,您使用的是原样的字段,而不是在它们上使用任何本机Solr函数。因此,对于您的情况,bq将工作良好。
您可以在查询中链接几个bq参数以获得所需的输出。如你能做到:-
q=*:*&bq=manufacturer:sony^2&bq=name:bob^3&bq=town:place^4&bq=age:40^5您可以修改上述查询以满足您的需要。
https://stackoverflow.com/questions/45150856
复制相似问题