删除与术语不匹配的所有文档?

时间:2014-08-05 17:23:56

标签: lucene lucene.net

我如何匹配所有与lucene或lucene.net中的术语不匹配的文档?

如果我想删除与术语匹配的所有文档,那么很容易:

writer.DeleteDocuments(new Term("SomeParameter", SomeValue));

但我实际上需要做相反的事情(我用唯一的标记标记每个更新的文档,我想删除所有未更新的内容,所以标记与我的标记不同的所有内容,但是这可能是非常不同的事情)

1 个答案:

答案 0 :(得分:1)

您需要一个匹配所有没有该术语的文档的查询,但BooleanQuery不能只包含一个MUST_NOT子句。

但你可以使用以下技巧来绕过这个:

var query = new BooleanQuery();
query.Add(new MatchAllDocsQuery(), Occur.SHOULD);
query.Add(new Term("SomeParameter", someValue), Occur.MUST_NOT);
writer.DeleteDocuments(query);
相关问题