在前面的文章中,我们介绍了段的合并策略TieredMergePolicy、LogMergePolicy,讲述了如何从索引目录中挑选出满足合并条件的一个或多个段的集合OneMerge,另外还介绍了段的合并调度MergeScheduler,讲述了如何用不同的调度策略分配一个或多个线程来调度段的合并,比如执行先后顺序,磁盘IO限制。
图1是文章MergeScheduler中的调度策略ConcurrentMergeScheduler的流程图,其中红色框标注的流程点描述的是一个线程执行段的合并的过程,然而基于篇幅我们并没有展开介绍,故从本篇文章开始,将通过数篇文章来介绍该流程点的逻辑:
为了能更好的理解图1中每一个流程点,强烈建议先看下文档提交之flush系列文章。
图1:
看这里:https://www.amazingkoala.com.cn/Lucene/Index/2019/1024/101.html