0

ドキュメントをインデックスに追加しようとしていますが、次の関数を実行しようとすると、 が返さnumDocs1、前のドキュメントが上書きされます! 私は何か間違ったことをしていますか?私は別のプロジェクトで同じことをしましたが、うまくいきました!

    IndexWriter writer;
    Directory dir = FSDirectory.open(new File("/home/omid/Desktop/Indexes"));
    writer = new IndexWriter(dir, new StandardAnalyzer(Version.LUCENE_34), true, IndexWriter.MaxFieldLength.UNLIMITED);
    Document doc = new Document();
    doc.add(new NumericField("id", Field.Store.YES, false).setIntValue(writer.numDocs()));
    doc.add(new NumericField("day", Field.Store.YES, false).setIntValue(13));
    doc.add(new NumericField("month", Field.Store.YES, false).setIntValue(1));
    doc.add(new NumericField("year", Field.Store.YES, false).setIntValue(1387));
    doc.add(new Field("content", new FileReader(new File(filename)), Field.TermVector.YES));
    doc.add(new Field("address", filename,Field.Store.YES, Field.Index.NOT_ANALYZED));
    writer.addDocument(doc);
    writer.close();
    mes = "Indexed Filename: " + filename;
    mes = mes + "<BR>Number of docs: " + writer.numDocs();

3.4 の lucene 3.0 から変更されたものはありますか、それとも wr を実行していますか?

4

1 に答える 1

2

IndexWriterコンストラクターの3 番目の引数は、インデックスを作成するかどうかを指定します。あなたcreate=trueの例のように、古いインデックスが削除され、新しいインデックスに置き換えられた場合。false の場合、既存のインデックスに追加されます。

また、このスタイルのIndexWriterコンストラクターは 3.4 で非推奨になり、4.x にはありません。代わりにIndexWriterConfigをに渡す方がはるかに良いでしょう。IndexWriter

于 2013-08-13T16:08:33.910 に答える