// 查询结果高亮显示
public Map<String, Object> searchHightLight(Map searchMap){
Map map=new HashMap();
HighlightQuery query = new SimpleHighlightQuery();
//===========设置高亮相关的选项=============
// 设置高亮的域
HighlightOptions highlightOptions = new HighlightOptions().addField("item_title");
// 设置高亮前缀
highlightOptions.setSimplePrefix("<em style='color:red' >");
// 设置高亮后缀
highlightOptions.setSimplePostfix("</em>");
// 设置高亮选项到 query 对象中
query.setHighlightOptions(highlightOptions);
//=============按照关键字查询==============
Criteria criteria = new Criteria("item_keywords").is(searchMap.get("item_keywords"));
query.addCriteria(criteria);
// 查询
HighlightPage<TbItem> page = solrTemplate.queryForHighlightPage(query, TbItem.class);
//高亮入口集合
List<HighlightEntry<TbItem>> highlighted = page.getHighlighted();
// 获取高亮内容
for (HighlightEntry<TbItem> h : highlighted) {
TbItem item = h.getEntity();// 获取原实体类
if (h.getHighlights().size() > 0 && h.getHighlights().get(0).getSnipplets().size() > 0) {
//将获取的高亮内容设置回原本的 查询结果(page.getContent() 等同于h.getEntity()的集合)
item.setTitle(h.getHighlights().get(0).getSnipplets().get(0));// 设置高亮的结果
}
}
map.put("rows",page.getContent());
return map;
}
注意 这个高亮查询代码仅将查询到的第一个solr域中的第一个值高亮显示