日期:2014-05-17  浏览次数:20769 次

lucene中关于IndexReader类的问题
领导让我把项目中搜索的模块重新写一下,要从lucene2.9升级到4.5
其中有两段代码
代码片段1:
FSDirectory fsdir = FSDirectory.getDirectory(indexSaveDirectory);
if (IndexReader.isLocked(fsdir)) {
IndexReader.unlock(fsdir);
}
代码片段2:
if(IndexReader.indexExists(Domain.PRODUCT_INDEX_PATH)) {
    productSearcherFsd = new IndexSearcher(Domain.PRODUCT_INDEX_PATH);
    productSearchFdsDir = FSDirectory.getDirectory(Domain.PRODUCT_INDEX_PATH);
}
请问下,在4.5版本中,IndexReader类的isLocked,unlock和indexExists方法都删除了,有没有其他的替代方法,谢谢
lucene

------解决方案--------------------
遇到这种情况,通常是看api,首先看lucene4.5的api,通常情况下,一个方法过时了,api会标明“Deprecated”,然后会告诉你用替代的方法。但是lucene4.5的api中没有了,那你就看低版本的lucene的api,我这里看的是2.9.4的api  http://lucene.apache.org/core/2_9_4/api/core/org/apache/lucene/index/IndexReader.html#indexExists(java.io.File)。
IndexReader.isLocked的替代方法是IndexWriter.isLocked(Directory)
IndexReader.unlock的替代方法是IndexWriter.unlock(Directory)
IndexReader.indexExists(String directory)和indexExists(File directory)的替代方法是IndexReader.indexExists(Directory)