没有合适的资源?快使用搜索试试~ 我知道了~
luxugang#Lucene-7.5.0#索引文件的生成(十)1
需积分: 0 0 下载量 164 浏览量
2022-07-25
14:35:05
上传
评论
收藏 9KB MD 举报
温馨提示
试读
介绍上述公式之前我们先说下维度编号的概念:图10中,每个点数据有三个维度,对于代码的第49行,维度值3的维度编号是0,维度值5的维度编号是1,维度值12的维度编
资源推荐
资源详情
资源评论
# [索引文件的生成(十)](https://www.amazingkoala.com.cn/Lucene/Index/)(Lucene 8.4.0)
本文承接[索引文件的生成(九)](https://www.amazingkoala.com.cn/Lucene/Index/2020/0406/129.html),继续介绍剩余的内容,下面先给出生成索引文件.dim&&.dii的流程图:
图1:
在上一篇文章中,我们介绍了流程点`执行处理前的初始化的工作`,在这个流程中涉及到的一些信息贯穿整个流程,请务必先行阅读,**例如一些变量名如果没有展开说明,说明已经在上一篇文章中介绍**。
## 构建BKD树的节点值(node value)
先给出该流程点的流程图:
图2:
图2的流程中,描述的是处理一个节点的流程,该节点如果是内部节点(非叶节点),那么就划分出左右子树,即左右两个节点,随后递归处理,是一个深度遍历的过程。
### 节点
图3:
流程图的准备数据为一个节点,该节点可能是叶子节点或者内部节点,在生成BKD树的开始阶段,该节点为根节点。
### 是否为叶子节点?
图4:
在文章[索引文件的生成(九)之dim&&dii](https://www.amazingkoala.com.cn/Lucene/Index/2020/0406/129.html)中我们说到,在构建BKD树之前,我们已经能提前计算出BKD树中内部节点以及叶子节点的数量 numleaves,并且为每个节点都赋予了一个节点编号,如下图所示:
图5:
**如何判断当前节点是不是叶子节点**:
源码中通过判断当前节点编号是否小于最左叶子节点的编号,如果满足,说明当前节点是内部节点,否则就是叶子节点,而最左叶子节点的编号正是numleaves(满二叉树的性质)。
### 选出切分维度
图6:
在当前流程点,我们需要`选出切分维度`,使得在后面的流程中根据该维度值进行左右子树的划分,规则如下:
- 条件一:先计算出切分次数最多的那个维度(根据parentSplits数组),切分次数记为maxNumSplits,如果有一个维度的切分次数小于 (maxNumSplits / 2) ,并且该维度中的最大跟(maxPackedValue)最小值(minPackedValue)不相同,那么令该维度为切分维度
- 条件二:计
点击阅读更多
资源评论
yiyi分析亲密关系
- 粉丝: 22
- 资源: 321
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功