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 に答える