相关的类调用关系
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
 

最新文章

  1. 《Note --- Unreal 4 --- matinee》
  2. 预处理指令#pragma
  3. windows 7 docker oralce安装和使用
  4. function,new function,Function,new Function 之间的区别
  5. 博客CSS
  6. Oracle 查看哪个表被锁定,并获取对应的sessionID
  7. linux init.d脚本编写模板
  8. 使用SMSManager短信管理器发送短信
  9. 10 件在 PHP 7 中不要做的事情
  10. platform机制
  11. Objective-C中的copy协议
  12. < IOS > IOS适配,简单的分析解决一下
  13. 自定义silverlight中datagrid的排序事件
  14. css多重边框
  15. hdu 5458 Stability(树链剖分+并查集)
  16. CCF CSP 201703-1 分蛋糕
  17. django的内置分页
  18. CentOS 6.5安装squashfs-tools
  19. kaldi脚本注释二
  20. AngularJS表格神器“ui-grid”的应用

热门文章

  1. Hibernate 延迟载入
  2. Hadoop,MapReduce,HDFS面试题
  3. JWT token心得
  4. .NET破解之PDF编辑器
  5. <c:redirect>标签的使用
  6. es5 - array - shift
  7. Android相机基础基于camera2API
  8. 算法笔记_009:字符串匹配(Java)
  9. 在Ubuntu 12 服务器上源码安装 OpenERP 8.0
  10. 〖QT编程〗在Qt编程中使用/显示中文编码