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
     
  • 相关阅读:
    jvm基本结构和解析
    多态的意思
    java中对象的简单解读
    double类型和int类型的区别
    python 解析xml文件
    win10不能映射Ubuntu共享文件
    Qt程序打包
    Ubuntu boot分区文件误删,系统无法启动,怎么解
    ubuntu Boot空间不够问题“The volume boot has only 5.1MB disk space remaining”
    Ubuntu 分辨率更改 xrandr Failed to get size of gamma for output default
  • 原文地址:https://www.cnblogs.com/hdflzh/p/4040900.html
Copyright © 2011-2022 走看看