大致过程:
- 在倒排索引中查找搜索串,获取document list;
- 为每个在倒排索引中搜索到的结果,构建一个bitset;
- 遍历每个过滤条件对应的bitset,优先从最稀疏的开始搜索,查找满足所有条件的document;
- caching bitset,跟踪query;
- 如果document有新增或修改,那么cached bitset会被自动更新;
- 以后只要是有相同的filter条件的,会直接来使用这个过滤条件对应的cached bitset。
具体过程:
- 在倒排索引中查找搜索串,获取document list;
date来举例
word doc1 doc2 doc3
2017-01-01 * *
2017-02-02 * *
2017-03-03 * * *
filter:2017-02-02
到倒排索引中查找,发现2017-02-02对应的document list是doc2,doc3;
- 为每个在倒排索引中搜索到的结果,构建一个bitset,[0, 0, 0, 1, 0, 1]
使用找到的doc list,构建一个bitset,就是一个二进制的数组,数组每个元素都是0或1,用来标识一个doc对一个filter条件是否匹配,如果匹配就是1,不匹配就是0
[0, 1, 1]
doc1:不匹配这个fi