你的查询可以被改写为:
"... WHERE (isprivate = false) OR (userid = 1)"
所以,你可以有下面的代码(考虑您的值存储为字符串):
BooleanQuery booleanQuery = new BooleanQuery();
booleanQuery.Add(new TermQuery(new Term("isprivate", "true")), BooleanClause.Occur.SHOULD);
booleanQuery.Add(new TermQuery(new Term("userid", "1")), BooleanClause.Occur.SHOULD);
如果你想做更复杂的查询,那么你可以添加一个布尔查询作为一个子句到另一个r布尔查询:
// Creating "and" clause
BooleanQuery booleanQueryInner = new BooleanQuery();
booleanQueryInner.Add(new TermQuery(new Term("isprivate", "false")), BooleanClause.Occur.MUST);
booleanQueryInner.Add(new TermQuery(new Term("userid", "1")), BooleanClause.Occur.MUST);
// Creating "or" clause
BooleanQuery booleanQueryMain = new BooleanQuery();
booleanQueryMain.Add(new TermQuery(new Term("isprivate", "true")), BooleanClause.Occur.SHOULD);
booleanQueryMain.Add(booleanQueryInner, BooleanClause.Occur.SHOULD);
你能帮我解决“子句”布尔查询吗?在此先感谢 – 2014-09-04 07:43:53
@NicholasBuusRasmussen,看我编辑 – Norfolc 2014-09-04 07:49:01
这是完美的 - 感谢您的帮助 – 2014-09-04 08:27:54