三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

IndexFileDeleter

IndexFileDeleter

IndexFileDeleterApache Lucene 内部一个非常关键的文件生命周期管理类,它的核心职责是:

安全、可靠地跟踪和删除索引中不再被任何“提交点”(commit point)引用的文件。


✅ 一句话总结

IndexFileDeleter通过引用计数(reference counting)机制,确保只有当某个索引文件不再被任何有效的SegmentInfos(即 commit 或 in-memory 状态)引用时,才将其从磁盘上物理删除,从而避免误删正在使用的文件,保证索引的一致性和可靠性。


🔍 核心功能详解

1.什么是“提交点”(Commit Point)?

  • 每次调用IndexWriter.commit()会生成一个segments_N文件(如segments_1,segments_2...)。
  • 这个文件记录了当时索引包含哪些段(segments),称为一个commit point
  • 即使未 commit,IndexWriter内存中的SegmentInfos也代表一个“活跃但未持久化”的状态,也需要保护其引用的文件不被删除。

2.为什么需要IndexFileDeleter

Lucene 的写入是追加式 + 多版本的:

  • 合并(
← 返回列表