2016-05-03 11 views
1

私の古いインデックスを保持しません。LuceneのApacheは私がインターネットでこの例を見つけた

Lucene Constants.java

public class LuceneConstants { 
public static final String CONTENTS = "contents"; 
public static final String FILE_NAME = "filename"; 
public static final String FILE_PATH = "filepath"; 
public static final int MAX_SEARCH = 10; 

}

これは私がそれらを使用する方法です:

public static void main(String[] args) throws IOException, ParseException { 
    { 
     // First file 
     Indexer indexer = new Indexer("index"); 
     indexer.createIndex("f1.txt"); 
     indexer.close(); 
     Searcher searcher = new Searcher(Constante.DIR_INDEX.getValor()); 
     TopDocs hits = searcher.search("Art. 1°"); 
     for (ScoreDoc scoreDoc : hits.scoreDocs) { 
      org.apache.lucene.document.Document doc = searcher.getDocument(scoreDoc); 
      String nomeArquivo = doc.get(LuceneConstants.FILE_PATH); 
      System.out.println(nomeArquivo); 
     } 
    } 
    System.out.println("-----"); 
    { 
     // Second file 
     Indexer indexer = new Indexer("index"); 
     indexer.createIndex("f2.txt"); 
     indexer.close(); 
     Searcher searcher = new Searcher(Constante.DIR_INDEX.getValor()); 
     TopDocs hits = searcher.search("Art. 1°"); 
     for (ScoreDoc scoreDoc : hits.scoreDocs) { 
      org.apache.lucene.document.Document doc = searcher.getDocument(scoreDoc); 
      String nomeArquivo = doc.get(LuceneConstants.FILE_PATH); 
      System.out.println(nomeArquivo); 
     } 
    } 
} 

それは "// 2番目のファイル" のラインまで完全に正常に動作します。

私の2番目のファイルのインデックスを作成した後、私は最初のファイルで何も見つけることができません。

Indexerのインスタンスを作成し、この同じインスタンスを使用してf1.txtとf2.txtのインデックスを作成し、それを閉じると、私はそれが望むように動作します。問題は、アプリケーションを閉じて開いて別のファイルのインデックスを作成すると、f1.txtとf2.txtの両方が失われるということです。

Luceneに新しいファイルのインデックスを作成する際に常に以前のインデックスを保持させる方法はありますか?

答えて

1

旧バージョンのLucene(3.6以下)を使用しているようですか?

IndexWriter constructorの3番目の引数は、新しいインデックスを作成するか既存のインデックスを開くかを指定します。 trueに設定すると、指定されたディレクトリに既存のインデックスが存在する場合は上書きされます。既存のインデックスを上書きせずに開く場合は、false

writer = new IndexWriter(indexDirectory, new StandardAnalyzer(Version.LUCENE_36), false, IndexWriter.MaxFieldLength.UNLIMITED); 
+0

となりました。ありがとうございます。そして、はい、私は3.6.2を使用しています、私は現在のバージョンを使用できるかどうかを確認します。 – Bolaum

関連する問題