问题已经解决,以下是我的代码:
public BooleanQuery documentParse(Analyzer analyzer, SearchBean searchBean)
throws Exception {
BooleanQuery bQuery = new BooleanQuery();
Term beginTime = null;
Term endTime = null;
// 时间段检索
if (StringTools.notNull(searchBean.getStrStarttime())) {
beginTime = new Term("createdate", searchBean.getStrStarttime());
}
if (StringTools.notNull(searchBean.getStrEndtime())) {
endTime = new Term("createdate", searchBean.getStrEndtime());
}
if (beginTime != null || endTime != null) {
RangeQuery query = new RangeQuery(beginTime, endTime, true);
bQuery.add(query, BooleanClause.Occur.MUST); // 条件为必须完全匹配
// BooleanClause.Occur.MUST
}
// 检索标题,正文
if (StringTools.notNull(searchBean.getStrQuery())) {
Query query = MultiFieldQueryParser.parse(searchBean.getStrQuery(),new String[] {"title","contents","summary"},analyzer);
bQuery.add(query, BooleanClause.Occur.MUST); // 条件为可以模糊匹配
// BooleanClause.Occur.SHOULD
}
//检索创建单位
if (StringTools.notNull(searchBean.getDeptid())) {
QueryParser parser = new QueryParser("createdept", analyzer);
Query query = parser.parse(searchBean.getDeptid());
bQuery.add(query, BooleanClause.Occur.MUST);
}
// 检索所属栏目
if (StringTools.notNull(searchBean.getType())) {
String[] temp = searchBean.getType().split(",");
String type = "";
for(int i=0;i<temp.length;i++){
type += " "+temp[i]; 
}
type = type.substring(1,type.length());
Query query = MultiFieldQueryParser.parse(type,new String[] {"type"},analyzer);
bQuery.add(query, BooleanClause.Occur.MUST);
}
System.out.println(bQuery.toString());  return bQuery;
}