领导让我把项目中搜索的模块重新写一下,要从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

解决方案 »

  1.   

    遇到这种情况,通常是看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)
      

  2.   

    老版本很久没用了,忘记怎么写了,给你个新版的例子吧。FSDirectory fsdir = FSDirectory.open(new File(path));
                        IndexReader reader = DirectoryReader.open(fsdir);
                        fsdir.close();IndexSearcher searcher = IndexSearcher(reader)