假设我查询条件有两个: x AND y。 那么根据Lucene倒排索引查询的过程,先从字典中找出x,然后得到第一个条件的posting lsit;再从字典找出y,得到第二个条件的posting list;最后用两个posting list 做交集得到共同的部分。
那么如果我按照第一个条件得到posting list,再用第二个条件从posting list 过滤,其实也是能实现这个效果的,而且还能减少两个集合的运算。 因为我觉得两个posting list 做聚合运算也挺耗时而且比较大的时候挺吃内存的,等于我第一个list中每个文档id要去第二个list中对比,而且这个过程发生在内存。
但是倒排索引既然没有这么做一定有它的道理,想问下大神们这块倒排索引究竟是如何处理的呢
那么如果我按照第一个条件得到posting list,再用第二个条件从posting list 过滤,其实也是能实现这个效果的,而且还能减少两个集合的运算。 因为我觉得两个posting list 做聚合运算也挺耗时而且比较大的时候挺吃内存的,等于我第一个list中每个文档id要去第二个list中对比,而且这个过程发生在内存。
但是倒排索引既然没有这么做一定有它的道理,想问下大神们这块倒排索引究竟是如何处理的呢
1 个回复
strglee
赞同来自: code4j