Solr文档评分/提升未按预期工作

时间:2015-11-03 06:53:50

标签: solrnet

我们已将solr搜索与.net项目集成,但我们面临一些与文档提升或solr评分功能相关的问题。

问题: Solr没有按照文档中的术语频率返回分数。

例如: - 我们创建了四个文件,其标题包含术语“链接”,solr返回得分如下:

1)Link ==> 6.037953
2)Link Link Link Link Link ==> 5.9249415
3)Link Link ==> 5.374235
4)Link Link Link ==> 5.2746024

任何人都可以帮助我解决solr得分或提升问题。

1 个答案:

答案 0 :(得分:1)

Solr的评分计算非常复杂。在这里,您必须从the primal equation开始:

  

得分(q,d)=坐标(q,d)·queryNorm(q)·Σ(tf(t in d)·   idf(t)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的分数高于另一个,因为fieldWeighttfidffieldNorm的乘积。对于link文档,最后一个更高,因为他只包含一个术语。

如上文所述:

  

lengthNorm - 将文档添加到索引中时计算出来的   根据文档中此字段的标记数,所以   较短的字段对分数的贡献更大。

字段中的字词越多,fieldNorm就越低。 请注意value of this field

因此,总而言之,在这里你有一个完美的组合,可以理解分数不仅仅根据频率计算,还可以计算你所在领域的术语数。