了解Solr Doc =

Ada*_*dam 3 lucene solr relevance solr5

我有两个索引文件,我试图弄清为什么一个索引高于另一个索引的相关性。所以我跑DebugQuery=True了以获得解释。以下是两个文档中的相关区别。

两种不同类型的文件

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

<arr name="filter_queries">
    <str>moduleid_s:(1 OR 2)</str>
</arr>
Run Code Online (Sandbox Code Playgroud)

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

有关的说明差异:

文档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) 
Run Code Online (Sandbox Code Playgroud)

文档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) 
Run Code Online (Sandbox Code Playgroud)

概要与问题

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

使用资源

fem*_*gon 5

该号码是医生。它唯一地标识要从索引中检索的文档。它与计分绝对无关。

真正的得分差异在于fieldnorm:

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

fieldNorm是基于两个数字计算的。索引文档时对字段的增强作用以及字段的长度(更精确的描述可以norm(t,d)TFIDFSimilarity docs的小节中找到

因此,要么该字段在Document 1中较短,要么在被索引时在Document 1中具有更高的提升