u257_seg0 u257_seg1

是否能获得索引

文件segment_N

的文件名?

索引目录中

是否还有未处理

的索引文件?

索引文件是否

满足要求?

取出一个索引文件

初始化索引文件的

计数引用

索引文件是否为segments_N?

u264_seg0 u264_seg1
u265_seg0 u265_seg1
u266_seg0 u266_seg1
u267_seg0 u267_seg1
u268_seg0 u268_seg1
u269_seg0 u269_seg1 u269_seg2 u269_seg3 u269_seg4
u270_seg0 u270_seg1 u270_seg2 u270_seg3 u270_seg4

开始

SegmentInfos

u275_seg0 u275_seg1

是否出现异常?

处理异常

u280_seg0 u280_seg1
u281_seg0 u281_seg1

根据segments_N获取一个新的SegmentInfos

两个SegmentInfos

的generation是否相同?

根据新的SegmentInfos

获取CommitPoint

添加CommitPoint到CommitPoint集合commits中

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

u287_seg0 u287_seg1
u288_seg0 u288_seg1
u289_seg0 u289_seg1
u290_seg0 u290_seg1

另CommitPoint为当前提交点currentCommitPoint

u294_seg0 u294_seg1
u295_seg0 u295_seg1 u295_seg2 u295_seg3
u296_seg0 u296_seg1 u296_seg2 u296_seg3

是否获得StandardDirectoryReader?

执行检查点(checkPoint)工作

u299_seg0 u299_seg1

对commits集合进行排序

u301_seg0 u301_seg1
u302_seg0 u302_seg1 u302_seg2 u302_seg3

更新SegmentInfos的metaData

u304_seg0 u304_seg1

删除计数为0的索引文件

执行索引删除策略

执行检查点(checkPoint)工作

执行CommitPoint的删除工作

结束

u310_seg0 u310_seg1
u311_seg0 u311_seg1
u312_seg0 u312_seg1
u313_seg0 u313_seg1
u314_seg0 u314_seg1
u315_seg0 u315_seg1 u315_seg2 u315_seg3

u318_seg0 u318_seg1
u319_seg0 u319_seg1 u319_seg2 u319_seg3

u324_seg0 u324_seg1 u324_seg2 u324_seg3