Lucene 删除所有没有';不匹配的术语?
如何匹配所有与lucene或lucene.net中的术语不匹配的文档 如果要删除与某个术语匹配的所有文档,很容易:Lucene 删除所有没有';不匹配的术语?,lucene,lucene.net,Lucene,Lucene.net,如何匹配所有与lucene或lucene.net中的术语不匹配的文档 如果要删除与某个术语匹配的所有文档,很容易: writer.DeleteDocuments(new Term("SomeParameter", SomeValue)); 但我实际上需要做相反的事情(我用一个唯一的标记标记每个更新的文档,我想删除所有未更新的内容,因此所有标记与我的标记不同的内容,但可能是非常不同的内容)您需要一个匹配所有没有该术语的文档的查询,但是BooleanQuery不能只包含一个MUST\u NOT子句
writer.DeleteDocuments(new Term("SomeParameter", SomeValue));
但我实际上需要做相反的事情(我用一个唯一的标记标记每个更新的文档,我想删除所有未更新的内容,因此所有标记与我的标记不同的内容,但可能是非常不同的内容)您需要一个匹配所有没有该术语的文档的查询,但是
BooleanQuery
不能只包含一个MUST\u NOT
子句
但您可以使用以下技巧绕过此问题:
var query=new BooleanQuery();
Add(新的MatchAllDocsQuery(),occure.SHOULD);
query.Add(新术语(“SomeParameter”,someValue),出现,不能出现);
writer.DeleteDocuments(查询);
希望有一个解决方案,可以坚持使用术语参数,而不使用查询,但我最终还是选择了类似的方法,谢谢!