我如何匹配所有与lucene或lucene.net中的术语不匹配的文档?
如果我想删除与术语匹配的所有文档,那么很容易:
writer.DeleteDocuments(new Term("SomeParameter", SomeValue));
但我实际上需要做相反的事情(我用唯一的标记标记每个更新的文档,我想删除所有未更新的内容,所以标记与我的标记不同的所有内容,但是这可能是非常不同的事情)
答案 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);