`
sharp-fcc
  • 浏览: 105979 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

lucene 4.6 之indexing 之 IndexChain,索引数据结构

阅读更多
      /*
      This is the current indexing chain:

      DocConsumer / DocConsumerPerThread
        --> code: DocFieldProcessor
          --> DocFieldConsumer / DocFieldConsumerPerField
            --> code: DocFieldConsumers / DocFieldConsumersPerField
              --> code: DocInverter / DocInverterPerField
                --> InvertedDocConsumer / InvertedDocConsumerPerField
                  --> code: TermsHash / TermsHashPerField
                    --> TermsHashConsumer / TermsHashConsumerPerField
                      --> code: FreqProxTermsWriter / FreqProxTermsWriterPerField
                      --> code: TermVectorsTermsWriter / TermVectorsTermsWriterPerField
                --> InvertedDocEndConsumer / InvertedDocConsumerPerField
                  --> code: NormsConsumer / NormsConsumerPerField
          --> StoredFieldsConsumer
            --> TwoStoredFieldConsumers
              -> code: StoredFieldsProcessor
              -> code: DocValuesProcessor
    */

 DocumentsWriterPerThread 中具体负责索引工作的是IndexingChain,这些类跟持久化到磁盘上得索引文件都存在对应关系。

 

DocFieldProcessor 继承DocConsumer ,负责收集所有的field的信息,然后传给相应的per-field consumers , 来处理这些信息,具体的事情由他的成员变量,真正干实事的是:

NormsConsumer: 写 _X.nrm  文件,写归一化的文件。

 

FreqProxTermsWriter:写_X.tim,_X.tip, _X.doc, _X.pos文件。

 TermsVectorConsumer:写_X.tvx ,_X.tvd, _X.tvf 文件。

 

StoredFieldsProcessor: 写_X.fnm, _X.fdt,_X.fdx 文件。

 

在DocFieldProcessor中,用一个DocFieldProcessorPerField[]的数组来保存每一个field对应的处理对象,因为每一个对象都是复用的。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics