Lucene 7.5.0 段的合并(四)

本文承接执行段的合并(三),继续介绍执行段的合并的剩余的流程,下面先给出执行段的合并的流程图:

图1:

点击查看大图

生成IndexReaderWarmer

  在前面流程中我们了解到,合并后生成的新段已经包含了所有固定的索引信息部分删除信息,故在当前流程点,我们可以生成该段对应的SegmentReader对象,并将该对象添加到ReadPool(见执行段的合并(二))中,这便是生成IndexReaderWarmer的过程。

  删除信息包括了被删除的文档号跟变更的DocValues信息。

  SegmentReader对象中包含的内容在SegmentReader系列文章中介绍,不赘述

  固定的索引信息是哪些:

  为什么是包含了部分删除信息:

  • 执行段的合并是Lucene安排一个新的线程执行的并发操作,在合并的过程中,其他执行文档增删改的线程可能生成了新的删除信息,并且新的删除信息会在随后提交合并的流程中作用当前的新段

  为什么要生成IndexReaderWarmer:

  • 首先要说的是,在合并阶段生成IndexReaderWarmer需要通过IndexWriterConfig.setMergedSegmentWarmer()方法设置,默认不使用该功能
  • 由于执行段的合并是并发操作,使得可以并发的提前读取新段的内容,即获得SegmentReader对象(生成IndexReaderWarmer的主要目的),其他线程执行近实时搜索NRT时就无需等待合并操作结束后再去获得SegmentReader对象,要知道获得SegmentReader对象的过程是I/O操作,故可以降低NRT搜索的延迟

 

看这里:https://www.amazingkoala.com.cn/Lucene/Index/2019/1030/104.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值