2015-11-03 45 views
0

我们已经将.net项目与solr搜索集成在一起,但是我们正面临着与solr的文档提升或评分功能相关的一些问题。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

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比另一个有更好的分数,因为fieldWeighttf,idffieldNorm的乘积。这最后一个是link文件更高,因为他只包含一个术语。

如上文档表示:

lengthNorm - 当文档被添加到索引中 根据所述文档在此字段中的令牌的数目 较短字段到贡献更多计算,所以得分了。

您在一个字段中使用的术语越多,fieldNorm就会越少。 请注意value of this field

因此,总结一下,在这里你有一个完美的组合,要明白得分不是只用频率计算,而是用你在现场的术语数来计算。

+0

关于如何检索solr 5.2.1中多个单词的词频,你有什么想法吗?例如使用termfreq(Field,'searchterm')函数,我只得到精确匹配的频率。但不是单引号内的每个单词。 –

+0

感谢您的帮助,但我关心的是solr返回分数,这是混乱,请参阅2)链接链接链接链接链接==> 5.9249415得分应该是最低的比较别人。您有任何想法如何检索词频solr 5.2.1中的多个单词。例如使用termfreq(Field,'searchterm')函数,我只得到精确匹配的频率。但不是单引号内的每个单词。 –

+0

正如我所说的,对于'Link Link Link Link Link',你有一个较低的'fieldNorm',但是一个更高的'tf',所以要有顺序,你必须在这两个系数之间进行混合! – alexf