首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Lucene查询类IndexSearch管理有关问题

2012-12-30 
Lucene查询类IndexSearch管理问题这周接到的任务是对搜索引擎全文检索的优化,又遇到一个问题,请大家帮忙。

Lucene查询类IndexSearch管理问题
    这周接到的任务是对搜索引擎全文检索的优化,又遇到一个问题,请大家帮忙。
    请问您们是怎么管理lucene查询类IndexSearch的关闭,
     网上有一篇外文写道:关于检索的优化,其中提到对于IndexSearch最好只有一个,因为如果多次构建该对象则引起多次IO操作在很大程度上影响效率,可如果在程序中只有开启而没有关闭那会出现新增的索引要重启web服务器才可检索到。
     该怎么解决这个问题。
     情况一:
     其中在每个检索方法里构建代码如下:
Directory directory = FSDirectory.getDirectory(DocumentIndexerImpl.getIndexSavePath());

IndexSearcher isearcher = new IndexSearcher(directory);

IndexReader reader = IndexReader.open(directory);
    在检索完之后有:
                            isearcher.close();
                         reader.close();   
    可会导致每次检索进入这个方法都要进行一次IO操作。
    
    情况二:
     如果我不关闭把    
                            //isearcher.close();
                        // reader.close(); 
    注释掉,则出现新增索引无法检索出来,而用lukeall的工具又可看到新的索引,关闭tomcat,然后再重启tomcat再检索则可检索出来。
     
[解决办法]
用一个静态的IndexReader来搜索,在每次更新(包括添加和删除)时,调用这个IndexReader的reopen()方法.
[解决办法]
G00d

热点排行