Lucene 索引文件的读取(一)之dim&&dii

本系列的文章会通过例子来介绍索引文件的读取,本篇文章先介绍索引文件.dim&&.dii的读取,为了便于理解,请先阅读索引文件的生成(八)之dim&&dii索引文件的生成(十四)之dim&&dii的文章。

  在生成SegmentReader期间,会生成PointsReader(PointsReader为抽象类,实现的子类就是Lucene60PointsReader对象),它用来描述某个段中的点数据信息,下面先列出该对象包含的部分信息:

  • final Map<Integer,BKDReader> readers = new HashMap<>();

  在上述的Map对象中,存放的是不同域名的点数据信息,key为域的编号(FieldNumber),value为域对应的点数据信息,通过读取索引文件.dii来初始化readers对象,BKDReader中包含的主要信息如下所示:

  • numDataDims:点数据的维度数量

  • maxPointsInLeafNode:每个叶子节点中的最多包含的点数据数量

  • bytesPerDim:一个维度值占用的字节数量

  • numLeaves:叶子节点的数量

  • minPackedValue:MinPackedValue中每个维度的值都是所在维度的最小值

  • maxPackedValue:MinPackedValue中每个维度的值都是所在维度的最大值

    • minPackedValue跟maxPackedValue两者描述了BKD树中点数据的数值范围(见下文)
  • pointCount:当前域中的点数据的数量

  • docCount:包含当前域中的点数据域的文档数量。 一篇文档中可以包含多个相同域名的点数据域,但是docCount的计数为1

  • packedIndex:PackedIndex存放了非叶节点的信息

  上述的字段在索引文件.dim中的位置如下所示:

图1:

  上图中,根据索引文件.dii中的Count获得不同域名的点数据的数量,随后依次遍历每一个Field,通过下面的两个信息读取某个点数据域在索引文件.dim中的信息:

 

看这里:https://www.amazingkoala.com.cn/Lucene/Search/2020/0427/135.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值