Lucene 删除所有没有';不匹配的术语?

Lucene 删除所有没有';不匹配的术语?,lucene,lucene.net,Lucene,Lucene.net,如何匹配所有与lucene或lucene.net中的术语不匹配的文档 如果要删除与某个术语匹配的所有文档,很容易: writer.DeleteDocuments(new Term("SomeParameter", SomeValue)); 但我实际上需要做相反的事情(我用一个唯一的标记标记每个更新的文档,我想删除所有未更新的内容,因此所有标记与我的标记不同的内容,但可能是非常不同的内容)您需要一个匹配所有没有该术语的文档的查询,但是BooleanQuery不能只包含一个MUST\u NOT子句

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

如果要删除与某个术语匹配的所有文档,很容易:

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

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

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

但您可以使用以下技巧绕过此问题:

var query=new BooleanQuery();
Add(新的MatchAllDocsQuery(),occure.SHOULD);
query.Add(新术语(“SomeParameter”,someValue),出现,不能出现);
writer.DeleteDocuments(查询);

希望有一个解决方案,可以坚持使用术语参数,而不使用查询,但我最终还是选择了类似的方法,谢谢!