Solr Lucene布尔或查询评分偏向于有更多选择的术语吗

Solr Lucene布尔或查询评分偏向于有更多选择的术语吗,solr,lucene,boolean,Solr,Lucene,Boolean,为什么Lucene/Solr记分员要计算OR子句的权重之和。它使查询评分朝着有更多选择的术语不平衡。让查询词备选项的权重达到最大不是更有意义吗 以下是一个例子: 我在solr管理界面中运行:gucci(手提包、钱包或钱包) 通过单击“调试”,我可以看到解析的查询与预期的一样: "parsedquery":"text:gucci (text:handbag text:purse text:pocketbook)" 解释字段显示记分员正在做(我在这里简化了一点): 结果是,包含手提包、钱包和钱包的

为什么Lucene/Solr记分员要计算OR子句的权重之和。它使查询评分朝着有更多选择的术语不平衡。让查询词备选项的权重达到最大不是更有意义吗

以下是一个例子:

我在solr管理界面中运行:gucci(手提包、钱包或钱包)

通过单击“调试”,我可以看到解析的查询与预期的一样:

"parsedquery":"text:gucci (text:handbag text:purse text:pocketbook)"
解释字段显示记分员正在做(我在这里简化了一点):

结果是,包含手提包、钱包和钱包的结果比包含古奇和手提包的结果得分更高。我认为这是违反直觉的。对我来说,OR意味着这些术语是等价的,而不是它们更重要。此外,我可以使用查询术语boosting独立完成这项工作

我用Edismax做过实验,它也有类似的行为


有没有办法让OR子句保留查询术语“重要性”?

您可以尝试使用
析取MaxQuery
并为析取设置不同的提升因子。请查看
tieBreakMultiplier
constructor参数-它可以帮助实现您想要的功能。引用文件:

tieBreakerMultiplier值表示在得分较低的字段中出现10次单词 在得分较高的字段中的“是”与在得分较低的字段中的“唯一”一词一样好


感谢您的建议,但看起来这是字段上的分离,在我的例子中,我希望在查询的部分上进行分离,以便对于单个字段“文本”,例如:score=weight(a)+max(weight(B),weight(B1))或max(weight(a)+weight(B),weight(a)+weight(B1))(B1是B的同义词)
weight(gucci) + sum( weight(handbag) + weight(purse) + weight(pocketbook))