Lucene系列(20)索引格式之kdd文件

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

前言

本文学习kdi文件格式.

他又是经典三个文件中的存储数据的文件.

.kdd 文件整体结构

2021-04-13-13-01-31

字段解释:

  • LeafNodeData:一个叶子节点的所有数据

  • DocIds: 这个叶子节点上的点对应的所有DocIds
  • PackedValue: 这个叶子节点上的所有点的实际值

  • Count: docId的数量
  • DocIds: 这个叶子节点上的点对应的所有DocIds

  • CommonPrefix: 所有值的公共前缀
  • PackedValue: 这个叶子节点上的所有点的实际值

相关写入代码分析

除了Header及Footer等内容,其他写入都在org.apache.lucene.util.bkd.BKDWriter.build(int, int, org.apache.lucene.util.bkd.BKDRadixSelector.PathSlice, org.apache.lucene.store.IndexOutput, org.apache.lucene.util.bkd.BKDRadixSelector, byte[], byte[], int[], byte[], byte[], long[], int[]) 方法中,具体逻辑很长就不贴代码了。

该方法递归调用,将BKD树最底层的叶子节点,按照从左到右的顺序逐个叶子写入磁盘.

其中对应图中DocIDsPackedValue的写入如下图所示:

2021-04-13-13-07-44

参考文章

逻辑较简单,具体写入策略挺复杂.


完。

联系我

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


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

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

联系邮箱:huyanshi2580@gmail.com

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