谈谈lucene的DocValues合并(BinaryField域的合并过程)

你。 提交于 2020-02-28 04:21:56

谈谈lucene的DocValues特性之BinaryDocValuesField 中说过,BinaryField的写入方式是按照文档的添加顺序依次写入的,并且压缩方式也较简单,其实合并的方式也很简单,即将已生成的各段BinaryDocValues单纯的重新写入到一个新的段中:

对于每个段都对应一个BinaryDocValuesSub,由一个DocMap与BinaryDocValues构成)。DocMap用于返回当前数据段中的docId对应到新段中的值:

由于BinaryDocValues没有IndexSort选项,因此只考虑以下两种情况:如果没有文档删除,每段中的文档ID在新生成的段中的ID=前一个段中的文档数量+当前段中的文档ID;如果某个数据段存在文档删除,例如有10篇文档,ID号为0-9(第1、5、8三篇文档被删除后)则重新变成:

而BinaryDocValues只需获取当前docID对应的值即可。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!