之前一直想看一下lucene range查询的底层原理, 先上网找了下相关资料, 发现非常混乱, 主要是因为lucene的范围查询曾经经历过两个不同的阶段:
阶段1: <lucene6.0版本, 用的是类似于...这次我希望把两个版本的范围查询原理都搞明白并整理成2篇博客, 以读源码为主, 参考资料为辅, 最大程度保证正确性.
这篇讲的是<lucene6.0版本的原理, 是基于trie树的....首先我们定义一下问题, 我们这里把范围查询的范围缩小到只讨论数值范围查询. 文本类型的范围查询在lucene中也是支持的, 但是算法比较简单, 这里就不讨论了...., 查找range423, 642, 按照我们之前做范围查询的方法, 应该是查询:
term(423) OR term(445) OR term(446) OR term(448) OR term(521...那必须是可以的:
SplitRange
SplitRange是这样一个算法, 他会把原来的一个粒度为1的范围查询, 分解为一组多个粒度的范围查询.