lucene对单个域多条件检索的问题
我创建的索引域有title,contents,type,deptid,starttime,endtime,createdept,现在我要对索引文件进行检索,type这个域是根据用户拥有的权限增加的,例如一共有4种类型:meet,dcdb,yata,hwgl,某一用户有meet和dcdb的检索权限,那么,type就需要加入"meet"和"dcdb"两个值进行检索,某一用户只有meet的检索权限,那么type就只需要加入一个"meet"值进行检索,应该如何来添加这个检索条件?我的代码只能实现只有一个type值时可以检索出文档,如果是多个type则会将所有type下的文档全部检索出来,下列是我的代码:
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.SHOULD);
}
// 检索标题,正文
if (StringTools.notNull(searchBean.getStrQuery())) {
Query query = MultiFieldQueryParser.parse(searchBean.getStrQuery(),new String[] {"title","contents"},analyzer);
bQuery.add(query, BooleanClause.Occur.MUST);
}
//检索创建单位
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(",");
for(int i=0;i<temp.length;i++){
if(temp.length>1){
QueryParser parser = new QueryParser("type", analyzer);
Query query = parser.parse(temp[i]);
BooleanClause.Occur occur = BooleanClause.Occur.SHOULD;
bQuery.add(query, occur);
}else{
QueryParser parser = new QueryParser("type", analyzer);
Query query = parser.parse(temp[i]);
BooleanClause.Occur occur = BooleanClause.Occur.MUST;
bQuery.add(query, occur);
}
}
}
return bQuery;
}