【lucene】tip文件详解
把 `.tip` 文件按 字节顺序 画成一张“路线图”:
```
┌---------------------┐
│ Header │ CodecHeader(魔数+版本)
├---------------------┤
│ FSTIndex[0] │ 字段0的FST字节流
│ FSTIndex[1] │ 字段1的FST字节流
│ ... │
│ FSTIndex[NumFields-1]│
├---------------------┤
│ IndexStartFP[0] │ VLong,字段0的FST在.tip中的起始偏移
│ IndexStartFP[1] │ VLong,字段1的FST在.tip中的起始偏移
│ ... │
│IndexStartFP[NumFields-1]│
├---------------------┤
│ DirOffset │ Uint64,指向上面这张“IndexStartFP表”的起点
├---------------------┤
│ Footer │ CodecFooter(校验和)
└---------------------┘
```
一句话记忆
“头 + 一堆 FST + 指针表 + 指针表的指针 + 尾”。
指针表存的就是:执向某个字段的fst的起始位置的指针。
整体顺序
```
Header
FSTIndex × NumFields ← 每个字段一棵 FST
IndexStartFP × NumFields ← 每棵 FST 在文件中的起始偏移
DirOffset
Footer
```
字段说明
原文 中文含义 作用
Header → CodecHeade