spring-data-solr的高亮功能

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

spring-data-solr的高亮功能_第1张图片

然后看一下结果

spring-data-solr的高亮功能_第2张图片

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

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

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

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

         spring-data-solr的高亮功能_第3张图片

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

        spring-data-solr的高亮功能_第4张图片

 

 

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

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

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


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

 

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

(2)使用过滤器

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

​ 竖线 |用于调用过滤器

 

 

你可能感兴趣的:(品优购,solr的高亮)