找了网上资料看到关于Occur.SHOULD,Occur.MUST的用法都只是说了定义,即Occur.SHOULD表示或的关系,取查询并集,Occur.MUST表示与的关系,取查询交集,但是当我实际操作时,发现Occur.SHOULD除了取并集,一些无关的doc也被查出来了,郁闷,多方查询资料终于搞定了,自己随手记录一下
需要建两个BooleanQuery对象,如query,query2,先将需要用Occur.SHOULD的条件加入query2,再将query2 用Occur.MUST加入query,最后用query查询就可以了
代码:
BooleanQuery query = new BooleanQuery();
BooleanQuery query2 = new BooleanQuery();
String biddingUids = null;
EmailInfo emailInfo = emailInfoService.getEmailInfoByUserUid(user.getUniqueId());
biddingUids = emailInfo.getBiddingInformationUids();
if (StringUtils.isNotBlank(biddingUids)) {
String biArr[] = biddingUids.split(",");
for (String bi : biArr) {
TermQuery from = new TermQuery(new Term("from", bi));
query2.add(from, Occur.SHOULD);
}
query.add(query2, Occur.MUST);
}
// 设定具体的搜索词
query.add(nrq, Occur.MUST);
query.add(contentParser.parse(keywords), Occur.MUST);