lucene代码分析12

2021SC@SDUSC
按照基本索引链的结构将索引结果写入段
代码为:
consumer(DocFieldProcessor).flush(threads, flushState);
//回收 fieldHash,以便用于下一轮的索引,为提高效率,索引链中的对象是被复用的。
Map<DocFieldConsumerPerThread, Collection>
childThreadsAndFields = new HashMap<DocFieldConsumerPerThread,
Collection>();
for ( DocConsumerPerThread thread : threads) {
DocFieldProcessorPerThread perThread = (DocFieldProcessorPerThread) thread;
childThreadsAndFields.put(perThread.consumer, perThread.fields());
perThread.trimFields(state);
}
//写入存储域
–> fieldsWriter(StoredFieldsWriter).flush(state);
//写入索引域
–> consumer(DocInverter).flush(childThreadsAndFields, state);
//写入域元数据信息,并记录写入的文件名,以便以后生成 cfs 文件
–> final String fileName = state.segmentFileName(IndexFileNames.FIELD_INFOS_EXTENSION);
–> fieldInfos.write(state.directory, fileName);
–> state.flushedFiles.add(fileName);
此过程也是按照基本索引链来的:

consumer(DocFieldProcessor).flush(…);

consumer(DocInverter).flush(…);
consumer(TermsHash).flush(…);

consumer(FreqProxTermsWriter).flush(…);

if (nextTermsHash != null) nextTermsHash.flush(…);

consumer(TermVectorsTermsWriter).flush(…);
endConsumer(NormsWriter).flush(…);

fieldsWriter(StoredFieldsWriter).flush(…);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值