在文章SegmentReader(一)中,我们介绍了SegmentReader对象,它用于描述一个段中的索引信息,并且说到SegmentReader对象中包含了一个SegmentCoreReaders对象。
图1:
图1中,蓝框标注的两个对象用于描述DocValues的索引信息,而红框标注的SegmentCoreReader则描述了下面的索引信息,注意的是在文章SegmentReader(一)中是基于Lucene 7.5.0的:
表一:
对象 | 描述 |
---|---|
StoredFieldsReader | 从索引文件fdx&&fdt中读取存储域的索引信息 |
FieldsProducer | 从索引文件tim&&tip、索引文件doc、索引文件pos&&pay中读取域的倒排信息 |
TermVectorsReader | 从索引文件tvx&&tvd读取词向量的索引信息(用于高亮优化查询) |
PointsReader | 从索引文件dim&&dii中读取域值为数值类型的索引信息 |
NormsProducer | 从索引文件nvd&&nvm中读取域的打分信息(作为对文档进行打分的参数) |
FieldInfos | 从索引文件fnm读取域的信息 |
在文章SegmentReader(一)中,并没有对每一种索引文件进行详细的读取过程的介绍,故索引文件的载入
的系列文章对此将详细的展开。
该系列文章将要介绍的内容可以概述为这么一句话:在初始化一个读取索引信息的reader期间,索引文件如何被读取(载入)。由于只是初始化一个reader,而不是处于一个查询阶段,所以只有部分索引文件的信息会被载入到内存中。
索引文件的载入顺序
在SegmentCoreReader类的构造函数中可以看出表一中对应的索引文件的载入顺序:
图2:
上文中说到,SegmentCoreReader对象是被包含在SegmentReader对象中,故在SegmentReader类的构造函数中,还可以看出DocValues对应的索引文件跟SegmentCoreReader对象中包含的索引文件的载入顺序:
剩余内容看这里:https://www.amazingkoala.com.cn/Lucene/Index/2021/0218/189.html