在Lucene中,如果您有多个只覆盖一个分区的索引。为什么不同索引上的相同搜索返回不同分数的结果?来自不同服务器的结果完全匹配。Lucene评分结果
也就是说,如果我搜寻:
- 名称 - 约翰·史密斯
- DOB - 1934年11月11日
分区0会返回一个分值的0.345
分区1将返回0.337分数
两者都完全匹配名称和DOB。
在Lucene中,如果您有多个只覆盖一个分区的索引。为什么不同索引上的相同搜索返回不同分数的结果?来自不同服务器的结果完全匹配。Lucene评分结果
也就是说,如果我搜寻:
分区0会返回一个分值的0.345
分区1将返回0.337分数
两者都完全匹配名称和DOB。
scoring包含逆文档频率(IDF)。如果术语“John Smith”位于一个分区中,则为0,100次,并且在分区1中为一次。搜索John Smith的分数将在分区1中搜索得更高,因为这个词更加稀缺。
为了解决这个问题,您不得不让索引覆盖所有分区,否则您需要重写IDF。
因为如果我没有完全弄错,评分是根据指数确定的。
如果你有不同的索引(这是收录更多/更少或不同的数据),得分会有所不同:
http://lucene.apache.org/core/3_6_0/scoring.html
(警告:含有数学:-))
已更新的链接: http://lucene.apache.org/java/2_4_0/scoring.html – 2009-07-17 15:24:43
您可能也对explain()
method的输出结果以及由此产生的Explanation
object感兴趣,这会让你了解事物如何按照它们的方式进行评分。
或者你可以从所有指标构建一个多分析器。 – 2009-10-14 18:00:59