たとえば、インデックスに 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 はインデックス内のすべてのドキュメントを削除しました...この用語に一致するドキュメントだけでなく...停止方法がわかりません。これだけ消したい!
私は何を間違っていますか?