c# - Lucene.NET Delete.Documents 对于 BooleanQuery 没有按预期工作
问题描述
当我尝试使用 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”,我是否以错误的方式使用它?
解决方案
事实证明,我不应该在提交之前调用 Clauses.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();
推荐阅读
- regex - 已解决:哪些 RegexExtract 参数可以提取具有不同长度和格式的数字
- azure-powershell - Powershell 帮助比较
- python - X 轴没有像数据框中那样正确显示
- javascript - Discord.js v12 如何将新创建的角色分配给用户?
- dart - 引用字符串的列表
- sql-server - SQL Server 删除子字符串,直到逗号或右括号
- tomcat - RESTeasy ContainerRequestFilter 部署到tomcat时不包含用户信息(容器管理身份验证)
- flutter - Flutter:我想访问 setstate 的更改值,当我访问它时它没有显示新的状态值
- android - Android - 通过 Intent 启动另一个应用程序时保持演示文稿显示
- python - 输出: [
]