- 使用基于块的排序索引构建算法BSBI
- 在前几个作业基础上支持短语查询
- 实现词典和倒排索引表的压缩
短语查询可以使用带位置信息的索引表或者简单的双词索引。
这次作业我们就水一水用双词索引吧!
每两个连续的词组成词对(作为短语)来索引。 比如文本片段“Friend, Romans, Countrymen”会产生两个词对:
- friends romans
- romans countrymen
索引构建时将每个词对看成一个词项放入词典中。
查询时,将查询拆分成基于双词的布尔查询式。
例如:stanford university palo alto,处理方法:
stanford university AND university palo AND palo alto
我们把词典看成一个单一的字符串,词项用指向这个单一字符串某一位置的指针表示。
倒排记录表的压缩使用对间隔编码。
computer: 283047 283154 283159 改写为
computer: 283047 107 5
这样可以降低词存储docID的开销
然而我们用Python不知道能不能真的降低。。。。
倒排索引表的设计,倒排索引表每一项有三个部分:
- 词项(包括双词)指针
- 倒排记录:对应的文档ID
文档docID采用对间隔编码的方式进行存储
这样我们倒排索引表的格式就得到了:
指向词项的指针: docID, 与第一个的间隔,与第二个的间隔