【lucene】文档id docid

删除后文档id 还会被复用吗?不会。

在 Lucene 里,docID 是一次性、不可复用的。

  • 同一个段(segment)内,docID 从 0 开始连续递增;一旦分配给某篇文档,就终身绑定,即使该文档随后被删除,这个号码也永远空出来,不会再次分配给新文档。

  • 当段合并(merge)产生新的段时,旧段被丢弃,新段的 docID 会重新从 0 开始连续编号,但这属于"新生成"的号码空间,与旧段已删除的 docID 没有继承关系。

  • 因此,对于外部调用者而言,docID 在单个 IndexReader/IndexSearcher 生命周期内始终保持稳定且唯一;删除造成的空洞不会被回填。

一句话:

删除只是把 docID 标记为"无效",但该号码不会被后续新文档复用。

也就是是在一个segment段内,docid是一次性的?

是的------在同一个 segment 内部,docID 是一次性的。

  • 每个文档追加进来时,分配一个只增不减的整数 docID(从 0 开始)。

  • 删除只是把对应 bit 在 `liveDocs` 里置 0;这个 docID 永远不会再被该 segment 里的新文档复用。

  • 当 segment 合并后,新 segment 会重新生成全新的、连续的 docID 序列,但原 segment 的 docID 已随旧 segment 一起被丢弃,因此仍不存在复用。

合并后 文档id仍旧是从0开始分配吧?

对,合并后生成的新 segment,其 docID 会重新从 0 开始连续分配。

合并过程会把参与合并的所有旧 segment 里"仍然存活"的文档再写一遍,按写入顺序重新编号:0、1、2... 。旧 segment 及其 docID 随后会被物理删除,因此新 segment 的 docID 与旧 segment 毫不相干,自然也不会保留任何"空洞"。

相关推荐
sunxunyong5 天前
ranger与solr&ldap&doris集成部署
solr·lucene
编码者卢布6 天前
【Azure AI Search】Index的字段使用默认Analyzer(standard.lucene) 和 en.microsoft 有什么不同?
microsoft·lucene·azure
2601_961875249 天前
法考资料电子版|pdf|资料已整理
elasticsearch·搜索引擎·pdf·全文检索·solr·lucene·sphinx
2601_961845429 天前
考研公共课资料推荐|英语数学政治|电子版|资料已整理
搜索引擎·中文分词·solr·lucene·sphinx·高考
解决问题no解决代码问题9 天前
漏洞详解|CVE-2026-44825 Apache Solr 隐藏默认账号漏洞(附检测+修复全套方案)
apache·solr·lucene
2601_9618454211 天前
高考真题下载|2025高考全科真题网盘分类整理
搜索引擎·中文分词·solr·lucene·sphinx·高考
2601_9611940215 天前
教资科三美术考什么|初中高中美术题型考点和模板资料
leetcode·elasticsearch·职场和发展·蓝桥杯·pat考试·lucene
2601_9611940218 天前
考研模拟卷谁的比较好|27李林合工大肖四肖八数学英语408PDF
考研·elasticsearch·全文检索·代理模式·lucene·桥接模式·访问者模式
醉颜凉24 天前
Lucene底层原理:倒排索引实现原理与代码实战,彻底吃透搜索引擎核心
搜索引擎·mybatis·lucene
risc1234561 个月前
DocumentsWriterFlushQueue
lucene