后端实现:

@Service
public class ItemSearchServiceImpl implements ItemSearchService {
@Autowired
private SolrTemplate solrTemplate; @Override
public Map<String, Object> search(Map searchMap) {
Map<String,Object> map=new HashMap<>(); //1.查询列表
Map searchListMap = searchList(searchMap); map.putAll(searchListMap);
return map;
} /**
* 根据关键字搜索列表
* @param searchMap
* @return
*/
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);
//获取高亮页对象
HighlightPage<Item> page = solrTemplate.queryForHighlightPage(query, Item.class); for ( HighlightEntry<Item> h : page.getHighlighted()) {//循环高亮入口集合
Item item = h.getEntity();//获得原实体类
//获取高亮列表(高亮域的个数) h.getHighlights();
//获取每个域有可能存储多值 h.getSnipplets()
//获取要高亮的内容 h.getSnipplets.get(0);
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;
}
}

前端显示:

angularJS为了防止html攻击采取的安全机制,所以不能直接显示html的结果。

我们就要用到$sce服务的trustAsHtml方法来实现转换。

/*$sce服务写成过滤器*/
app.filter('trustHtml',['$sce',function ($sce) {
return function (data) {//传入参数是被过滤的内容
return $sce.trustAsHtml(data);//返回的是过滤后的内容(信任html的转换)
}
}]);

使用过滤器

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

竖线 | 用于调用过滤器

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

使用spring data solr 实现搜索关键字高亮显示的更多相关文章

  1. Spring Data Solr教程(翻译) 开源的搜索服务器

    Solr是一个使用开源的搜索服务器,它采用Lucene Core的索引和搜索功能构建,它可以用于几乎所有的编程语言实现可扩展的搜索引擎. Solr的虽然有很多优点,建立开发环境是不是其中之一.此博客条 ...

  2. Spring Data Solr教程(翻译)

    大多数应用都必须具有某种搜索功能,问题是搜索功能往往是巨大的资源消耗并且它们由于沉重的数据库加载而拖垮你的应用的性能 这就是为什么转移负载到一个外部的搜索服务器是一个不错的主意,Apache Solr ...

  3. spring data solr 搜索关键字高亮显示

    spring data solr 搜索关键字高亮显示 public Map<String, Object> highSearch(Map searchMap) { Map map = ne ...

  4. Spring Data Solr —— 快速入门

    Solr是基于Lucene(全文检索引擎)开发,它是一个独立系统,运行在Tomcat或Jetty(solr6以上集成了jetty,无需再部署到servlet容器上),但其原生中文的分词词功能不行,需要 ...

  5. Solr学习笔记(5)—— Spring Data Solr入门

    一.Spring Data Solr简介 前面已经介绍了通过solrJ来操作solr,那么我们如何将Solr的应用集成到Spring中?Spring Data Solr就是为了方便Solr的开发所研制 ...

  6. Spring Data Solr操作solr的简单案例

    Spring Data Solr简介 虽然支持任何编程语言的能力具有很大的市场价值,你可能感兴趣的问题是:我如何将Solr的应用集成到Spring中?可以,Spring Data Solr就是为了方便 ...

  7. Solr和Spring Data Solr

    一.Solr概述与安装 1.Solr简介 Solr是一个开源搜索平台,用于构建搜索应用程序. 它建立在Lucene(全文搜索引擎)之上. Solr是企业级的,快速的和高度可扩展的.Solr可以和Had ...

  8. Spring Data Solr

    1.什么是spring data solr? Solr是一个开源搜索平台,用于构建搜索应用程序.简单的来说就是作为一个搜索引擎使用. 2.solr的安装(本地安装,远程安装同) 1)解压一个tomca ...

  9. Spring Data Solr相关配置

    1.增加Maven POM文件的存储库:pom配置如下: <repositories> <repository> <id>spring-milestone</ ...

随机推荐

  1. [sh]top添加到crontab不生效问题解决

    今天遇到个小问题 top结果赋值给变量,放到文件做处理, 但是不生效问题. https://www.phpbulo.com/archives/509.html cat top.sh NAME=&quo ...

  2. Gradle 离线 安装

    第一步:下载gradle zip 文件 第二步:打开文件夹,例如:C:\Users\Administrator.gradle\wrapper\dists\gradle-3.3-all\55gk2rcm ...

  3. Bayesian RL and PGMRL

    简介: PGMRL: PGMRL就是把RL问题建模成一个概率图模型,如下图所示: 然后通过variational inference的方法进行学习: PGMRL给RL问题的表示给了一个范例,对解决很多 ...

  4. Kafka中bootstrap-server、broker-list和zookeeper的区别

    参考 Kafka bootstrap-servers vs zookeeper in kafka-console-consumer  中说建议使用新版(新版本指的是kafka 0.8.0之后的版本)的 ...

  5. gcc编译c语言程序

    编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件).   一个现代编译器的主要工作流程如下: 源程序 ...

  6. 【Static Program Analysis - Chapter 1】 Introduction

    Regarding correctness, programmers routinely use testing to gain confidence that their programs work ...

  7. C++学习 —— 住着魔鬼的细节

    13周的C++课程转眼就学完了5周,C++的标准基本上已经覆盖到了.再加上coding了上百行,总算是对C++有了一个基本的了解.接下来的学习会是关于STL的,所以在此对目前所学做一个小的总结. th ...

  8. JS中实现种子随机数

    参数: 详谈JS中实现种子随机数及作用 我在Egret里这么写... class NumberTool{ /**种子(任意默认值5)*/ public static seed:number = 5; ...

  9. Kylin如何进行JDBC方式访问或者调用

    Kylin提供了标准的ODBC和JDBC接口,能够和传统BI工具进行很好的集成.分析师们可以用他们最熟悉的工具来享受Kylin带来的快速.我们也可以对它进行定制开发报表等,把kylin当做数据库服务器 ...

  10. Gym 101972

    F读错题wa了三个小时.自闭了,不然I题有可能能出的..已经想到组合数也敲完组合数板子了. A:这...**题吧,第一眼看的这个就秒了 #include<bits/stdc++.h> #d ...