评分和索引如何在信息检索系统中协同工作

时间:2018-06-12 17:38:03

标签: machine-learning solr lucene information-retrieval tf-idf

我对IR中的索引(反向索引)和评分(如tf-idf)有一个简要的了解。通常,如果没有索引,则预先计算tf-idf矩阵,并且为查询创建对应的tf-idf向量,然后为每个文档计算得分。

这种流程就像文档索引一样,具体来说,像apache lucene或terrier这样的库如何处理查询以评估文档的分数。

1 个答案:

答案 0 :(得分:2)

Lucene uses BM25 now,与旧的实用tf / idf评分公式相比,其斜率有所改变。

当您索引文档(将它们放入Lucene索引)时,每个字段都会被分成标记。如何发生这种情况以及被视为令牌的内容取决于该字段的定义。例如,如果您决定对空格进行标记并应用小写过滤器,则值为" Foo Bar"将存储为两个令牌foobar。如果您不应用任何标记化(或使用KeywordTokenizer)并且不应用任何过滤器,那么您将获得一个标记 - Foo Bar)。

进行查询时会发生相同的过程。发送到该字段的查询将根据该字段的规则进行标记化和过滤,因此,如果您在上面的示例中搜索fOO bAR,则查询在处理后包含两个标记:foo和{{ 1}}。

然后根据这些具有BM25公式的标记计算文档的分数。如果您查看公式,您可以看到为每个标记(q)计算得分,然后总结得到该字段的分数。

BM25 scoring formula from Wikipedia

如果您在向Solr查询后添加bar,您将获得有关如何计算得分的详细信息。