如何知道何时使用Solr bq与bf以及如何应用查询逻辑?

时间:2017-07-17 18:06:01

标签: apache search solr lucene boosting

我刚刚开始学习Solr中的提升,到目前为止,我已经能够根据一些特定的短语添加提升查询,例如:bq=manufacturer:sony^2。但是,我现在正在寻求将逻辑应用于提升,我不确定如何继续。

具体来说,我已经有一个带有多个术语的提升查询,例如

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还是更接近增强功能?我对主要区别是什么感到困惑。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

根据Solr文档https://cwiki.apache.org/confluence/display/solr/The+DisMax+Query+Parser

bq(提升查询)参数 bq参数指定一个附加的可选查询子句,该子句将添加到用户的主查询中以影响分数。

bf(Boost Functions)参数 bf参数指定将用于构造FunctionQueries的函数(带有可选的boost),这些函数将作为将影响分数的可选子句添加到用户的主查询中。

如果要使用其中一个本机Solr函数从字段派生值,则可以使用bf参数。

在您的情况下,您按原样使用字段,而不使用任何本机Solr函数。因此,对于您的情况,bq将正常工作。

您可以在查询中链接几个bq参数以获得所需的输出。例如,你可以这样做: -

q=*:*&bq=manufacturer:sony^2&bq=name:bob^3&bq=town:place^4&bq=age:40^5

您可以修改以上查询以满足您的需求。