//solr的高亮显示
private Map searchList(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.setHighlightOptions(highlightOptions);
//按照关键字查询
Criteria criteria=new Criteria("item_keywords").is(searchMap.get("keywords"));
query.addCriteria(criteria);
//page为结果的原生对象
HighlightPage<TbItem> page = solrTemplate.queryForHighlightPage(query,TbItem.class);
//h为item经过spring封装的类 //高亮入口集合
for(HighlightEntry<TbItem> h: page.getHighlighted()){
//获取原实体类
TbItem item = h.getEntity();
if(h.getHighlights().size()>0 && h.getHighlights().get(0).getSnipplets().size()>0)
{
//设置高亮的结果
item.setTitle(h.getHighlights().get(0).getSnipplets().get(0));
}
}
map.put("rows",page.getContent());
return map;
}
高亮可设置在多个域中(这里只有一个域)
h.getHighlights().get(0)
单个域中可能包含多个高亮词(这里是一个)
h.getHighlights().get(0).getSnipplets().get(0)