【问题标题】:Does a larger tf always boost a documents score in Lucene?较大的 tf 是否总是会提高 Lucene 中的文档分数?
【发布时间】:2012-03-07 21:42:40
【问题描述】:

我了解默认词频 (tf) 只是简单地计算为被搜索的特定词出现在字段中的次数的 sqrt。因此,包含您正在搜索的术语多次出现的文档将具有更高的 tf 并因此具有更高的权重。

我不确定的是,这是否有助于增加文档得分,因为权重更高,或者 降低文档得分,因为它将文档向量从查询向量,正如《Hibernate Search in Action》一书所说(第 363 页)。我承认我真的很难理解文档向量模型如何与 lucene 评分方程相匹配

【问题讨论】:

    标签: lucene cosine-similarity


    【解决方案1】:

    我没有这本书要检查,但基本上(如果我们忽略可以在索引时手动设置的不同提升),某些文档的分数可能高于(或低于)的三个原因使用 Lucene 的默认评分模型和给定查询的其他文档的分数:

    • 查询词的文档频率较低(提高了分数的IDF 部分),
    • 查询词在文档中出现的次数很多(提高了TF 部分的得分),
    • 查询的词出现在文档的一个相当小的字段中(提高了分数的norm 部分)。

    这意味着对于两个文档 D1 和 D2 以及一个查询词 T,如果

    • T 在 D1 中出现 n 次,
    • T 在 D2 中出现 p > n 次,
    • D2 的查询字段具有(几乎)与 D1 相同的大小(术语数),

    D2 的分数会比 D1 高。

    【讨论】:

    • 谢谢我原来是这么理解的,但是我还需要一点,这个评分怎么适合我看不到的向量空间模型。
    • Lucene 并不严格使用 VSM,而是 VSM 和布尔模型的结合。但是,对于析取查询,VSM 适用。维基百科有一篇非常好的文章解释了 TF-IDF 评分如何应用于 VSM en.wikipedia.org/wiki/…
    • 对不起,我已经阅读了几次链接,但我仍然不明白它如何与 Lucene 方程相匹配。我知道 Lucene 使用布尔模型来清除不匹配任何术语的文档,但是当它将文档向量与查询向量进行比较时看不到它似乎只是为每个匹配项执行 tfidfnorm与查询匹配并获得最高分的文档。当我试图实现这个版本时,你能否就析取查询展开你的观点。
    • 这不正确,它为每个匹配的文档计算 tfidfnorm 然后返回总和(这是一种简化,仅当所有查询项不同时才为真,但无论如何,这不是查询中每个术语的最大值)作为最终分数。我关于析取查询(由 OR 分隔的术语)的观点是,这是 Lucene 最接近 VSM 的时候。您需要了解的关于 Lucene 评分的所有信息都在相似度文档 lucene.apache.org/core/old_versioned_docs/versions/3_5_0/api/…
    猜你喜欢
    • 2021-02-20
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2017-03-01
    • 2017-03-07
    • 2021-06-25
    • 2013-01-03
    相关资源
    最近更新 更多