我有两个索引文档,我试图找出为什么一个比另一个高的相关性。为了得到解释,我运行了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
。有人能解释一下这个数字是什么吗?它从何而来?为什么不同呢?
资源使用
- http://blog.thedigitalgroup.com/dattatrayap/2015/06/12/understanding-solr-explain/
- http://www.openjems.com/solr-lucene-score-tutorial/
- http://explain.solr.pl/
这个数字就是文档。它唯一标识要从索引中检索的文档。这和得分完全没有关系。
真正的得分差异在字段规范中:
- 文件1:
0.5 = fieldNorm
- 文件2:
0.21875 = fieldNorm
fieldNorm是根据两个数字计算的。索引文档时对字段的增强,以及字段的长度(更精确的描述可以在TFIDFSimilarity文档中的norm(t,d)
章节中找到)
所以,要么这个字段在文档1中短,要么它在文档1中被索引时被赋予更高的boost。