1、导入jar包
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>4.10.2</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
</dependency>
2、Spring配置文件中定义solr的bean
<!--定义solr的server-->
<bean id="solrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
<constructor-arg index="0" value="http://192.168.10.188:8080/solr/core1"/>
<!-- 设置响应解析器 -->
<property name="parser">
<bean class="org.apache.solr.client.solrj.impl.XMLResponseParser"/>
</property>
<!-- 设置重试次数-->
<property name="maxRetries" value="1"/>
<!-- 建立连接的最长时间 -->
<property name="connectionTimeout" value="500"/>
</bean>
3、Service中注入solr的bean
@Service
@Qualifier("goodsService")
public class GoodsServiceImpl implements GoodsService {
private Logger log = Logger.getLogger(GoodsServiceImpl.class);
@Resource
@Qualifier("solrServer")
private SolrServer solrServer;
4、实现solr查询
public List<TGoods> queryGoodsList(GoodsQuery goodsQuery) throws SolrServerException {
SolrQuery solrQuery = new SolrQuery();
//设置关键字
solrQuery.setQuery(goodsQuery.getName());
//设置默认检索域
solrQuery.set("df", "name");
// 分页
// solrQuery.setStart(0);
// solrQuery.setRows(5);
// 只查询指定域
solrQuery.set("fl", "id,name,goods_price,goods_status,goods_type,goods_img,goods_describle");
// 设置高亮
solrQuery.setHighlight(true);
// 指定高亮域
solrQuery.addHighlightField("name");
// 前缀
solrQuery.setHighlightSimplePre("<span style='color:red'>");
solrQuery.setHighlightSimplePost("</span>");
// 执行查询
QueryResponse response = solrServer.query(solrQuery);
// 文档结果集
SolrDocumentList docs = response.getResults();
Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
List<TGoods> goodsList = new ArrayList<TGoods>();
for (SolrDocument doc : docs) {
TGoods goods = new TGoods();
goods.setId(Integer.parseInt(doc.get("id").toString()));
goods.setPrice(Double.parseDouble(doc.get("goods_price").toString()));
goods.setStatus(Integer.parseInt(doc.get("goods_status").toString()));
goods.setType(Integer.parseInt(doc.get("goods_type").toString()));
goods.setImg((String)doc.get("goods_img"));
goods.setDescrible((String)doc.get("goods_describle"));
Map<String, List<String>> map = highlighting.get((String) doc.get("id"));
List<String> list = map.get("name");
goods.setName(list.get(0));
goodsList.add(goods);
}
return goodsList;
}
4、solr实现添加
public void saveGoods(TGoods goods) throws SolrServerException, IOException {
//创建新的文档对象
SolrInputDocument solrInputDocument = new SolrInputDocument();
//设置文档的域
solrInputDocument.setField("id", goods.getId());
solrInputDocument.setField("name", goods.getName());
solrInputDocument.setField("goods_price", goods.getPrice());
solrInputDocument.setField("goods_status", goods.getStatus());
solrInputDocument.setField("goods_type", goods.getType());
solrInputDocument.setField("goods_img", goods.getImg());
solrInputDocument.setField("goods_describle", goods.getDescrible());
//进行添加
solrServer.add(solrInputDocument);
//进行手动提交,否则无法进行添加
solrServer.commit();
}
5、solr实现删除
public void deleteGoodsById(Integer id) throws SolrServerException, IOException {
log.debug("*********deleteGoodsById************" + id);
solrServer.deleteById(String.valueOf(id));
solrServer.commit();

}

Spring集成Solr搜索引擎的更多相关文章

  1. Spring集成ElasticSearch搜索引擎

    目录 前期安装 Maven支持库安装 添加log4j的配置文件 创建Client客户端 实现增删改查以及符合查询 实现查询数据 实现添加数据 实现删除数据 实现修改数据 实现复合查询数据 Elasti ...

  2. Spring boot 集成Solr

    首先安装Solr 集成 ikanalyzer ,可以参考 https://www.cnblogs.com/lick468/p/10867492.html https://www.cnblogs.com ...

  3. Solr和Spring Data Solr

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

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

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

  5. Spring Data Solr —— 快速入门

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

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

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

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

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

  8. 阿里RocketMq试用记录+简单的Spring集成

    CSDN学院招募微信小程序讲师啦 程序猿全指南,让[移动开发]更简单! [观点]移动原生App开发 PK HTML 5开发 云端应用征文大赛,秀绝招,赢无人机! 阿里RocketMq试用记录+简单的S ...

  9. Spring Data Solr

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

随机推荐

  1. 有关PHP 10条有用的建议--转(柒捌玖零)

    1.使用ip2long() 和long2ip()函数来把IP地址转化成整型存储到数据库里. 这种方法把存储空间降到了接近四分之一(char(15)的15个字节对整形的4个字节),计算一个特定的地址是不 ...

  2. 2018.12.14 codeforces 922E. Birds(分组背包)

    传送门 蒟蒻净做些水题还请大佬见谅 没错这又是个一眼的分组背包. 题意简述:有n棵树,每只树上有aia_iai​只鸟,第iii棵树买一只鸟要花cic_ici​的钱,每买一只鸟可以奖励bbb块钱,从一棵 ...

  3. mount 移动硬盘出现的各种小问题

    1.fdisk -l 查看硬盘是否存在 2.新建要挂载硬盘的文件夹 mkdir  /disk   (如果想要挂载到已存在的目录就不要新建了) 3.挂载硬盘:mount /dev/sdc /disk 4 ...

  4. Failed to place enough replicas

    如果DataNode的dfs.datanode.data.dir全配置成SSD类型,则执行"hdfs dfs -put /etc/hosts hdfs:///tmp/"时会报如下错 ...

  5. 2018-03-13 HTTP Socket TCP学习

    协议学习: https://www.jianshu.com/p/a5410f895d6b https://www.jianshu.com/p/42260a2575f8 实际例子: nano实际例子,和 ...

  6. 2018/02/25 PendingIntent使用

    https://www.cnblogs.com/liyiran/p/4656821.html http://blog.csdn.net/ydpl2007/article/details/7591642 ...

  7. Task Parallelism

    The Task Parallel Library (TPL) is based on the concept of a task, which represents an asynchronous ...

  8. A Magic Lamp -- hdu -- 3183

    http://acm.hdu.edu.cn/showproblem.php?pid=3183 A Magic Lamp Time Limit: 2000/1000 MS (Java/Others)   ...

  9. hdu 4940 数据太水...

    http://acm.hdu.edu.cn/showproblem.php?pid=4940 给出一个有向强连通图,每条边有两个值分别是破坏该边的代价和把该边建成无向边的代价(建立无向边的前提是删除该 ...

  10. HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化

    HDU 2829 区间DP & 前缀和优化 & 四边形不等式优化 n个节点n-1条线性边,炸掉M条边也就是分为m+1个区间 问你各个区间的总策略值最少的炸法 就题目本身而言,中规中矩的 ...