Solr===>>查询结果高亮显示===>>代码仅将查询到的第一个solr域中的第一个值高亮显示

// 查询结果高亮显示
	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域中的第一个值高亮显示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值