2

我刚刚开始学习 Solr 中的 boosting,到目前为止,我已经能够根据一些特定的短语添加 boost 查询,例如: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),仅当其一个或多个子项匹配时才“激活”。

像这样的东西只是属于 abq还是更接近于 boost 函数?我对主要区别是什么感到困惑。

谢谢你的帮助。

4

1 回答 1

3

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

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

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

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

在您的情况下,您正在使用字段,而不是在它们上使用任何本机 Solr 函数。因此,对于您的情况, bq 可以正常工作。

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

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

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

于 2017-07-17T18:27:21.047 回答