信息检索导论:第一章 布尔检索 学习笔记

倒排索引

名称上看,“倒排”二字显然有些多余,因为一般提到的索引都是从词项(item)反向映射到文档的。但是倒排索引已成为信息检索中的一个标准术语。

构建倒排索引

(1)收集需要建立索引的文档
(2)将每篇文档换成一个个词条列表,此过程称为词条化
(3)进行语言学预处理,产生归一化的词条来作为词项
(4)对所有文档按照其中出现的词项来建立倒排索引,索引中包含一部词典和一个全体倒排记录表

布尔查询

考虑“与”操作,Brutus AND caesar AND Calpurnia。

一般思路:

我们首先在词典中定位三个关键词,返回其倒排记录表,然后求其交集。

查询优化:

        思考1

        我们可以按照词项的文档频率,从小到大依次处理,也就是每次求最短的倒排记录的交集,这样可以减少很多操作。这也是我们第一次用到了词项的文档频率,这也给出了在词典中保存文档频率的一个充分理由,即它可以在访问之前用于决定倒排记录表的访问顺序。

       思考2

       这样就会涉及到中间结果的概念,中间结果是临时保存中间表达式的结果,而倒排记录表往往是存储在磁盘上的。中间结果往往比与之相比较的倒排记录表的长度相差一个甚至多个数量级,这种情况下,我们可以通过在长倒排记录表中对中间结果表中的每个元素进行二分查找,也可以实现合并(求交集)。另一种方法,是将长倒排记录表用哈希方式存储,这样对中间结果的每个元素,就可以通过常数时间而不是线性时间或者对数时间实现查找。
        上述策略很难适应于第5章所讨论的压缩后的倒排记录表中,另外,如果查询中的两个词项都是常见词时,那么还是有必要采用标准的倒排记录表合并方法。

        思考3

       通过分配律将查询式写成析取范式,也能提高查询速度。

你可能感兴趣的:(信息检索)