Lucene.NET Delete.文档无法按预期方式为BooleanQuery工作

bq3bfh9z  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(136)

当我尝试通过带有Occur.Should的布尔查询删除文档时,没有任何内容被删除

var query = new BooleanQuery();
query.Add(new TermQuery(new Term("Field", "A")), Occur.Should);
query.Add(new TermQuery(new Term("Field", "B")), Occur.Should);
writer.DeleteDocuments(query);
query.Clauses.Clear();
writer.Commit();

我希望“字段”值为“A”或“B”的文档将从索引中删除,但当我从索引中获取文档时,仍然得到“A”和“B”,我是否以错误的方式使用了它?

o2g1uqev

o2g1uqev1#

事实证明,我不应该在提交之前调用Clauses.Clear()。这个过程将清除所有布尔子句。删除clear部分,一切都正常。

var query = new BooleanQuery();
query.Add(new TermQuery(new Term("Field", "A")), Occur.Should);
query.Add(new TermQuery(new Term("Field", "B")), Occur.Should);
writer.DeleteDocuments(query);
writer.Commit();

相关问题