SpringDataSolr分组查询

版权声明:转载请标明出处~~ https://blog.csdn.net/weixin_43231076/article/details/83181030

1.构造查询对象

List<String> list = new ArrayList<String>();

//创建query对象
Query query = new SimpleQuery("*:*");;

//设置查询条件
//查询solr中自定义的复制域,匹配传过来的关键字
Criteria criteria = new Criteria("item_keywords").is(searchMap.get("keywords"));	
query.addCriteria(criteria);

2.构件分选选项对象

//构造分组选项对象
GroupOptions groupOptions = new GroupOptions();

//设置要进行分组的域名,可以设置多个,在后面接.addField("")即可
groupOptions.addGroupByField("item_category");		

//给query设置分组选项
query.setGroupOptions(groupOptions);

3.分组查询,得到分组数据

//分组查询,获取分组页
GroupPage<TbItem> page = solrTemplate.queryForGroupPage(query, TbItem.class);

//根据域名,获取分页结果对象(以下得到的数据,都是针对于这里设置的域的结果)
//这个域名,一定要是在上面进行分组过的域名
GroupResult<TbItem> groupResult = page.getGroupResult("item_category");

//获取分组入口页
Page<GroupEntry<TbItem>> groupEntries = groupResult.getGroupEntries();

//从分组入口页groupEntries中获取分组入口集合
List<GroupEntry<TbItem>> entryList = groupEntries.getContent();

//从entryList中取出每一个分组结果
for (GroupEntry<TbItem> entry : entryList) {
	String result = entry.getGroupValue();
	list.add(result);
}

return list;

猜你喜欢

转载自blog.csdn.net/weixin_43231076/article/details/83181030