Lucene 索引的并发读写

来源:互联网 发布:下载有声小说的软件 编辑:程序博客网 时间:2024/06/13 21:06
lucene能够很好地支持多线程/进程 访问。

1.并发读

一个索引可以被多个进程的IndexReader打开。一个进程中,推荐IndexReader被单例多线程使用。

IndexReader类不仅是线程安全的,还是线程友好的,即友好地支持并发访问,代码中同步代码(synchronized)块并不多。

2.单独写

对于一个索引来说,一次只能打开一个IndexWriter。

2.1 索引锁机制

Lucene采用了基于文件的锁。如果锁文件write.lock存在于目录内,那么创建新的IndexWriter就会失败,抛出LockObtainFailedException异常。
lucene允许我们修改锁的实现,通过调用Directory,setLockFactory()传入自定义的子类。

3.边读边写

IndexReader可以在IndexWriter正在修改索引时被打开。每个IndexReader对象将向索引展示自己被打开的时间点。该对象只有在Writer提交修改后才感知到索引变化。
打开IndexReader'时采用参数create=true,reader就会持续检查索引的情况。
0 0