在前几篇索引文件的读取的系列文章中,我们介绍索引文件tim&&tip的读取时机点时说到,在生成StandardDirectoryReader对象期间,会生成SegmentReader对象,该对象中的FieldsProducer信息描述了索引文件tim&&tip索引文件doc索引文件pos&&pay中所有域的索引信息,故我们从本篇文章开始介绍索引文件.doc、.pos、.pay的读取。

索引文件.doc的数据结构(Lucene 8.4.0)

  在文章索引文件的生成(三)之跳表SkipList索引文件的生成(四)之跳表SkipList中,我们基于Lucene 7.5.0介绍了跳表的数据结构,然而从Lucene 8.0.0开始,对跳表的数据的结构进行了调整,即对索引文件.doc的数据结构进行了调整,故在介绍索引文件.doc、.pos、.pay的读取之前,我们先介绍下调整目的以及调整后的数据结构。

为什么要调整

  本文仅仅给出两个链接,它们分别介绍了在elasticSearch跟Lucene两个层面的调整初衷,感兴趣的同学可以自行查阅。当然在随后的内容中也会提及这两篇文章中介绍的部分内容:

调整后的数据结构

  我们先直接给出两个版本的索引文件.doc的数据结构:

图1:

Lucene 索引文件的读取(十二)之doc&&pos&&pay

点击查看大图

图2:

Lucene 索引文件的读取(十二)之doc&&pos&&pay

点击查看大图

  比较图1跟图2的区别可以看出,Lucene 8.4.0中所有level的SkipDatum字段都增加了Impacts跟ImpactLength两个字段,其中ImpactLength字段用于描述Impacts字段的长度,使得在读取阶段,能通过ImpactLength确定Impacts字段的信息在索引文件.doc中的读取区间。

看这里:https://www.amazingkoala.com.cn/Lucene/Search/2020/0904/165.html

相关文章:

  • 2021-06-06
  • 2021-07-27
  • 2021-12-15
  • 2021-08-24
  • 2021-10-29
  • 2021-09-27
  • 2022-12-23
  • 2021-08-19
猜你喜欢
  • 2021-04-16
  • 2021-12-23
  • 2021-10-20
  • 2021-09-20
  • 2021-12-19
  • 2021-06-02
  • 2021-11-26
相关资源
相似解决方案