使用IndexReader.repen提高搜索速度
1,使用indexreader創建indexsearcher. 2,indexsearcher在使用完了以后不要關閉. 3.使用indexreader.isCurrent()判斷索引是否被indexwriter改動. 4,如果索引被改動,indexsearcher.close()先前那個,然后new indexsearcher(indexreader).
傳string給searcher,searcher會維護一個內部的reader,當本次搜索結束后reader會被關掉.如果使用reader構造,reader在本次搜索結束后不會被關掉,除非你自己調用reader.close();所以用reader去構造searcher,然后通過searcher.getIndexReader()獲取當前的reader,用reader.iscurrent()判斷索引文件是否變化了,如果索引文件已經更改,則把當前的searcher關閉,然后再利用reader.reopen()方法獲取新的reader,再創建一個searcher,像這樣,new IndexSearcher(reader.reopen());
代碼:
?一、indexSearcher=new IndexSearcher(IndexReader.open(indexPath));
二、/* ??? * 先獲取reader,如果索引文件已經變化,關閉當前indexSearcher,然后以重新獲取的indexReader ??? * 作為參數new一個新的indexSearcher實例 ??? */ ??? IndexReader indexReader=indexSearcher.getIndexReader();//獲取當前的indexReader ??? if(!indexReader.isCurrent()){//判斷是否有索引更新 ????? ????? // 如果有索引更新,先關閉當前的indexSearcher ???? indexSearcher.close(); ???? //利用indexReader.reopen()獲取新的indexReader,并作為IndexSearcher的參數創建一個新的indexSearcher ???? indexSearcher=new IndexSearcher(indexReader.reopen()); ??? }
轉載于:https://www.cnblogs.com/zhwl/p/3483856.html
總結
以上是生活随笔為你收集整理的使用IndexReader.repen提高搜索速度的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 楚乔传东方忌是什么人 和楚乔又有怎样的关
- 下一篇: 幻塔白鲸岛咖啡支线怎么完成
