Lucene 索引文件的读取(二)之dim&&dii

本文承接索引文件的读取(一)之dim&&dii继续介绍剩余的内容,下面先给出读取索引文件.dim&&dii的流程图:

图1:

Lucene 索引文件的读取(二)之dim&&dii

点击查看大图

读取索引文件.dim&&dii

收集段中所有的文档号

图2:

Lucene 索引文件的读取(二)之dim&&dii

  在递归遍历BKD树之前,先判断下是否段中的文档都满足查询条件,如果满足,那么我们就不需要通过读取BKD树的信息来获取文档号,而是根据段中的reader.maxDoc()方法就可以获得满足查询条件的文档号集合。

  需要先后同时满足两个条件才能通过reader.maxDoc()获得满足查询条件的文档号集合:

  • 条件一:包含当前点数据域的文档数量docCount必须等于段中的文档数量

  包含当前点数据域的文档数量可以通过索引文件.dim的字段获得,如下红框所示所示:

图3:

Lucene 索引文件的读取(二)之dim&&dii

  上图中各个字段的含义见文章索引文件的读取(一)之dim&&dii

  段中的文档数量通过reader.maxDoc()获取,即读取索引文件.si中的SegSize字段,如下红框所示所示:

图4:

Lucene 索引文件的读取(二)之dim&&dii

  满足条件一意味着,段中的每篇文档中至少有一个点数据域,这些点数据域对应的域名就是当前流程处理的域

 

看这里:https://www.amazingkoala.com.cn/Lucene/Search/2020/0428/136.html