第七章 一个完整搜索系统中的评分计算
7.1 快速评分及排序
之前我们讲的都是给定查询后,精确返回前K篇得分最高的文档的方法。这里,我们主要关注产生“可能”排名最高的K篇文档的方法。这样的目的在于,显著降低输出前K篇文档所需要的计算复杂度。
计算前K篇得分最高文档的主要开销来源于大量文档都参与的余弦相似度计算,下面介绍一些非精确返回前K篇文档的一系列启发式策略。
非精确返回前K篇文档的方法:
- 索引去除技术: 只考虑那些词项的idf值超过一定阈值的文档。
- 胜者表:
对于词典中的每个词项t,预先计算出r个最高权重的文档(其中r值需要事先给定)。例如对于tf-idf来说,词项t所对应的tf值最高的r篇文档构成t的胜者表。
给定查询q,对查询q中所有词项的胜者表求并集,并生成集合A。只有A中的文档才可以参加最后的余弦相似度运算。 - 静态得分和排序:
很多搜索引擎中,每篇文档d往往都有一个与查询无关的**静态得分**g(d),该得分取值往往在0到1之间。例如,对于Web上的新闻报道,g(d)可以用用户正面评价次数来定义。
一篇文档d的最后得分可以定义为g(d)和查询相关得分的某种组合。如score(q,d)=