lucene的多线程索引

lucene中存在的两种锁, 

第一种, 针对每个索引文件目录有一个锁, 该锁保证了只有一个IndexWriter实例写该目录

第二种, 在每个IndexWriter实例下, 有一个ThreadState对象池, 默认大小为8(该对象池也被称为线程池, 但实际上他只是一个锁池), 具体参见点击打开链接

 

lucene的多线程索引可以分为三类, 

第一种, 单线程单目录索引, 该方式只会使用一个IndexWriter实例, 每个IndexWriter实例下只使用一个ThreadState对象

第二种, 多线程单目录索引, 该方式只会使用一个IndexWriter实例, 每个IndexWriter的实例下使用的ThreadState对象数取决于线程个数, 线程个数即ThreadState对象池大小

第三种, 多线程多目录索引, 有几个目录则使用几个IndexWriter实例

 

在使用多线程索引时, 每个线程(DocWriterPerThread) 各生成一个segment

 

demo: https://gitee.com/zhangyu_123123/lucene-multithread

posted @ 2017-12-16 13:55  車輪の唄  阅读(21)  评论(0编辑  收藏  举报  来源