【问题标题】:Apache Solr - why result scores from a sharded index are different from a non-sharded one?Apache Solr - 为什么分片索引的结果分数与非分片索引不同?
【发布时间】:2014-02-27 16:49:44
【问题描述】:

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

分数差异的根本原因是什么?我不太熟悉 Lucene 如何准确地对文档进行评分,所以我想知道是否值得担心。

【问题讨论】:

    标签: java solr lucene


    【解决方案1】:

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

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

    Solr 不计算通用术语/文档频率。对于大多数大规模实施,Solr 在分片级别计算 TD/IDF 可能并不重要。但是,如果您的集合在服务器之间的分布严重倾斜,您可能会在搜索中发现误导性的相关性结果。一般来说,最好将文档随机分布到您的分片中。

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

    我写Currently there is no shared IDF,因为创建分布式 IDF 的工作正在进行中 - 如您所见 in SOLR-1632

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-28
      • 2011-08-16
      • 2019-03-11
      • 2018-09-03
      • 2016-07-28
      • 2018-04-10
      • 1970-01-01
      • 2023-02-02
      相关资源
      最近更新 更多