Lucene系列(11)索引格式之pay文件

Posted1 by 呼延十 on March 11, 2021 Hot:
本文使用Lucene代码版本: 8.7.0

前言

本文学习一下.pay文件的格式与内容。

pos文件中存储了每个term对应的payload信息,还有offset信息.

可以发现, 从文件内容,及文件复杂度上来讲.

doc > pos > pay.

  • doc: doc文件中存储了term的所有docId及词频。此外还存储了跳跃信息,跳跃信息不仅帮助读取docId及词频,还记录了对应的pos/pay文件的文件位置,也可以辅助进行快速读取.
  • pos: pos文件存储了term在doc中的位置信息,但是在最后一个变长int块中,帮pay文件存储了部分内容.
  • pay: 比较单纯的记录整块的payload/offset信息.

.pay文件整体结构

2021-03-11-22-20-38

其中的字段解释:

  • IndexHeader: 索引头
  • Term: 一个term的位置信息
  • Footer: 索引尾.

  • PackedIntBlock 一整个块(128个Doc)的payload/offset信息.

  • payloadData: 有效载荷相关信息.
  • offsetDate: 偏移量相关信息.

  • payloadLength: payload的长度.
  • payloadSumLength: payload的总数量.
  • payloadValue: payload具体的字节信息.
  • offsetStartDelta: term在doc中的偏移信息,采用增量编码.
  • offsetLength: 偏移长度信息

相关写入代码分析

初始化

同样在构造函数中. org.apache.lucene.codecs.lucene84.Lucene84PostingsWriter#Lucene84PostingsWriter.

2021-03-11-22-18-15

PackedIntBlock写入

整块的写入在: org.apache.lucene.codecs.lucene84.Lucene84PostingsWriter#addPosition

2021-03-11-22-19-31

结语

比较简单,罗列一下.


完。


联系我

最后,欢迎关注我的个人公众号【 呼延十 】,会不定期更新很多后端工程师的学习笔记。 也欢迎直接公众号私信或者邮箱联系我,一定知无不言,言无不尽。



以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com

更多学习笔记见个人博客或关注微信公众号 <呼延十 >——>呼延十