Lucene fdx 文件格式详解

2019-10-15  本文已影响0人  ni_d58f

本文及后面关于Lucene的文章所采用的lucene 版本为8.1.0.

1. 什么是fdx文件

fdx文件是fdt文件的索引. 当查询到满足条件的doc Id时,如何能够快速的通过docId定位到对应的内容呢?Lucuce的做法是

fdx文件在Lucene中对应的数据结构为CompressingStoredFieldsWriter


2. fdx文件格式

fdx文件格式

说明:
每一个Block记录128个chunk的索引信息(最后一个block中的chunk数可能少于128个), 不知道chunk结构,请参考Lucene fdt 文件格式详解


3. 测试代码及结果

代码请参考Lucene tim文件格式详解的第三部分


4. 范例fdx文件内容

fdx文件.png

5. fdx文件内容分析

5.1 文件头

文件头部分主要内容为标识此文件类型为Lucene50StoredFieldsFastIndex, 源码部分在CompressingStoredFieldsWriter的120行,主要内容如下:

  1. 3fd7 6c17 固定头MAGIC
  2. 1dLucene50StoredFieldsFastIndex长度29, 其中Lucene50StoredFieldsFast中的Fast代表data区采用Fast压缩方式, Index这个代表是Index``文件,与data`文件相对应
  3. 23个字节Lucene50StoredFieldsFastData
  4. 00 0000 01 4个字节的CompressingStoredFieldsWriter.VERSION_CURRENT
  5. 16个字节的segmentId, 这个是随机生成的
  6. 00 segment suffix 长度 0
  7. 02 即2, 指的是PackedInts.VERSION_CURRENT

5.2 fdx data 部分

fdxfdt文件映射关系如下:

fdx与fdt文件映射关系

5.3 footer区

footer区主要有以下内容


觉得本文有帮助的话,请关注我的简书,一同进步!

上一篇 下一篇

猜你喜欢

热点阅读