0

为什么 Lucene/Solr scorer 对 OR 子句的权重求和。它使查询评分与具有更多选择的术语不平衡。让查询词替代项的权重达到最大值不是更有意义吗?

这是一个例子:

我在 solr 管理界面中运行:gucci (handbag OR purse OR pocketbook)

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

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

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

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

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

我用 Edismax 进行了实验,它有类似的行为。

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

4

1 回答 1

0

您可以尝试DisjunctionMaxQuery为析取项使用和设置不同的提升因子。看看tieBreakMultiplier构造函数参数 - 它可以帮助实现你想要的。引用文档:

tieBreakerMultiplier <..> value <..> 表示在得分较低的字段中出现 10 次的单词与在得分较低的字段中出现的唯一单词一样好

于 2013-03-19T15:59:36.140 回答