愚者求师之过,智者从师之长。

关于Lucene点值的疑问

Lucene | 作者 Charele | 发布于2022年07月24日 | 阅读数:1427

点值在ES/Lucene里面,应该是很广泛的。如果你建一个double类型的,或者date类型的字段,或者Geo地理数据。
.... ...
6.png


https://amazingkoala.com.cn/Lu ... Tree/
博客里只说了有8个叶子的情况,如果叶子数量不是2的N次方呢,可以这么分,
 但假如我有3个叶子,你怎么分呢??? 
 
已邀请:

Charele - Cisco4321

赞同来自:

111.png

222.png

 
这是里面写和读内部节点时候的代码(图上有类名)
写里面说,只要suffix > 1,我就写
读里面说,只要suffix > 0,我就读。
 
写和读的条件不一致,这会不会出现什么问题啊,
被这个困扰了几天,,,

pzw9696

赞同来自:

作者的github地址 https://github.com/LuXugang/Lucene-7.5.0 ,他的文章要结合版本来看,lucene 7、8以及8.x有些数据存储结构变化挺大的。

Charele - Cisco4321

赞同来自:

过了这么久了,代码看了最少10遍,差不多解决了所有的疑问。
代码主要在BKDWriter, BKDReader, PointValues这三个类中,,,
自己解释下,如果你也想了解点值,可能会有帮助。 
1
1111.PNG

新版Lucene里,这个节点树,肯定是非平衡的。
 
 
大神博客里只提到像8个叶子的平衡树,
至于老版本里,如果是7个叶子节点,它是怎么搞的,不去管了。

Charele - Cisco4321

赞同来自:

2 第二个疑问在于,写和读的条件不一样。
这里关于节点(内部节点和叶节点两种)信息的读写
(就是kdi文件里的东西)
 如果这里suffix == 1,会否有问题。
2222.png

 
其实是没有问题的

要回复问题请先登录注册