Lucene 索引文件的生成(二十)之dvd&&dvm

本文承接文章索引文件的生成(十九)之dvm&&dvd继续介绍剩余的内容。

生成索引文件.dvd、.dvm之SortedDocValues、SortedSetDocValues

  生成索引文件.dvd、.dvm之SortedDocValues、SortedSetDocValues的流程图:

图1:

写入TermsDict信息

图2:

  在当前流程点,将存储SortedDocValues、SortedSetDocValues对应的所有域值按照字典序写入到索引文件中,在文章索引文件的生成(十八)之dvm&&dvd我们知道,在索引阶段,我们已经通过sortedValues[ ]数组收集了所有种类的域值。

  我们通过例子来介绍TermDict的数据结构如下所示:

图3:

  图3的例子中,为了便于画图,我们只介绍前4篇文档的存储详情,在文章索引文件的生成(十八)之dvm&&dvd中我们已经介绍了termId的概念,故这里不赘述,直接给出前4篇文档中SortedDocValuesField中的域值对应的termId:

域值termId
mop0
star1
of2
month3

  sortedValues[ ]数组中的数组元素为termId,并且数组元素是有序的,但是排序规则不是按照数组元素的值,即termId,而是按照termId对应的域值的字典序,故sortedValues[ ]数组如下所示:

图4:

  随后依次读取sortedValues[ ]数组中每一个termId,找到termId对应的域值,将这些域值写入到索引文件.dvd中,可见是按照域值从小到大的顺序(字典序)写入的,如下所示:

图5:

查看大图

  图5中,根据sortedValues[ ] 数组中的termId作为bytesStart[ ]数组的下标值,从bytesStart[ ]数组获取域值在buffers二维数组中的起始位置,最后在buffers二维数组中获取到在索引期间存储的域值,其中bytesStart[ ]数组、buffers二维数组的介绍见文章ByteRefHash,在那篇文章中,sortedValues[ ]数组即排序后的ids[]数组。

 

剩余内容看这里:https://www.amazingkoala.com.cn/Lucene/Index/2020/0602/146.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值