Lucene分数结果
在Lucene中,如果你有多个索引每个只覆盖一个分区。 为什么不同索引上的相同search返回不同分数的结果? 来自不同服务器的结果完全匹配。
即如果我search:
- 名字 – 约翰·史密斯
- 出生date – 11/11/1934
分区0将返回0.345的分数
分区1将返回0.337的分数
两者都完全匹配名称和DOB。
评分包含逆文档频率(IDF)。 如果术语“John Smith”位于一个分区中,则为0,100次,在分区1中为一次。 search约翰·史密斯的分数将在分区1中更高的search,因为该术语更为稀缺。
为了解决这个问题,你必须让你的索引覆盖所有分区,否则你需要重写IDF。
因为如果我没有完全弄错的话,那么这个分数就是根据指数来确定的。
如果您有不同的索引(更多/更less或索引不同的数据),分数将会有所不同:
http://lucene.apache.org/core/3_6_0/scoring.html
(警告:包含math:-))
您也可能对explain()
方法的输出以及由此产生的Explanation
对象感兴趣,这个对象可以让你了解事物是如何被评分的。