在文章软删除softDeletes(二)中介绍了软删除在索引(index)阶段的相关内容,我们接着介绍在flush/commit阶段的内容

flush/commit

  在这个阶段,我们首先要介绍的是DWPT在转化为一个段的期间,即下图中用红框标注的流程点,跟软删除相关的内容:

图1:

Lucene 软删除 softDeletes(五)

点击查看大图

  上图中,流程点将DWPT中收集的索引信息生成一个段newSegment的介绍见文章文档提交之flush(三),注意的是,图1中的流程点基于版本为Lucene 7.5.0,但是软删除相关的处理时机点跟Lucene 8.4.0是一致的。

  在红框标注的流程点处理软删除文档中,统计了满足某个条件的文档的数量softDelCountOnFlush,这个条件是:文档中包含了DocValues(NumericDocValuesField或BinaryDocValuesField)的信息,并且DocValues的域名跟软删除的域是相同的(文档也有可能同时满足软删除的条件)。满足该条件的文档都被会认为是软删除的,在文章软删除softDeletes(一)中的第二个例子介绍了这种情况。

  红框标注的流程点处理软删除文档中是如何找到所有满足这个条件的文档集合的:

  在文章索引文件的生成(十五)之dvm&&dvd中,我们介绍了在索引阶段Lucene收集DocValues信息的过程,并且说到使用了DocsWithFieldSet对象收集了文档号,同时介绍了DocsWithFieldSet收集的过程,即每一个DocValues域都有一个DocsWithFieldSet对象,那么DocValues域的域名跟软删除的域如果相同的话,DocsWithFieldSet对象中文档的数量会添加到softDelCountOnFlush中。

  接着在下图红框标注的流程点更新DocValues域处理软删除的信息。

 

看这里: https://www.amazingkoala.com.cn/Lucene/Index/2020/0708/152.html

相关文章:

  • 2021-07-07
  • 2021-10-11
  • 2022-02-01
  • 2021-07-07
  • 2022-12-23
  • 2021-09-09
  • 2021-09-29
  • 2021-09-30
猜你喜欢
  • 2022-01-22
  • 2021-12-02
  • 2021-10-12
  • 2021-05-28
  • 2021-10-22
  • 2021-08-17
  • 2022-12-23
相关资源
相似解决方案