为什么Lucene/Solr scorer对OR子句的权重进行求和。这是不平衡的查询评分对有更多的选择的术语。让查询词替代项的权重达到最大值不是更有意义吗?
下面是一个示例:
我在solr管理界面中运行: gucci (手提包、钱包或皮夹)
通过单击debug,我可以看到解析后的查询与预期一致:
"parsedquery":"text:gucci (text:handbag text:purse text:pocketbook)"
explain字段显示记分器正在进行(我在这里稍微简化一下):
weight(gucci) + sum( weight(handbag) + weight(purse) + weight(pocketbook))
结果是,包含手袋、钱包和钱包的结果将比包含gucci和手袋的结果具有更高的分数。我认为这是违反直觉的。对我来说,OR意味着这些术语是等价的,而不是它们更重要。此外,我可以使用查询词提升来独立完成这项工作。
我用Edismax做了实验,它有类似的行为。
有没有一种方法可以让OR子句保留查询术语“重要性”?
发布于 2013-03-19 15:59:36
您可以尝试使用DisjunctionMaxQuery
,并为析取设置不同的提升因子。看一下tieBreakMultiplier
构造函数参数-它可以帮助实现您想要的结果。引用文档:
tieBreakerMultiplier <..> value <..>表示,得分较低的字段中出现的10个单词与得分较低的字段
中的唯一单词一样好
https://stackoverflow.com/questions/15504198
复制相似问题