u71_seg0 u71_seg1

是否能获得索引

文件segment_N

的文件名?

索引目录中

是否还有未处理

的索引文件?

索引文件是否

满足要求?

取出一个索引文件

初始化索引文件的

计数引用

索引文件是否为segments_N?

u78_seg0 u78_seg1
u79_seg0 u79_seg1
u80_seg0 u80_seg1
u81_seg0 u81_seg1
u82_seg0 u82_seg1
u83_seg0 u83_seg1 u83_seg2 u83_seg3 u83_seg4
u84_seg0 u84_seg1 u84_seg2 u84_seg3 u84_seg4

开始

SegmentInfos

u89_seg0 u89_seg1

是否出现异常?

处理异常

u94_seg0 u94_seg1
u95_seg0 u95_seg1

根据segments_N获取一个新的SegmentInfos

两个SegmentInfos

的generation是否相同?

根据新的SegmentInfos

获取CommitPoint

添加CommitPoint到CommitPoint集合commits中

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

u101_seg0 u101_seg1
u102_seg0 u102_seg1
u103_seg0 u103_seg1
u104_seg0 u104_seg1

另CommitPoint为当前提交点currentCommitPoint

u108_seg0 u108_seg1
u109_seg0 u109_seg1 u109_seg2 u109_seg3
u110_seg0 u110_seg1 u110_seg2 u110_seg3

是否获得StandardDirectoryReader?

执行检查点(checkPoint)工作

u113_seg0 u113_seg1

对commits集合进行排序

u115_seg0 u115_seg1
u116_seg0 u116_seg1 u116_seg2 u116_seg3

更新SegmentInfos的metaData

u118_seg0 u118_seg1

删除计数为0的索引文件

执行索引删除策略

执行检查点(checkPoint)工作

执行CommitPoint的删除工作

结束

u124_seg0 u124_seg1
u125_seg0 u125_seg1
u126_seg0 u126_seg1
u127_seg0 u127_seg1
u128_seg0 u128_seg1
u129_seg0 u129_seg1 u129_seg2 u129_seg3

u132_seg0 u132_seg1
u133_seg0 u133_seg1 u133_seg2 u133_seg3

u138_seg0 u138_seg1 u138_seg2 u138_seg3