我刚刚开始学习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
还是更接近增强功能?我对主要区别是什么感到困惑。
感谢您的帮助。
答案 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
您可以修改以上查询以满足您的需求。