solr group分组排序的问题
我想查询一组数据,这个数据需要分组,我想让分组后的数据按照分组数量升序或者降序排列,如果按照结果中的组数量进行排序呢,//------------分组设置//q=solr...
我想查询一组数据,这个数据需要分组,我想让分组后的数据按照分组数量升序或者降序排列,如果按照结果中的组数量进行排序呢,
// ------------ 分组设置
//q=solr+memory&group=true&group.field=manu_exact
params.setParam(GroupParams.GROUP,true);
params.setParam(GroupParams.GROUP_FIELD,"alias");//这里是分组
params.setParam(GroupParams.GROUP_SORT, "id desc");//现在排序好像只能按照已有的字段进行排序,如果按照组数量进行排序呢?
排序该怎么写
QueryResponse response = solr.query(params);
GroupResponse groups = response.getGroupResponse(); 展开
// ------------ 分组设置
//q=solr+memory&group=true&group.field=manu_exact
params.setParam(GroupParams.GROUP,true);
params.setParam(GroupParams.GROUP_FIELD,"alias");//这里是分组
params.setParam(GroupParams.GROUP_SORT, "id desc");//现在排序好像只能按照已有的字段进行排序,如果按照组数量进行排序呢?
排序该怎么写
QueryResponse response = solr.query(params);
GroupResponse groups = response.getGroupResponse(); 展开
推荐于2017-11-22
展开全部
public static Map queryByGroup(String qStr,String groupField,String sortField,boolean asc,Integer pageSize,Integer pageNum){
Map rmap = new LinkedHashMap();
try {
SolrServer server = getSolrServer();//getSolrServer() 方法就是返回一个CommonsHttpSolrServer
SolrQuery query = new SolrQuery();
if(qStr!=null&&qStr.length()>0)
query.setQuery(qStr);
else
query.setQuery("*:*");//如果没有查询语句,必须这么写,否则会报异常
query.setIncludeScore(false);//是否按每组数量高低排序
query.setFacet(true);//是否分组查询
query.setRows(0);//设置返回结果条数,如果你时分组查询,你就设置为0
query.addFacetField(groupField);//增加分组字段
query.setFacetSort(true);//分组是否排序
query.setFacetLimit(pageSize);//限制每次返回结果数
query.setSortField(sortField,asc SolrQuery.ORDER.asc :SolrQuery.ORDER.desc );//分组排序字段
query.set(FacetParams.FACET_OFFSET,(pageNum-1)*pageSize);//当前结果起始位置
QueryResponse rsp = server.query( query );
List countList = rsp.getFacetField(groupField).getValues();
List returnList = new ArrayList();
if(pageNum*pageSize0)
rmap.put(count.getName(),(int) count.getCount());
}
} catch (Exception e) {
e.printStackTrace();
}
return rmap;
}
Map rmap = new LinkedHashMap();
try {
SolrServer server = getSolrServer();//getSolrServer() 方法就是返回一个CommonsHttpSolrServer
SolrQuery query = new SolrQuery();
if(qStr!=null&&qStr.length()>0)
query.setQuery(qStr);
else
query.setQuery("*:*");//如果没有查询语句,必须这么写,否则会报异常
query.setIncludeScore(false);//是否按每组数量高低排序
query.setFacet(true);//是否分组查询
query.setRows(0);//设置返回结果条数,如果你时分组查询,你就设置为0
query.addFacetField(groupField);//增加分组字段
query.setFacetSort(true);//分组是否排序
query.setFacetLimit(pageSize);//限制每次返回结果数
query.setSortField(sortField,asc SolrQuery.ORDER.asc :SolrQuery.ORDER.desc );//分组排序字段
query.set(FacetParams.FACET_OFFSET,(pageNum-1)*pageSize);//当前结果起始位置
QueryResponse rsp = server.query( query );
List countList = rsp.getFacetField(groupField).getValues();
List returnList = new ArrayList();
if(pageNum*pageSize0)
rmap.put(count.getName(),(int) count.getCount());
}
} catch (Exception e) {
e.printStackTrace();
}
return rmap;
}
追问
这个里面好像没有我要的答案
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没看懂什么意思?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询