开始
节点
是否为叶子节点?
选出叶子节点的排序维度
选出切分维度
内部节点的排序
设置splitPackedValues数组
第一次更新parentSplits数组
设置左子树的准备数据
设置右子树的准备数据
处理左子树
处理右子树
第二次更新parentSplits数组
叶子节点的排序
更新leafBlockFPs数组
写入文档号信息到索引文件.dim中
写入相同前缀信息到索引文件.dim中
写入不同后缀信息到索引文件.dim中
返回
处理叶子节点
处理内部节点
当前节点是否
为根节点?
结束
是
是
否
否
构建BKD树的节点值(node value)流程图
维度值大于等于2(Lucene 7.5.0)
开始
节点
节点内的点数据排序
是否还有未处理
的点数据?
写入文档号信息到索引文件.kdd中
写入相同前缀信息到索引文件.kdd中
写入不同后缀信息到索引文件.kdd中
统计leafCardinality
以及其他一些信息
结束
是否生成
一个叶子节点?
否
是
否
是
构建BKD树的节点值(node value)流程图
维度值等于1(Lucene 8.7.0)
更新leafBlockFPs数组