Java Lucene (3):锁机制
来源:互联网 发布:在线下载软件 编辑:程序博客网 时间:2024/06/07 10:05
java lucene 技术(3) : 锁机制
3.1锁机制
经典之作”Lucene in action”中,在涉及到lucene锁机制时,书中给出了一个案例,它告诉我们在不关闭前一个IndexWriter的情况下,不可以允许第二个IndexWriter对索引文件进行操作。笔者在对这个例子亲自测试之后,发现书中显示的报错信息只在Lucene
public class CreatLock {
private Directory dir;
protected void setUp() throws IOException{
String indexdir = System.getProperty("java.io.tempdir","tmp")+
System.getProperty("file.separator")+"index";
dir = FSDirectory.getDirectory(indexdir,true);
}
public void testWriteLock() throws IOException{
IndexWriter writer1= null;
IndexWriter writer2 = null;
try{
IndexWriter writer1= new IndexWriter(dir,new SimpleAnalyzer(), true);
IndexWriter writer2 = new IndexWriter(dir,new SimpleAnalyzer(),true);
System.out.println(“lucene
}
catch(IOException e){
System.out.println(e.getMessage());
}
}
Public static void main(String args[]){
CreatLock cl = new CreatLock();
cl.setUp();
cl. testWriteLock();
}
}
读者可以将此程序分别在Lucene
导致Lucene
通过这个例子,我们可以了解到:Lucene在同一时刻对只允许执行单一进程的所有代码段中,Lucene都创建了基于文件的锁,以此来避免误用Lucene 的API造成对索引的损坏。既然提到了锁机制,就不得不提到Lucene并发性问题了。
3.2并发性
通过一个表格,看看Lucene的并发性规则吧。
操作
是否允许
对同一个索引运行多个并行的搜索进程
允许
对一个正在生成、被优化或正在与另一索引合并的索引运行多个并行的搜索进程,或该索引正在进行删除、更新文档等操作时,对索引运行多个并行的搜索进程
允许
对同一个索引用多个IndexWriter对象执行添加、更新文档的操作
不允许
当一个从索引中删除文档的IndexReader对象没有成功关闭时,打开一个IndexWriter对象用于在这个索引中添加新的文档
不允许
IndexWriter对象向索引中添加新文档后,未成功关闭;在此之后,打开一个IndexReader对象用于从这个索引中删除文档
不允许
为了避免对索引文件造成损坏,我们需要遵循这些特定的规则。这类问题通常会在web应用程序中突显出来。因为web应用程序是同时为多个请求而服务的。
- Java Lucene (3):锁机制
- lucene-索引锁机制
- lucene的锁机制write.lock
- 深入 Lucene 索引机制
- 深入 Lucene 索引机制
- 深入 Lucene 索引机制
- 深入 Lucene 索引机制
- 深入 Lucene 索引机制
- 深入 Lucene 索引机制
- Lucene:评分机制
- lucene lock 机制
- 深入 Lucene 索引机制
- 深入 Lucene 索引机制
- 深入 Lucene 索引机制
- 深入 Lucene 索引机制
- 深入 Lucene 索引机制
- 深入 Lucene 索引机制
- 深入 Lucene 索引机制
- ASP.NET技术的学习顺序问题
- 我是程序员~~(转自CSDN-.ASP.NET)
- js技巧收集(200多个)(2)
- js技巧收集(200多个)(3)
- mysql表类型MyISAM和InnoDB比较
- Java Lucene (3):锁机制
- js技巧收集(200多个)(4)
- VB改变窗体的透明度
- 成年人改名字要哪些步骤和手续?
- js技巧收集(200多个)(5)
- js技巧收集(200多个)(6)
- 平淡生活:偶像的倒掉
- JavaScript和ASP.NET的传值
- js技巧收集(200多个)(7)