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

2021-03-15 11:09:07 浏览数 (1)

本文使用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文件整体结构

其中的字段解释:

  • 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.

PackedIntBlock写入

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

结语

比较简单,罗列一下.

完。

联系我

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

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

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

联系邮箱:huyanshi2580@gmail.com

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

0 人点赞