Solr的评分计算非常复杂。在这里,你必须首先the primal equation:
得分(Q,d)=坐标(Q,d)·queryNorm(Q)·Σ(TF(吨d)· IDF(吨)2· t.getBoost()·norm(t,d))
您有tf
参数,它代表术语频率,它的值是该术语频率的平方根。
您还有norm
(又名fieldNorm
)它用于fieldWeight
计算。让我们把你的例子:
链接链接链接链接链接
你的分数将被计算像(你可以通过添加debugQuery
参数请参阅本):
5.9249415 = fieldWeight, product of:
2.236068 = tf(freq=5.0), with freq of:
5.0 = termFreq=5.0
idf (wich will be the same for all your scores)
0.4375 = fieldNorm(doc=177)
链接
6.037953= fieldWeight, product of:
1.0 = tf(freq=1.0), with freq of:
1.0 = termFreq=1.0
idf (wich will be the same for all your scores)
1.0 = fieldNorm
这里,link
比另一个有更好的分数,因为fieldWeight
是tf
,idf
和fieldNorm
的乘积。这最后一个是link
文件更高,因为他只包含一个术语。
如上文档表示:
lengthNorm - 当文档被添加到索引中 根据所述文档在此字段中的令牌的数目 较短字段到贡献更多计算,所以得分了。
您在一个字段中使用的术语越多,fieldNorm
就会越少。 请注意value of this field。
因此,总结一下,在这里你有一个完美的组合,要明白得分不是只用频率计算,而是用你在现场的术语数来计算。
关于如何检索solr 5.2.1中多个单词的词频,你有什么想法吗?例如使用termfreq(Field,'searchterm')函数,我只得到精确匹配的频率。但不是单引号内的每个单词。 –
感谢您的帮助,但我关心的是solr返回分数,这是混乱,请参阅2)链接链接链接链接链接==> 5.9249415得分应该是最低的比较别人。您有任何想法如何检索词频solr 5.2.1中的多个单词。例如使用termfreq(Field,'searchterm')函数,我只得到精确匹配的频率。但不是单引号内的每个单词。 –
正如我所说的,对于'Link Link Link Link Link',你有一个较低的'fieldNorm',但是一个更高的'tf',所以要有顺序,你必须在这两个系数之间进行混合! – alexf