【问题标题】:Primary/Replica Inconsistent Scoring主/副本不一致评分
【发布时间】:2015-06-19 21:13:23
【问题描述】:

我们有一个包含 3 个主分片和每个主分片 2 个副本的集群。主/副本分片的文档总数相同;但是,对于同一个查询/文档,我们得到了 3 个不同的分数。当我们添加preference = primary作为查询参数时,我们每次都会得到一致的分数。

我们能想到的唯一解释是主副本/副本之间的 DF 计数不同。主/副本分片之间的不一致在哪里,如何解决这个问题?我们使用的是 1.4.2。

编辑: 我们刚刚重新索引了我们正在查询的文档类型,但仍有仍然不一致的评分。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    在进行分段合并时,主分片和副本分片具有不同的“路径”。意思是,段的数量和大小可以在它们之间有所不同。每个共享都独立于其他分片处理自己的分段。

    为什么在计算分数时这很重要,因为合并是实际删除已删除文档的时刻。在此之前,已删除的文档仅被标记为已删除(并在查询已经运行后从查询结果中取出)。因此,这意味着它可以影响计算分数的算法。

    更具体地说 - 分片中的文档总数用于 [IDF 计算](http://lucene.apache.org/core/4_3_0/core/org/apache/lucene/search/similarities/DefaultSimilarity.html#idf(long, long)) 和文档频率 (docFreq):

    return (float)(Math.log(numDocs/(double)(docFreq+1)) + 1.0)
    

    并且这个数量的文档包括已删除(更准确地说,标记为已删除)的文档。另外,请查看 this github issue and Simon's comments 以了解同一主题。

    【讨论】:

      猜你喜欢
      • 2020-11-18
      • 2017-02-01
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      相关资源
      最近更新 更多