【问题标题】:Solr document Scoring/Boosting not working as expectedSolr 文档评分/提升未按预期工作
【发布时间】:2015-11-04 00:58:46
【问题描述】:

我们已将 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评分或提升问题。

【问题讨论】:

    标签: solrnet


    【解决方案1】:

    Solr 的评分计算非常复杂。在这里,你必须以the primal equation开头:

    score(q,d) = coord(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 - 当文档被添加到索引时计算 根据文档中该字段的token数量,所以 较短的字段对分数的贡献更大。

    字段中的术语越多,fieldNorm 就越低。 小心value of this field

    因此,总而言之,在这里您可以完美地理解分数不仅根据频率计算,而且还根据您所在领域的术语数计算。

    【讨论】:

    • 您对如何在 solr 5.2.1 中检索多个单词的词频有任何想法。例如,使用 termfreq(Field, 'searchterm') 函数我只获得完全匹配的频率。但不适用于单引号内的每个单词。
    • 感谢您的帮助,但我担心 solr 返回的分数令人困惑,请参阅 2)Link Link Link Link Link ==> 5.9249415 与其他人相比应该是最低的分数。你有什么想法关于如何在 solr 5.2.1 中检索多个单词的词频。例如,使用 termfreq(Field, 'searchterm') 函数我只获得完全匹配的频率。但不适用于单引号内的每个单词。
    • 正如我所说,对于Link Link Link Link LinkfieldNorm 的值较低,tf 的值较高,因此要获得顺序,您必须混合这两个系数!跨度>
    • 对于另一个问题,我认为不创建自定义函数是不可能的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 2023-03-28
    • 2023-03-14
    相关资源
    最近更新 更多