Apache Solr - 为什么分片索引的结果分数与非分片索引的分数不同?

时间:2014-02-27 16:49:45

标签: java solr lucene

我将Solr核心转换为具有两个分片的集合,并修改了自定义搜索组件以使其适用于分布式搜索。在测试组件时,我注意到分片索引的结果与非分片(具有相同的查询参数)相匹配,各个文档的分数不同。详细说来,当我将q = X发送到分片和非分片索引时,它们都返回文档A,B,C。但是,分片核心的文档的分数为0.1,0.2,0.3而非分片的分数。核心可能有0.2,0.4,0.7。

得分差异的根本原因是什么?我不太熟悉Lucene如何评分文件,所以我想知道它值得担心。

1 个答案:

答案 0 :(得分:2)

Lucene因此Solr使用了Vector Space Model。因此,逆文档频率(IDF)是相关性计算中的一个因素。

当涉及到分片时,这会产生影响。正如in the docs

所写
  

Solr不计算通用术语/ doc频率。对于大多数大规模实现,Solr在分片级别计算TD / IDF并不重要。但是,如果您的收藏在服务器上的分布严重偏差,您可能会在搜索中发现误导性的相关性结果。通常,最好将文档随机分发到您的分片。

目前没有共享IDF。这意味着每个分片(索引)根据其自己的索引中的IDF计算分数。简而言之,文档的分数受到在同一分片上索引的其他文档的影响。由于在每个分片中包含不同的文档是合理的,这意味着不同分片中的同一文档的分数会略有不同,因为它周围有其他文档。

我正在编写Currently there is no shared IDF,因为正在进行创建分布式IDF的工作 - 您可以看到in SOLR-1632