阿里面试题解答-倒排索引

倒排索引原理?

elasticsearch 倒排索引原理 - 知乎

倒排索引就是通过值去找文件

term dictionary:如果后面的 term 比较多,例如 18 岁的有好几万人。需要提高查询效率,因此产生了 term dictionary,就是吧所有的 term 做一下排序,然后使用二分查找,logN次 访问磁盘
term index:每次访问磁盘太慢了,需要放到内存里,可以整个 term dictionary 太大了,只能放一部分。所以出现了这个 Term Index,它其实是一个 Trie 树。

最后得到下面的这样一个东西,先查 term index,然后 term dictionary,然后二分查找元素

 

如何联合索引查询?

  • 使用skip list数据结构。同时遍历gender和age的posting list,互相skip;
  • 使用bitset数据结构,对gender和age两个filter分别求出bitset,对两个bitset做AND操作。
什么是跳表(skip list)深夜学算法之SkipList:让链表飞
bitset 就是给所有的文件做一个 bit 表,然后按位与。
 
posted @ 2019-07-16 23:12  黄小豆  阅读(1001)  评论(0编辑  收藏  举报