开始

待合并的段集合

OneMerge

作用(apply)删除信息

DocValues信息

写入到磁盘

初始化一个新段

更新待合并的段集合

OneMerge

获取SegmentReader

的集合MergeReader

生成SegmentMerger

执行索引文件的合并

设置新段包含的

索引文件名

生成复合索引文件

新段对应的索引文件.si写入磁盘

生成IndexReaderWarmer

提交合并

调用钩子函数

完成合并后的工作

更新pendingMerges

结束

u250_seg0 u250_seg1
u251_seg0 u251_seg1
u252_seg0 u252_seg1
u253_seg0 u253_seg1
u254_seg0 u254_seg1 u254_seg2 u254_seg3 u254_seg4 u254_seg5
u255_seg0 u255_seg1
u256_seg0 u256_seg1
u257_seg0 u257_seg1
u258_seg0 u258_seg1
u259_seg0 u259_seg1

synchronized(IndexWriter)开始

synchronized(IndexWriter)结束

synchronized(IndexWriter)开始

synchronized(IndexWriter)结束

u264_seg0 u264_seg1 u264_seg2 u264_seg3
u265_seg0 u265_seg1
u266_seg0 u266_seg1
u267_seg0 u267_seg1
u268_seg0 u268_seg1
u269_seg0 u269_seg1
u270_seg0 u270_seg1 u270_seg2 u270_seg3

synchronized

(IndexWriter)结束

synchronized

(IndexWriter)开始

段的合并的流程图