spring-data-solr的高亮功能

我们先来看一下solr页面是怎么设置的,

然后看一下结果

通过结果我们可以发现,高亮字段和查询的普通字段是分开的,所以,在java代码中要想融合高亮进入  ,第一步:查出高亮,  第二步:将普通字段替换为高亮字段

下面代码书写顺序是从下往上,需要什么创建什么        

public Map searchList(Map searchMap){
    Map<String, Object> map = new HashMap<>();
    //2 封装高亮条件
    HighlightQuery query=new SimpleHighlightQuery();
    HighlightOptions highlightOptions=new HighlightOptions() ;
    highlightOptions.addField("item_title");
    highlightOptions.setSimplePrefix("<em style='color: red'>");
    highlightOptions.setSimplePostfix("</em>");
    query.setHighlightOptions(highlightOptions);
    //3 按照关键字查询,解析参数searchMap,获取搜索框的内容
    Object keywords = searchMap.get("keywords");
    Criteria criteria = new Criteria("item_keywords").is(keywords);
    query.addCriteria(criteria);
    //1 获取高亮页面(主方法)
    HighlightPage<TbItem> page = solrTemplate.queryForHighlightPage(query, TbItem.class);

        //  4  得到高亮页面的page后就可以使用遍历获取里面的内容了

         

遍历的话看着solr网页的遍历比较方便,因为高亮的page页有一个方法getEntity(),  所以直接可以set进去拿到最终的高亮段落

        

 

 

接下来看看前端是怎么做的?

前端因为担心网页注入,所以后端写的html代码,前端是不会显示的,只有在前端增加过滤器,才可以

/*$sce服务写成过滤器*/


app.filter('trustHtml',['$sce',function($sce){
    return function(data){
        return $sce.trustAsHtml(data);
    }
}]);

 

然后前端html页面使用一下过滤器,那么后端java写的html就可以显示在页面了

(2)使用过滤器

​ ng-bind-html指令用于显示html内容

​ 竖线 |用于调用过滤器

<div class="attr" ng-bind-html="item.title | trustHtml"></div>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值