Lucene 把索引拆成 “段(segment)+ 文件” 两层结构,每个段用同一前缀(如 `_0`、`_1`)命名一组文件;一个段就相当于一个独立的小索引。下面按文件扩展名列出常见文件及其作用、存放内容和使用场景,供速查。
扩展名 中文简称 存放内容 主要用途
segments_N 段集合文件 当前索引包含多少个段、各段版本、提交点等 启动时加载整个索引的“目录”
.si 段元数据 单个段的文档数、版本、是否复合文件等 打开段时读一次即可
.tim 词典文件 按字典序保存所有 Term + 统计信息(docFreq、totalTermFreq)+ 指向倒排表的指针 先查 `.tim` 找到 Term
.tip 词典索引 对 `.tim` 的 FST 索引,支持 O(log n) 快速定位到 block 加速 `.tim` 查找
.doc 倒排表主体 docId 列表 + 词频(压缩差值编码) 拿到 Term 后读 `.doc` 获取文档
.pos 位置文件 Term 在每个文档中的 字符/词级别位置(可选) 短语查询、高亮
.pay 载荷文件 payload、偏移量 等附加信息(可选) 需要 payload 时使用
.fdt 存储字段数据 文档被 `store=true` 的字段原始内容(正文、标题等) 搜索结果回显
.fdx 存储字段索引 指向 `.fdt` 的 文档级别指针索引 快速随机访问 `.fdt`
.fnm 字段元数据 字段名、类型、是否索引/存储、是否分词、docValues 类型等 构建 FieldInfo
.nvd/.nvm Norms 数据/元数据 每篇文档每字段的 长度归一化因子 计算 BM25、打分
.dvd/.dvm DocValues 数据/元数据 每篇文档每字段的 排序、聚合数值、分类标签 等 排序、聚合、脚本
.tvx/.tvd/.tvf TermVector 索引/数据 每篇文档每字段的 词、位置、偏移、payload 向量信息 高亮、ML 特征
.liv 存活文档列表 标记哪些 docId 仍然有效(被删除的置位) 过滤软删除文档
.cfs/.cfe 复合文件/索引 把小文件合并成单个大文件 `.cfs` + 索引 `.cfe`(可选,减少句柄) 操作系统句柄紧张时启用
使用场景速记
- 查词:`.tip` → `.tim` → `.doc/.pos/.pay`
- 取原文:`.fdx` → `.fdt`
- 打分:`.nvd`/`nvm` + `.doc`
- 聚合/排序:`.dvd/.dvm`
- 高亮/ML:`.tvx/.tvd/.tvf`
这样即可一眼看懂 Lucene 目录里的“一堆文件”各自职责。