Lucene 索引文件的读取(二)之dim&&dii
本文承接索引文件的读取(一)之dim&&dii继续介绍剩余的内容,下面先给出读取索引文件.dim&&dii的流程图:
图1:
点击查看大图
读取索引文件.dim&&dii
收集段中所有的文档号
图2:
在递归遍历BKD树之前,先判断下是否段中的文档都满足查询条件,如果满足,那么我们就不需要通过读取BKD树的信息来获取文档号,而是根据段中的reader.maxDoc()方法就可以获得满足查询条件的文档号集合。
需要先后同时满足两个条件才能通过reader.maxDoc()获得满足查询条件的文档号集合:
- 条件一:包含当前点数据域的文档数量docCount必须等于段中的文档数量
包含当前点数据域的文档数量可以通过索引文件.dim的字段获得,如下红框所示所示:
图3:
上图中各个字段的含义见文章索引文件的读取(一)之dim&&dii。
段中的文档数量通过reader.maxDoc()获取,即读取索引文件.si中的SegSize字段,如下红框所示所示:
图4:
满足条件一意味着,段中的每篇文档中至少有一个点数据域,这些点数据域对应的域名就是当前流程处理的域。
看这里:https://www.amazingkoala.com.cn/Lucene/Search/2020/0428/136.html