lucene范围查询
lucene 范围查询
- NumericRangeQuery
索引时,将数值按位切分为多个不同步长(不同精度)的域,不同步长的域分别建索引,查询时,也将查询的范围值按照多个步长划分到不同步长的域上查询,这样能减少查询的term的数量。 - FieldCacheRangeFilter
使用lucene的FieldCache,即将字段值用大数组缓存起来,数组下标是docid,值是字段值,查询时,进行过滤。该方式一般情况下比NumericRangeQuery快(在其他查询条件命中数较少时,即过滤次数少时,比NumericRangeQuery要快),但会占用很大的内存。如果该字段还负责按值排序的需求,则可考虑这种方式,因为排序也需要值缓存,在上面进行范围查询就没有带来额外的开销了。 - 范围查询优化
结合以上两种方式的优缺点,可以考虑一种改进的办法:将NumericRangeQuery的低精度的term缓存起来,而高精度的term实时查询,然后构造Filter,过滤出范围内的记录。
相关推荐
renjinlong 2020-09-03
Jacry 2020-07-04
IceStreamLab 2020-06-26
mengyue 2020-06-09
PasserbyX 2020-05-16
mameng 2020-05-12
心丨悦 2020-05-06
编码之路 2020-05-03
mengyue 2020-05-02
qiuzhuoxian 2020-02-23
编码之路 2020-02-20
lionelf 2020-02-03
TyCoding 2020-02-01
heniancheng 2020-01-31
某某某 2020-01-30
PinkBean 2020-01-29
某某某 2020-01-12
编码之路 2020-01-01
itmale 2020-01-01