3

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

1 回答 1

1

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

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

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

于 2013-08-18T08:45:45.767 回答