我将Solr核心转换为具有两个分片的集合,并修改了自定义搜索组件以使其适用于分布式搜索。在测试组件时,我注意到分片索引的结果与非分片(具有相同的查询参数)相匹配,各个文档的分数不同。详细说来,当我将q = X发送到分片和非分片索引时,它们都返回文档A,B,C。但是,分片核心的文档的分数为0.1,0.2,0.3而非分片的分数。核心可能有0.2,0.4,0.7。
得分差异的根本原因是什么?我不太熟悉Lucene如何评分文件,所以我想知道它值得担心。
答案 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。