lucene lock 机制

发布时间:2017-6-22 22:08:40 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"lucene lock 机制",主要涉及到lucene lock 机制方面的内容,对于lucene lock 机制感兴趣的同学可以参考一下。

lucene lock 机制 分类: java 2007-04-12 18:16 3005人阅读 评论(0) 收藏 举报 luceneconcurrencylockingsearch多线程merge lucene中的同步机制(lucene locking mechanism)及规则(Concurrency rules) 1、多个只读操作都可以并发,可以是多线程的或者是平行的搜索同一个索引。 2、当索引文件被改变的时候,只读操作同样支持并发。也就是说当你优化索引或者是往索引中添加或者是更新删除索引中的documents,只读操作仍然是允许的(可以继续search)。 3、同一时间只允许一个读写操作。索引在同一时间只能被一个IndexWriter或者IndexReader所打开。 下图是可以当有IndexWriter或者IndexReader在使用的时候可以执行的操作的表格,X号的表示不能执行 从上面的表格可以看出对索引进行操作是不会终止查询和读取索引的,但在实际使用中会影响到查询的效率。如何有线程在不段的做增量索引的话可以将IndexWriter的mergeFactor和maxBufferedDocs的值设置的大些,这样会降低io操作并且不会频繁的merge,另外可以自定义optimize的时间,保证search的效率。 指定lock文件存放位置 lucene中lock files的默认是由java.io.tempdir的系统属性来制定的。通常linux下是在/tem/,window下是在C:/Documents and Settings//Local Settings/Temp下。 我们可以通过java -Dorg.apache.lucene.lockDir=<% path %> 来制定lock files的存放位置。 lucene目前有write.lock和commit.lock两种。 write.lock是在对索引文件进行修改的时候生成的,这个时候IndexWriter的操作或者IndexReader 删除Documents, 取消删除都会抛出异常。 commit.lock是在segments文件被读取或者合并的时候生成的。当IndexReader 读取索引文件之前会获得commit.lock,当segments被读取完毕的时候会释放。IndexWriter在添加文档或者合并索引的时候同样会获得commit.lock 可以用IndexReader的 isLocked来判读索引文件是否被锁,或者unlock方法来解锁 static boolean isLocked(String directory) static void unlock(Directory directory)  

上一篇:[leet code] Validate Binary Search Tree
下一篇:

相关文章

关键词: lucene lock 机制

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。