【问题标题】:what part of lucene score is calculated during search time?在搜索期间计算 lucene 分数的哪一部分?
【发布时间】:2011-06-21 04:33:31
【问题描述】:
  1. 我想了解 lucene 在搜索过程中的得分是多少?我看到 Lucene TermVector 包含一堆统计信息,当我搜索一个词时,如何在查询时间内计算分数?

  2. 在搜索过程中是否使用了 TermVector 及其统计信息?如果有怎么办?

【问题讨论】:

    标签: lucene


    【解决方案1】:

    Similarity 类负责对文档进行评分。

    Collector 迭代文档。它与Scorer 结合使用来分配分数并根据这些分数对文档进行排名。 Scorer 实例在特定条件下计算分数。有十几种不同类型的得分手。例如,TermScorer 按如下方式计算原始分数:

    getSimilarity().tf(f)*weightValue
    

    权重值来源于查询。如果在索引时打开规范化(以便查询之间的分数或多或少具有可比性),则在此之后应用规范化。规范化因子是预先计算和缓存的。

    【讨论】:

    • 它明显的Similarity类在进行评分,我正在寻找一个具体的细节,在搜索ex:“cats dogs”时评分是如何发生的,评分的流程是什么,如何指数信息/统计数据是否被利用?
    • Lucene 使用的公式在 Similary javadoc 页面上有详细描述,包括如何处理多词查询。如果您对所有这些机制的实现感兴趣,请查看CollectorScorer 类。一般来说,浏览 Lucene 代码是个好主意。
    • 我已经通过 lucene 代码完成了部分工作并且感到困惑,无论如何感谢您的回答。我正在寻找一些专家来帮助提供明确的答案。
    • 我认为如果您的问题更具体,答案会更清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2015-01-08
    • 2011-10-07
    • 2012-02-03
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    相关资源
    最近更新 更多