Lucene 4.0 DocumentsWriterPerThread

来源:互联网 发布:windows xp u盘安装版 编辑:程序博客网 时间:2024/06/04 00:26

首先有个IndexinngChain的类通过getChain拿到DocConsumer做文档在内存中的创建索引工作(最外层是DocFieldProcessor),几个接口:

1.updateDocument时实际调用的是:

consumer.processDocument(fieldInfos) => consumer.finishDocument(fieldInfos) => finishDocument(delTerm)

这里finishDocument做了一堆堆del队列和buffer的操作,还不是很明白。

2.deleteDocID仅在更新文档失败时调用

3.prepareFlush拿到FrozenBufferedDeletes,不是很明白

4.flush除了对delete的相关操作外就是准备好SegmentWriteState,调用consumer.flush,最后返回FlushedSegment, 这一步应该不会把del和cfs写入

5.sealsFlushedSegment会写入cfs文件,然后写入del文件

脉络是比较清晰的,但是要理解其中的做法,还要读一下DocumentsWriterDeleteQueue,然后是DocFieldProcessor。

0 0