7

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

 3 years ago
source link: http://huyan.couplecoders.tech/lucene/%E6%90%9C%E7%B4%A2/%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6/2021/03/11/lucene%E7%B3%BB%E5%88%97(11)%E7%B4%A2%E5%BC%95%E6%A0%BC%E5%BC%8F%E4%B9%8Bpay%E6%96%87%E4%BB%B6/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文使用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

比较简单,罗列一下.

最后,欢迎关注我的个人公众号【 呼延十 】,会不定期更新很多后端工程师的学习笔记。 也欢迎直接公众号私信或者邮箱联系我,一定知无不言,言无不尽。 %E6%89%AB%E7%A0%81_%E6%90%9C%E7%B4%A2%E8%81%94%E5%90%88%E4%BC%A0%E6%92%AD%E6%A0%B7%E5%BC%8F-%E6%A0%87%E5%87%86%E8%89%B2%E7%89%88.png

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

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

联系邮箱:[email protected]

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




About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK