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

2021-04-15 15:34:24 浏览数 (1)

本文使用 Lucene 代码版本:8.7.0

前言

本文学习kdi文件格式.

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

.kdd 文件整体结构

字段解释:

  • 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的写入如下图所示:

参考文章

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

完。

0 人点赞