solr高亮和分组查询要点
高亮查询
首先新建一个高亮的查询对象SimpleHighlightQuery
新建HighLightOptions高亮设置对象
设置需要进行高亮显示的字段
设置高亮字段的前缀和后缀(使用html标签实现)
将高亮设置对象添加到查询对象里
使用Criteria对象添加其他的条件查询
执行查询,解析结果集,用高亮处理之后的字段替换掉之前对象的指定字段,在页面上实现高亮显示
HighlightPage<TbItem> page = solrTemplate.queryForHighlightPage(query, TbItem.class);
List<HighlightEntry<TbItem>> highlighted = page.getHighlighted();
for (HighlightEntry<TbItem> entry : highlighted) {
TbItem item = entry.getEntity();
if (entry.getHighlights().size() > 0 && entry.getHighlights().get(0).getSnipplets().size() > 0) {
item.setTitle(entry.getHighlights().get(0).getSnipplets().get(0));
}
}
tip:Angular如果想要在页面上进行效果的展示还需进行额外设置
分组查询
新建一个简单的查询对象 simpleQuery
使用criteria对象设置查询的条件
将criteria对象添加到查询对象里去
创建GroupOptions对象并使用addGroupByField添加分组的字段
根据创建的分组对象为查询对象设置设置分组条件
solrTemplate对象调用分组查询方法得到结果GroupPage
如下对结果集进行解析
//调用查询
GroupPage<TbItem> tbItems = solrTemplate.queryForGroupPage(query, TbItem.class);
//获取指定分组结果集
GroupResult<TbItem> item_keywords = tbItems.getGroupResult("item_category");
//获取分组结果入口页
Page<GroupEntry<TbItem>> groupEntries = item_keywords.getGroupEntries();
//获取分组入口集合
List<GroupEntry<TbItem>> content = groupEntries.getContent();
for (GroupEntry<TbItem> tbItemGroupEntry : content) {
//添加到list
list.add(tbItemGroupEntry.getGroupValue());
}