u40_seg0 u40_seg1

是否能获得索引

文件segment_N

的文件名?

索引目录中

是否还有未处理

的索引文件?

索引文件是否

满足要求?

取出一个索引文件

初始化索引文件的

计数引用

索引文件是否为segments_N?

u47_seg0 u47_seg1
u48_seg0 u48_seg1
u49_seg0 u49_seg1
u50_seg0 u50_seg1
u51_seg0 u51_seg1
u52_seg0 u52_seg1 u52_seg2 u52_seg3 u52_seg4
u53_seg0 u53_seg1 u53_seg2 u53_seg3 u53_seg4

开始

SegmentInfos

u58_seg0 u58_seg1

是否出现异常?

处理异常

u63_seg0 u63_seg1
u64_seg0 u64_seg1

根据segments_N获取一个新的SegmentInfos

两个SegmentInfos

的generation是否相同?

根据新的SegmentInfos

获取CommitPoint

添加CommitPoint到CommitPoint集合commits中

增加新的SegmentInfos对应的索引文件的计数

u70_seg0 u70_seg1
u71_seg0 u71_seg1
u72_seg0 u72_seg1
u73_seg0 u73_seg1

另CommitPoint为当前提交点currentCommitPoint

u77_seg0 u77_seg1
u78_seg0 u78_seg1 u78_seg2 u78_seg3
u79_seg0 u79_seg1 u79_seg2 u79_seg3

是否获得StandardDirectoryReader?

执行检查点(checkPoint)工作

u82_seg0 u82_seg1

对commits集合进行排序

u84_seg0 u84_seg1
u85_seg0 u85_seg1 u85_seg2 u85_seg3

更新SegmentInfos的metaData

u87_seg0 u87_seg1

删除计数为0的索引文件

执行索引删除策略

执行检查点(checkPoint)工作

执行CommitPoint的删除工作

结束

u93_seg0 u93_seg1
u94_seg0 u94_seg1
u95_seg0 u95_seg1
u96_seg0 u96_seg1
u97_seg0 u97_seg1
u98_seg0 u98_seg1 u98_seg2 u98_seg3

u101_seg0 u101_seg1
u102_seg0 u102_seg1 u102_seg2 u102_seg3

u107_seg0 u107_seg1 u107_seg2 u107_seg3