1、过滤器不影响文档得分
2、过滤的唯一目的是用特定筛选条件来缩小结果范围;而查询不仅缩小结果范围,还会影响文档的得分
3、过滤器运行更加高效(因为不用计算得分)
4、通常过滤器使用Bits接口,返回DocIdSet数据结构,通过二进制进行位运算
5、不是所有的过滤器都是用Bits结构,如数值区间过滤器、脚本过滤器、地理位置过滤器
6、与或非过滤器不使用Bits
7、布尔过滤器使用Bits,尽可能使用布尔过滤器。
8、过滤结构不依赖于查询,可以将过滤结果轻易缓存起来供后续查询使用。但不是所有的过滤器都可以被缓存。如依赖于当前时间的过滤器,对他们做缓存没有任何意义;对于可能存在非常多的唯一值,缓存命中率极低,如地理位置,此类也没有必要做缓存。(翻译成白话,需要缓存的是:查询结果很多,过滤后结果很少,可以缓存;而查询结果很少,则不需要做缓存)
9、尽量先执行过滤,再执行查询,让查询结算得分的文档数量先降下来
10、尽量远离后置过滤器