3

我有两个索引文档,我试图找出其中一个高于另一个的相关性。所以我跑去DebugQuery=True寻求解释。以下是两个文件的相关差异。

两种不同类型的文件

它可能是相关的;这些文档有两种不同的类型,我使用 *_s 字段来区分它们。所以我的字段 module_s 有两个模块 1 和 2。我的查询有:

<arr name="filter_queries">
    <str>moduleid_s:(1 OR 2)</str>
</arr>

所以我认为这不会引起问题,但我想添加此信息。

相关解释差异:

文档 1 - 模块类型 = 1

result of: 1.7325882 = score(doc=3513280,freq=1.0), 
    product of: 0.44456035 = queryWeight, 
    product of: 0.5 = boost 7.7946143 = idf(docFreq=5286,maxDocs=4721423) 0.1140686 = queryNorm 3.8973072 = fieldWeight in 3513280, 
    product of: 1.0 = tf(freq=1.0), with freq of: 1.0 = termFreq=1.0 7.7946143 = idf(docFreq=5286, maxDocs=4721423) 0.5 = fieldNorm(doc=3513280) 

文档 2 - 模块类型 = 2

result of: 0.75800735 = score(doc=174,freq=1.0), 
        product of: 0.44456035 = queryWeight, 
        product of: 0.5 = boost 7.7946143 = idf(docFreq=5286,maxDocs=4721423) 0.1140686 = queryNorm 1.7050719 = fieldWeight in 174, 
        product of: 1.0 = tf(freq=1.0), with freq of: 1.0 = termFreq=1.0 7.7946143 = idf(docFreq=5286, maxDocs=4721423) 0.21875 = fieldNorm(doc=174) 

概要和问题

如您所见,解释几乎相同。它们都具有相同的 queryWeight、boost、idf 和 queryNorm。不同的是,doc=XXX。对于文档 1 它是351328,文档 2 它是174. 有人能解释一下这个数字是什么吗?它来自哪里?为什么它与众不同?

使用的资源

4

1 回答 1

5

这个数字是 docid。它唯一地标识要从索引中检索的文档。这与得分完全无关。

真正的得分差异在于 fieldnorm:

  • 文件 1: 0.5 = fieldNorm
  • 文件 2: 0.21875 = fieldNorm

fieldNorm 是根据两个数字计算得出的。索引文档时对字段的提升,以及字段的长度(更精确的描述可以在norm(t,d)TFIDFSimilarity文档中的部分找到)

因此,要么该字段在 Document 1 中较短,要么在 Document 1 中被索引时获得了更高的提升。

于 2015-09-10T20:07:51.160 回答