zoukankan      html  css  js  c++  java
  • lucene 内存索引存储每个field里内容的相关代码

    相关的类调用关系
    DocumentsWriterPerThread ——>DocFieldProcessor
     
    DocumentsWriterPerThread里的consumer对象(类型是DocFieldProcessor)负责field的内数据的存储
     
    1 consumer.processDocument(fieldInfos);
       在存储field内容这方面只是简单的把docid,field和fieldinfo放入子成员storedConsumer里
     
    2  consumer.finishDocument();
        会取出要储存域里的数据,放入 bufferedDocs子对象(连续的块内存,CompressingStoredFieldsWriter的子成员)里面,在flush disk的时候在把bufferedDocs内的数据写入磁盘
     
    ==================================================
    DocFieldProcessor 负责 .fdt .fdx .tvd .tvx四个文件的数据写入
     
    1 DocFieldProcessor调用TwoStoredFieldsConsumers类的flush方法写fdt .fdx 文件
     
    storedConsumer.addField(docState.docID, field, fp.fieldInfo);//storedConsumer把存储的docid,field和info数据存储到自己的类里面
     
    storedConsumer.flush(state); 负责.fdt .fdx 文件
     
    2DocFieldProcessor调用DocInverter类的flush方法写tvd和tvx文件
    consumer.flush(childFields, state);负责.tvd .tvx 文件
     
    ===================================================================
    DocumentsWriterPerThread 
     
    /** Flush all pending docs to a new segment */
    lucene最重要的flush函数,该函数执行完成以后 所有数据都刷新到磁盘,且产生的临时文件是最多的
    FlushedSegment flush() 
     
    生成的文件如下
     
    -rw-r--r-- 1 bf bf 358 2014-07-11 14:53 _0.cfe
    -rw-r--r-- 1 bf bf 958 2014-07-11 14:53 _0.cfs
    -rw-r--r-- 1 bf bf 72 2014-07-11 14:53 _0.fdt
    -rw-r--r-- 1 bf bf 62 2014-07-11 14:53 _0.fdx
    -rw-r--r-- 1 bf bf 138 2014-07-11 14:53 _0.fnm
    -rw-r--r-- 1 bf bf 83 2014-07-11 14:53 _0_Lucene41_0.doc
    -rw-r--r-- 1 bf bf 50 2014-07-11 14:53 _0_Lucene41_0.pay
    -rw-r--r-- 1 bf bf 63 2014-07-11 14:53 _0_Lucene41_0.pos
    -rw-r--r-- 1 bf bf 116 2014-07-11 14:53 _0_Lucene41_0.tim
    -rw-r--r-- 1 bf bf 81 2014-07-11 14:53 _0_Lucene41_0.tip
    -rw-r--r-- 1 bf bf 43 2014-07-11 14:53 _0.nvd
    -rw-r--r-- 1 bf bf 62 2014-07-11 14:53 _0.nvm
    -rw-r--r-- 1 bf bf 288 2014-07-11 14:53 _0.si
    -rw-r--r-- 1 bf bf 79 2014-07-11 14:53 _0.tvd
    -rw-r--r-- 1 bf bf 62 2014-07-11 14:53 _0.tvx
    -rw-r--r-- 1 bf bf 0 2014-07-11 14:48 write.lock
     
  • 相关阅读:
    json格式转换
    早该知道的7个JavaScript技巧
    SPFA加上SLF时判负环的条件
    HDU 4061 A Card Game
    线性筛法求素数
    STL之deque
    POJ 3219 二项式系数
    HDU 4296 Buildings
    HDU 4292 Food (成都赛区网络赛第五题,拆点网络流)
    拆点网络流(POJ3281)
  • 原文地址:https://www.cnblogs.com/hdflzh/p/4040900.html
Copyright © 2011-2022 走看看