倒排索引
term记录所有关联记录,所有的term也是有序的,通过二分查找可以找到记录。
eg:
中国(term1)-> "我是中国人(doc1)" "中国和平崛起(doc2)"
澳大利亚(term2)->"澳大利亚是一个没有节操的国家(doc1)" "昂撒先锋狗-澳大利亚(doc2)"
检索过程简单还原
1.通过TermIndex快速检索出,具体的term的在termDictionary中的位置
termIndex可以简单理解成B+树,叶子节点是具体的term(不包含所有的term),非叶子节点就是前缀。
2.通过term再去定位具体的term和对应posting List(就是docId的集合)
附一张经典图片
倒排索引的存储
手段一、postionList里面的documntId都是有序排列的,通过一些方式把数字变小
比如 1 2 5 8 10,改成1 1 3 3 2,大数变小数 存增量
手段二、用0/1替换原来的位置上数字是否存在
比如 13578可以用 1010101100表示【十个一组的话】
手段三、固定量的数字分成一组,一般是65535个
每组里面初始的都是0-65534,每组还原的时候 * 商
推荐一个超赞的文赞