Lucene 7.5.0 索引文件之segments_N

当IndexWriter执行commit()操作后,会生成一个segments_N文件,该文件描述了当前索引目录中所有有效的段信息文件(active segment info),即之前文章介绍的segmentInfo文件。

  索引目录中可能存在多个Segments_N文件,每个Segment_N文件代表某次commit()时的索引状态,其中N值最大的Segments_N文件代表最新的一次提交,它包含当前索引目录中所有的索引信息。

  图1中最新的一次提交生成了Segments_5文件。

图1:

  图1中Segments_N文件包含的索引信息关系如下图:

图2:

  一个索引目录中存在多个segments_N文件的原因大体分为两点:

  • 旧的segments_N暂时不能被删除:原因很多,在后面介绍IndexWriter的文章中会提及
  • 使用了非默认的IndexDeletionPolicy:IndexDeletionPolicy提供了一个策略,该策略描述了当一个新的commit()提交后,如果处理旧的提交,Lucene7.5.0中默认使用的是KeepOnlyLastCommitDeletionPolicy,它是IndexDeletionPolicy的其中一个实现,即当有新的提交时,删除前面的提交,比如在图1中,就只会保留segments_5文件;例如同样作为IndexDeletionPolicy的另一个实现,NoDeletionPolicy,使用该策略就会保留每次的commit(),这么做的好处就相当于设置了每一个commit()检查点,配合CommitUserData(下文会介绍),我们可以将索引信息恢复到任意一个检查点,缺点是很明显的,如图2中,每一个segments_N都包含了以往所有的信息,索引目录的大小因此会很大。

看这里:https://www.amazingkoala.com.cn/Lucene/suoyinwenjian/2019/0610/65.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值