我正在尝试删除文档,但我无法以任何方式删除它。一个特定的事情与我的例子有关,我使用RAMDirectory作为目录,我使用的是Lucene.Net 3.0.3版本。我的例子如下。
public void DeleteIndex(IndexWriter writer,IndexSearcher searcher)
{
var boolQuery = new BooleanQuery();
boolQuery.Add(new TermQuery(new Term("Id", "2")), Occur.MUST);
boolQuery.Add(new TermQuery(new Term("Type", "Product")), Occur.MUST);
writer.DeleteDocuments(boolQuery);
writer.Optimize(true);
//writer.Flush(true, true, true);//even this line doesn't help
writer.Commit();
var result = searcher.Search(boolQuery,1); // I can access deleted doc in search results
}
答案 0 :(得分:1)
在writer.Commit()之后;你需要重新打开你的搜索者。
IndexReader newReader = YOURIndexReader.Reopen(true);
searcher= new IndexSearcher(newReader );
...
这里的代码示例只是示例,而不是工作代码(!),我相信你可以从这里继续......