lucene的锁机制write.lock
来源:互联网 发布:旅游网站数据库设计 编辑:程序博客网 时间:2024/06/01 23:53
lucene的锁机制,首先讲对于indexWriter的只能创建一次,一但建立了indexWriter对象系统会分配锁(write.lock)给他.
由此我的思路是新建一个luceneUtil 使用同步方法 来实现。
org.spache.lucene.store.LockoBtainFailedException:Lock obtain time .out 异常就是应为锁机制而应发的。
或者是由于你indexWriter.close()忘记写(finally{indexWriter.close()})
代码:
public synchronized static void getIndexWriter(String indexPosition,Document doc) throws IOException{
IndexWriter indexWriter = null;
try{
Directory director = FSDirectory.open(new File(indexPosition));
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_47, new IKAnalyzer(false));
indexWriter = new IndexWriter(director, indexWriterConfig);
indexWriter.addDocument(doc);
indexWriter.forceMerge(1);// 优化
} catch (IOException e) {
e.printStackTrace();
}finally{
indexWriter.close();
}
}
既然说了indexWriter也说一下IndexReader,为了提高和充分利用资源,可以共享一个indexRreader 。代码如下。
注意:如果修改和新建时请重新创建IndexReader.
代码:
private static Hashtable<String, IndexReader> shapeMap = new Hashtable<String, IndexReader>();
public static IndexSearcher loadCache( String id,String path) {
IndexSearcher searcher = null;
try {
MultiReader mreader=null;
if(shapeMap.get(id) == null){
FSDirectory open = FSDirectory.open(new File(path+File.separator+id ));
shapeMap.put(id,DirectoryReader.open(open));
}
if(shapeMap.get("00") == null){
FSDirectory open00 = FSDirectory.open(new File(path+File.separator+"00" ));
shapeMap.put("00",DirectoryReader.open(open00));
}
if("00".equals(id)){
searcher=new IndexSearcher(shapeMap.get(id));
}else {
mreader=new MultiReader(shapeMap.get(id),shapeMap.get("00"));//合并索引文件
searcher=new IndexSearcher(mreader);
}
return searcher;
} catch (Exception e) {
e.printStackTrace();
}
return searcher;
}
以上从属个人思路,如有不同观点和想法请评论一下,指正。希望大家支持一下。
如果想了解lucene可以看 Lucene实战(第2版)_中文版.pdf 地址:
http://pan.baidu.com/s/1i587t8x
由此我的思路是新建一个luceneUtil 使用同步方法 来实现。
org.spache.lucene.store.LockoBtainFailedException:Lock obtain time .out 异常就是应为锁机制而应发的。
或者是由于你indexWriter.close()忘记写(finally{indexWriter.close()})
代码:
public synchronized static void getIndexWriter(String indexPosition,Document doc) throws IOException{
IndexWriter indexWriter = null;
try{
Directory director = FSDirectory.open(new File(indexPosition));
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_47, new IKAnalyzer(false));
indexWriter = new IndexWriter(director, indexWriterConfig);
indexWriter.addDocument(doc);
indexWriter.forceMerge(1);// 优化
} catch (IOException e) {
e.printStackTrace();
}finally{
indexWriter.close();
}
}
既然说了indexWriter也说一下IndexReader,为了提高和充分利用资源,可以共享一个indexRreader 。代码如下。
注意:如果修改和新建时请重新创建IndexReader.
代码:
private static Hashtable<String, IndexReader> shapeMap = new Hashtable<String, IndexReader>();
public static IndexSearcher loadCache( String id,String path) {
IndexSearcher searcher = null;
try {
MultiReader mreader=null;
if(shapeMap.get(id) == null){
FSDirectory open = FSDirectory.open(new File(path+File.separator+id ));
shapeMap.put(id,DirectoryReader.open(open));
}
if(shapeMap.get("00") == null){
FSDirectory open00 = FSDirectory.open(new File(path+File.separator+"00" ));
shapeMap.put("00",DirectoryReader.open(open00));
}
if("00".equals(id)){
searcher=new IndexSearcher(shapeMap.get(id));
}else {
mreader=new MultiReader(shapeMap.get(id),shapeMap.get("00"));//合并索引文件
searcher=new IndexSearcher(mreader);
}
return searcher;
} catch (Exception e) {
e.printStackTrace();
}
return searcher;
}
以上从属个人思路,如有不同观点和想法请评论一下,指正。希望大家支持一下。
如果想了解lucene可以看 Lucene实战(第2版)_中文版.pdf 地址:
http://pan.baidu.com/s/1i587t8x
阅读全文
1 0
- lucene的锁机制write.lock
- lucene lock 机制
- lucene lock 机制
- 读写锁(read-write lock)机制-----多线程同步问题的解决
- 读写锁(read-write lock)机制-----多线程同步问题的解决
- 读写锁(read-write lock)机制-----多线程同步问题的解决
- 读写锁(Read-Write Lock)的一种实现
- lucene 错误 no segments* file found in org.apache.lucene.store.FSDirectory@ write.lock
- java锁机制,LOCK的实现类
- Linux内核同步机制之二-----Read/Write spin lock
- Lucene的评分机制
- Lucene的评分机制
- lucene 的评分机制
- 轻型读写锁(Slim read write lock)
- 读写锁(Read-Write Lock)
- JVM锁机制-Lock .
- Lock obtain timed out: Lock@的解决方法(lucene)
- Lock obtain timed out: Lock@的解决方法(lucene)
- java的FrenameTo(File)方法
- 使用淘宝 NPM 镜像
- 欢迎使用CSDN-markdown编辑器
- 11.9-全栈Java笔记: 线程并发协作(生产者/消费者模式)
- DTCMS在Windows虚拟主机下怎么配置Url地址伪静态显示
- lucene的锁机制write.lock
- LSM树(Log-Structured Merge Tree)存储引擎
- mybatis在xml文件中处理小于等于号的方法
- 理解ES6: Promises
- 关系型数据库的ACID
- Jquery的append()和appendTo()区别
- mongodb
- 初步了解PE文件格式(上)
- Android图表控件MPAndroidChart——柱状图BarChart的使用(多条柱状图)