7、学习Lucene3.5之IndexReader和IndexWriter注意事项
2018-02-06 20:52
411 查看
(1)IndexReader
一般全局唯一,无需关闭。在搜索索引时,创建IndexSearcher对象即可,关闭IndexSearcher即可
(2)IndexWriter
一般全局唯一,无需关闭。在搜索索引时,创建IndexSearcher对象即可,关闭IndexSearcher即可
/** * 创建创建读索引工具:IndexReader * 问题:若IndexReader全局唯一,则当我们在搜索索引的过程中,索引发生改变(比如:用IndexWriter删除某个索引),但是搜 * 索到的索引并没有改变? * 原因:因为IndexReader全局唯一,它始终读取的是最开始创建的索引。 * 解决办法: * 使用IndexReader.openIfChanged(IndexReader oldReader)方法,来读取最新的索引 * IndexReader.openIfChanged():若IndexReader打开后,索引发生了变化,则返回一个新的IndexReader,否则返回null */ /** * 创建IndexSearcher对象 */ public IndexSearcher createIndexSearcher(){ try { if (indexReader == null){ indexReader = IndexReader.open(directory); } else { /** * IndexReader.openIfChanged(IndexReader oldReader)方法解析: * 若IndexReader打开后,索引发生了变化,则返回一个新的IndexReader,否则返回null */ IndexReader ir = IndexReader.openIfChanged(indexReader); if (ir != null){ //将原来的indexReader关闭 indexReader.close(); indexReader = ir; } } } catch (IOException e) { e.printStackTrace(); } return new IndexSearcher(indexReader); }
(2)IndexWriter
/** * 创建创建写索引工具:IndexWriter * 注意:若IndexWriter也是全局唯一(单例模式),则在使用IndexWriter时无需关闭 * 问题:若IndexWriter使用完毕之后不关闭,那么会导致新建的索引没有生效? * 解决办法:使用indexWriter.commit()方法提交对索引的更改! */ public IndexWriter createIndexWriter(){ IndexWriter indexWriter = null; try { IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35)); //设置创建索引的策略为:每次都重新创建索引:IndexWriterConfig.OpenMode.CREATE // indexWriterConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE); //创建写索引工具 indexWriter = new IndexWriter(directory,indexWriterConfig); } catch (IOException e) { e.printStackTrace(); } return indexWriter; }
相关文章推荐
- lucene笔记____IndexReader和IndexWriter注意事项
- lucene管理IndexReader和IndexWriter的最佳实践
- Lucene IndexReader,IndexWriter,IndexSearcher 缓存应用
- lucene3.0_IndexWriter基础使用及注意事项
- Lucene中删除索引是用IndexWriter还是用IndexReader
- lucene3.0_和IndexWriter有关的几个参数设置及重建索引注意事项
- FPGA的学习及注意事项
- Linux学习(三):删除命令rm的注意事项
- DDR 注意事项、学习要点及其总结
- C++ Primer学习笔记:引用的使用注意事项
- c++ standard library 学习笔记-auto_ptr<T> 注意事项
- lucene3.0_IndexSearcher的基础使用及注意事项
- MySQL学习笔记--触发器的创建与删除及使用注意事项
- 嵌入式linux入门之c语言学习注意事项总结(二)
- IndexWriter基础使用及注意事项
- [libjingle学习笔记]编译注意事项
- lucene的IndexReader的初始化过程
- 一、Linux 学习注意事项
- Markdown学习笔记-----一些注意事项
- z-index使用注意事项