在Lucene中,如果您有多个索引,每个索引只覆盖一个分区。 为什么不同索引上的相同搜索会返回不同分数的结果? 不同服务器的结果完全匹配。

即如果我搜索:

  • 姓名 - 约翰史密斯
  • DOB - 11/11/1934

分区0将返回0.345的分数

分区1将返回0.337的分数

两者都完全匹配名称和DOB。

===============>>#1 票数:19

评分包含反向文档频率(IDF)。 如果术语“John Smith”在一个分区中,0,100次,在分区1中,一次。 搜索John Smith的分数在分区1中将是更高的搜索,因为该术语更加稀缺。

为了解决这个问题,你必须让你的索引覆盖所有分区,否则你需要覆盖IDF。

===============>>#2 票数:13

因为如果我没有完全弄错的话,分数是根据索引确定的。

如果您有不同的索引(索引更多/更少或不同的数据),则得分会有所不同:

http://lucene.apache.org/core/3_6_0/scoring.html

(警告:包含数学:-))

===============>>#3 票数:8

您可能还会对explain()方法的输出以及生成的Explanation对象感兴趣,它会让您了解事物的得分方式。

  ask by Stephen Hendry translate from so

未解决问题?本站智能推荐: