无法删除Lucene.Net上的文档

时间:2013-08-18 03:11:50

标签: lucene.net

我正在尝试删除文档,但我无法以任何方式删除它。一个特定的事情与我的例子有关,我使用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
    }

1 个答案:

答案 0 :(得分:1)

在writer.Commit()之后;你需要重新打开你的搜索者。

IndexReader newReader = YOURIndexReader.Reopen(true);
searcher= new IndexSearcher(newReader );
...

这里的代码示例只是示例,而不是工作代码(!),我相信你可以从这里继续......