我在索引中有两个文档......它们都有字段" 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);
这很好用......我在索引中得到两个文档,它们完美无缺。
但是当我这样做时:
indexWriter.DeleteDocuments(new Term("Id", "ivanstrigo"));
IndexWriter删除了索引中的所有文档...不仅是与该术语匹配的文档...我不知道如何停止。我只想删除这个!
我做错了什么?
答案 0 :(得分:1)
找到答案......在创建IndexWriter时,我在创建新索引时已经“真实”...基本上总是重新创建一个新索引。
现在有效。