21、学习Lucene3.5索引之近实时搜索常用工具类
2018-03-22 10:05
489 查看
public class LuceneContext { /** * 将该类设置成单例模式,向外只开放轻量级的接口(诸如:IndexSearcher), * 重量级的变量(诸如:NRTManager、SearcherManager)全部设成私有访问权限. */ private static LuceneContext luceneContext; private static final String PATH = "e:/lucene/index03"; private static Analyzer analyzer; private static Directory directory; private static IndexWriter indexWriter; private static Version version; private static NRTManager nrtManager; private static SearcherManager searcherManager; private LuceneContext(){ } public static LuceneContext getInstance(){ if (luceneContext == null){ init(); luceneContext = new LuceneContext(); } return luceneContext; } private static void init(){ try { directory = FSDirectory.open(new File(PATH)); version = Version.LUCENE_35; analyzer = new MMSegAnalyzer(); indexWriter = new IndexWriter(directory, new IndexWriterConfig(version, analyzer)); nrtManager = new NRTManager(indexWriter, Executors.newCachedThreadPool(), new SearcherWarmer() { @Override public void warm(IndexSearcher s) throws IOException { System.out.println("reopen index"); } }); searcherManager = nrtManager.getSearcherManager(true); NRTManagerReopenThread reopenThread = new NRTManagerReopenThread(nrtManager, 5.0, 0.025); //设置为后台进程,进程退出,该线程就关闭 reopenThread.setDaemon(true); reopenThread.setName("NRTManagerReopenThread"); reopenThread.start(); } catch (IOException e) { e.printStackTrace(); } } /** * 获取IndexSearcher */ public IndexSearcher getIndexSearcher(){ return searcherManager.acquire(); } /** * 释放IndexSearcher */ public void releaseIndexSearcher(IndexSearcher indexSearcher){ try { if (indexSearcher != null){ searcherManager.release(indexSearcher); } } catch (IOException e) { e.printStackTrace(); } } /** * 提交更新后的索引 */ public void commitIndex(){ try { indexWriter.commit(); } catch (IOException e) { e.printStackTrace(); } } /** * 获取NRTManager(对索引的增删改查需要用到NRTManager) */ public NRTManager getNRTManager(){ return nrtManager; } }
相关文章推荐
- 20、学习Lucene3.5索引之近实时搜索
- lucene3.5学习笔记02--创建索引和建立搜索
- 11、学习Lucene3.5索引搜索之分页显示
- 8、学习Lucene3.5索引搜索之TermRange
- 一步一步跟我学习lucene(8)---lucene搜索之索引的查询原理和查询工具类(支持分页)示例
- 17、学习Lucene3.5索引之使用Filter(过滤器)搜索
- 19、学习Lucene3.5索引之高亮搜索
- 9、学习Lucene3.5索引搜索之其他搜索
- 10、学习Lucene3.5索引搜索之QueryParser
- 索引搜索与字符串查找的比较(Lucene学习笔记之一)
- 《Lucene in Action》(第二版) 第一章节的学习总结 ---- 用最少的代码创建索引和搜索
- 我对Lucene3.5实时搜索的一点儿整理
- 搜索学习入门--Lucene初体验(Lucene索引的增删改查)
- 4、学习Lucene3.5之索引删除、更新
- 13、学习Lucene3.5索引之通过TokenStream显示分词
- lucene学习笔记(八)lucene实时搜索
- 关于lucene的IndexSearcher单实例,对于索引的实时搜索
- 18、学习Lucene3.5索引之自定义评分
- 5、学习Lucene3.5之索引加权操作
- lucene学习--创建索引与搜索