【发布时间】:2014-05-20 23:41:54
【问题描述】:
我正在尝试从查询结果中过滤掉一些项目。
最终结果应仅包含 Private 设置为 false 或如果为 true,则属于提供的隐私组的结果
假设基本查询结果是这样的
ID Name Private PrivacyGroup
1 Yellow false
2 Red true 1
3 Blue true 2
4 Orange true 1
5 Black false
6 Green true 3
我尝试了各种过滤器,但这似乎是我认为应该有效的过滤器,但它不是:
BooleanQuery bq = new BooleanQuery();
BooleanQuery privacyQuery = new BooleanQuery();
BooleanQuery privacyFinalQuery = new BooleanQuery();
privacyFinalQuery.add(new TermQuery(new Term("Private", "true")),Occur.MUST);
for(String i : suppliedGroups){
privacyQuery.add(new TermQuery(new Term("PrivacyGroup", i)), Occur.SHOULD);
}
privacyFinalQuery.add(groupQuery, Occur.MUST_NOT);
bq.add(privacyFinalQuery, Occur.MUST_NOT);
return new CachingWrapperFilter(new QueryWrapperFilter(bq));
这导致
(-(+Private:true -(PrivacyGroup:1 PrivacyGroup:2)))
最终结果是 0 个结果,我期望:1,2,3,4,5
有什么建议吗?
【问题讨论】:
标签: lucene