1

たとえば、インデックスに 2 つのドキュメントがあります...どちらにも「Id」フィールドがあります。

次に、IndexWritter で DeleteDocuemnts を発行して、最初のアイテムの ID を指定します。

したがって、インデックスを作成します。

var document = new global::Lucene.Net.Documents.Document();
    document.Add(new Field("Content", "content", Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
    document.Add(new Field("Id", "vladanstrigo", Field.Store.YES, Field.Index.NOT_ANALYZED));

var document2 = new global::Lucene.Net.Documents.Document();
    document2.Add(new Field("Content", "content second", Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
    document2.Add(new Field("Id", "ivanstrigo", Field.Store.YES, Field.Index.NOT_ANALYZED));


var directory = FSDirectory.Open("...directory...");
var analyzer = ...GetAnalyzer();

var indexWriter = ...GetWriter();

indexWriter.AddDocument(document);
indexWriter.AddDocument(document2);

これはうまく機能します...インデックスに2つのドキュメントがあり、それらは完璧に機能します。

しかし、私がするとき:

indexWriter.DeleteDocuments(new Term("Id", "ivanstrigo"));

IndexWriter はインデックス内のすべてのドキュメントを削除しました...この用語に一致するドキュメントだけでなく...停止方法がわかりません。これだけ消したい!

私は何を間違っていますか?

4

1 に答える 1

1

答えが見つかりました...IndexWriterを作成するときに、新しいインデックスの作成に「true」がありました...基本的に常に新しいインデックスを再作成しました。

それは今動作します。

于 2012-05-31T09:37:37.070 に答える