Information Retrieval --- Data Structure
一、倒排索引
1.构建
2.压缩。有损压缩:去停用词、词干还原、去数字等。
2.1无损压缩:词典压缩
a.定常数组变为当行字符串(加词项指针)
b.按块存储
c.前缀编码
2.2无损压缩:倒排记录表压缩(存docID间隔)
1.变长字节(VB)码:后7位存储,第8位记录是否结束
2.ϒ编码
3.位置信息
4.倒排记录表合并:求交集。优化:按df从小到大合并
*跳表法:加跳表指针
二、词项定位:在词典中快速找到查询。方法:哈希表;树(支持通配符查询,对词典再建索引)。
2.1轮排索引:支持m*nchen查询。基本思想:将每个通配查询旋转,使*出现在末端。
2.2 k-gram索引:支持通配符和拼写错误查询。建立k-gram到词项的倒排表用于查找词项。
三、支持拼写校正
1.编辑距离
2.k-gram
四、TopK排序
1.精确TopK加速
a.快速计算余弦(不考虑词项权重)
b.对所有文档评分后,堆法N中选K(不必排序)。
堆:二叉树的一种,每个节点上的值>子节点上的值 (Max Heap)
c.c.提前终止计算:按PageRank的g(d)值降序排列,忽略低于K中最小g(d)值的后续文档。
2.非精确TopK加速:利用文档集剪枝后集合C'的TopK代替整个文档集C的TopK。
a.索引去除:只考虑高idf的查询,只考虑包含多个查询词项的文档
b.胜表法:预先计算倒排表中权重最高的r篇文档(称胜表或高分文档)
c.提前终止遍历:预先计算权威度g(d)值,并降序排列。net-score=g(d)+cosin(q,d)。
d.影响度wft,d排序
e.簇剪枝:选根号N个先导者,对其他文档计算和它最近的先导者。在对最近的几个先导者上的追随者进行预先相似度计算。