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