是Lucene布尔OR查询得分偏向于有更多选择的术语

时间:2013-03-19 15:51:37

标签: solr lucene boolean

为什么Lucene / Solr得分手正在计算OR子句的权重总和。它使得查询得分与具有更多替代方案的术语失去平衡。拥有查询术语替代品的最大权重不是更有意义吗?

以下是一个例子:

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

通过单击调试,我可以看到解析的查询符合预期:

"parsedquery":"text:gucci (text:handbag text:purse text:pocketbook)"

解释字段显示得分手正在制作(我在这里简化一下):

weight(gucci) + sum( weight(handbag) + weight(purse) + weight(pocketbook))

结果是包含手提包,钱包和钱包的结果将比包含gucci和手提包的结果得分更高。我认为这是违反直觉的。对我而言,OR意味着这些术语是等同的,而不是它们更重要。此外,我可以使用查询术语提升来独立完成此任务。

我尝试使用Edismax,它有类似的行为。

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

1 个答案:

答案 0 :(得分:0)

您可以尝试使用DisjunctionMaxQuery并为分离设置不同的提升因子。看看tieBreakMultiplier构造函数参数 - 它可以帮助您实现所需。引用文档:

  

tieBreakerMultiplier< ..>值< ..>说在一个得分较低的领域中出现了10个单词   在得分较低的领域也是如此,在得分较低的领域中也是一个独特的单词