Solr_全文检索引擎系统
Solr介绍:
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务。Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。
Solr的作用:
solr是一个现成的全文检索引擎系统, 放入tomcat下可以独立运行, 对外通过http协议提供全文检索服务(就是对索引和文档的增删改查服务), 在代码中可以通过solrJ(solr的客户端的jar包)来调用solr服务。
Lucene和solr的区别:
lucene是一个全文检索引擎工具包, 就是一堆jar包, 它放入tomcat下不能独立运行, 但是我们可以使用lucene来构建全文检索引擎系统;
solr底层是用lucene来开发的一个全文检索引擎系统, 放入tomcat下就可以独立运行, 对外通过http的形式,提供全文检索服务(索引和文档的增删改查服务)。
在Tomcat容器中部署solr工程的步骤:
1、下载solr压缩包,下载地址:http://archive.apache.org/dist/lucene/solr/(我这里使用的是solr-4.10.3);
2、准备好一个干净的Tomcat容器,并配置好JDK;
3、找到solr解压后的目录,将solr-4.10.3\example\webapps目录下的solr.war包放进Tomcat容器中运行,直接运行的目的是解压该war包,解压好之后关闭Tomcat容器并删除war包(必须要删除war包,否则再次运行时就覆盖了以前配置好的solr服务),开始部署solr服务;
4、找到solr解压后的目录,将solr-4.10.3\example\lib\ext目录下的所有jar包复制到Tomcat容器下的solr项目中的WEB-INF/lib目录下;
5、为solr服务准备家目录,找打solr解压后的目录,将solr-4.10.3\example目录下的有一个名称为solr的目录直接拷贝到硬盘根目录下,并且命名为solrHome(一般推荐这样做);
6、开始配置solr服务,找到Tomcat容器中部署的solr项目中的WEB-INF/web.xml文件,进行配置,首先打开<env-entry>标签,并且将刚刚拷贝好的solr的家目录的路径配置进去。
<env-entry><env-entry-name>solr/home</env-entry-name><env-entry-value>G:\solrHome</env-entry-value><env-entry-type>java.lang.String</env-entry-type></env-entry>
7、启动Tomcat容器,并通过http://127.0.0.1:8080/solr地址访问即可,如果看到以下界面则配置成功。
8、 solr服务配置成功之后,就会默认有一个collection1的实例,如果需要的话也可以配置多个,将solrHome目录下的collection1目录拷贝多个并将每个目录下的core.properties配置文件中修改一下即可,记得重启Tomcat容器。
通过SolrJ操作并访问solr服务中的数据:
什么是solrj?
solrj是访问solr服务的Java客户端,提供索引和搜索的请求方法。
创建工程,并引入solrj所需的jar包:
需求一:向solr服务中的collection1实例中添加数据?
1 //向solr服务器中的collection1实例中添加数据 2 @Test 3 public void add() throws Exception{ 4 //1、创建与solr服务器的连接 5 /* 6 * http://localhost:8080/solr默认连接的是collection1实例 7 * 如果想连接其他的实例,如collection2、collection3则在连接时必须指定:http://localhost:8080/solr/实例名称 8 */ 9 SolrServer server = new HttpSolrServer("http://localhost:8080/solr"); 10 11 //2、创建solr的文档对象并添加数据 12 SolrInputDocument document = new SolrInputDocument(); 13 document.addField("id", "003"); 14 document.addField("title", "solr"); 15 16 //3、将文档对象添加到solr服务器 17 server.add(document); 18 19 //4、提交 20 server.commit(); 21 }
需求二:修改solr服务中collection3实例中的数据?
1 //修改solr服务器上collection3实例中的数据 2 @Test 3 public void update() throws Exception{ 4 //1、连接solr服务器上collection3实例中的数据 5 SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection3"); 6 //2、创建solr的文档对象并将数据修改 7 SolrInputDocument document = new SolrInputDocument(); 8 document.addField("id", "001"); 9 document.addField("title", "博学谷"); 10 //3、将文档对象添加到solr服务器 11 server.add(document); 12 //4、提交 13 server.commit(); 14 }
需求三:对solr服务中的数据进行删除操作,根据id删除、删除所有数据?
1 //删除solr服务器上collection2实例中的指定数据: 2 @Test 3 public void delete() throws Exception{ 4 //1、连接solr服务器 5 SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2"); 6 //2、根据id删除数据 7 server.deleteById("002"); 8 //3、提交 9 server.commit(); 10 } 11 12 //删除solr服务器上collection1实例中的所有数据: 13 @Test 14 public void deleteAll() throws Exception{ 15 //1、连接solr服务器 16 SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection1"); 17 //2、删除指定实例下的所有数据 18 server.deleteByQuery("*:*"); 19 //3、提交 20 server.commit(); 21 }
需求四:检索solr服务中collection3实例中的全部数据?
1 //查询solr服务器上collection3实例中所有的数据: 2 @Test 3 public void findAll() throws Exception{ 4 //1、连接solr服务器 5 SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection3"); 6 //2、创建查询对象 7 SolrQuery query = new SolrQuery(); 8 //3、给查询对象中设置查询条件 9 query.setQuery("*:*"); 10 //4、查询并获取响应 11 QueryResponse response = server.query(query); 12 //5、从响应中获得结果集 13 SolrDocumentList results = response.getResults(); 14 //6、处理结果集 15 //输出结果集的总查询条数 16 System.out.println(results.getNumFound()); 17 for (SolrDocument solrDocument : results) { 18 System.out.println("id*************"+solrDocument.get("id")); 19 System.out.println("title**********"+solrDocument.get("title")); 20 System.out.println("==========================================="); 21 } 22 }
转载于:https://www.cnblogs.com/1315925303zxz/p/6246458.html
Solr_全文检索引擎系统相关推荐
- 13 款开源全文检索引擎
Lucene Lucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经是标准的全文检索程序,它提供了完整的查询引擎和索引引擎,没有中文分词引擎,需要自己去实 ...
- 13 款开源的全文检索引擎
http://www.iteye.com/news/27484 1. Lucene Lucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经是标准的全文检 ...
- 全文检索技术—Solr
前言: solr是一个现成的全文检索引擎系统, 放入tomcat下可以独立运行, 对外通过http协议提供全文检索服务(就是对索引和文档的增删改查服务),企业中可以通过solrJ(solr的客户端的j ...
- 全文搜索技术—Lucene
1. 内容安排 实现一个文件的搜索功能,通过关键字搜索文件,凡是文件名或文件内容包括关键字的文件都需要找出来.还可以根据中文词语进程查询,并且支持多种条件查询. 本案例中的原始内容就是磁盘上的文件 ...
- 13款开源搜索引擎的介绍
本文档转载自 http://blog.csdn.net/xum2008/article/details/8740063 对现有的开源的搜索引擎的一个简单介绍: Lucene Lucene的开发语言是J ...
- 【大数据存储技术】第8章 其他NoSQL数据库
文章目录 第8章 其他NoSQL数据库 8.1 图数据库简介 8.2 Neo4j 8.2.1 Neo4j 简介 8.2.2 Neo4j 的安装与实践 8.3 Redis和内存数据库 8.3.1 内存数 ...
- html页面如何加天气预报,html天气预报小插件
Angular杂谈系列1-如何在Angular2中使用jQuery及其插件 jQuery,让我们对dom的操作更加便捷.由于其易用性和可扩展性,jQuer也迅速风靡全球,各种插件也是目不暇接. 我相信 ...
- 13 款开源的全文搜索引擎
主要介绍13款现有的开源搜索引擎,你可以将它们用在你的项目中以实现检索功能. 1. Lucene Lucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经 ...
- Elasticsearch的详细讲解
认识Elasticsearch是什么 Elasticsearch是一个搜索引擎 , 其本质就是一个非关系性数据库 什么是搜索引擎 所谓搜索引擎就是根据用户需求与一定的算法 , 运用特定的策略从互联网检 ...
最新文章
- 分析完Top 25中概股科技公司,我们发现了回港二次上市的硬指标
- 【NLP】Doc2vec原理解析及代码实践
- 一文了解结构体字节对齐
- Robotframework集成jenkins执行用例
- Docker安装Python3.5
- ABAP GUI Text Edit
- 小学生计算机舞蹈,最近“泼水成画”很火?舞蹈生VS体育生,看到计算机:你是来添乱的?...
- 类型,对象,线程栈和托管堆在运行时的相互关系(一)。
- mysql vs连不上_vs2015下配置MySQL,使之能使用c++连接完美运行
- 谷歌浏览器software_reporter_tool关闭
- python的基础列表_python基础入门 列表
- 阿米洛键盘取消win_阿米洛键盘驱动|阿米洛樱花键盘驱动下载v1.0官方版 - 欧普软件下载...
- C语言RGB转Lab色域
- LeetCode 56~60
- ”记录集为只读“怎么解决?请高手帮忙看看。感激不尽……
- 个人日记-《学习究竟是什么》读后感-2020/6/21
- 微信小程序搭建怎么做?流程是怎么样?【小程序搭建】
- 给大家推荐一款超低功耗的4G低功耗摄像头方案强大的AI功能
- ACE_Message_QueueACE_MT_SYNCH::putq ()使用时需要注意的地方
- 数据库建表-- 一对多/多对一/一对一/多对多 关系
热门文章
- android button imagebutton 区别,Android 开发入门篇
- android 高通平台有前途吗,华为鸿蒙计划要适配高通平台了,可以告别安卓搭载鸿蒙OS了?...
- 显微镜下的大明内容_《显微镜下的大明》epub、mobi、azw3
- 查询两张表 然后把数据并在一起_工作表数据查询时,类似筛选功能LIKE和NOT LIKE的应用...
- minitab怎么算西格玛水平_六西格玛黑带培训内容
- append从一个添加到另一_真特么激动第一个爬虫----爬取豆瓣电影top250
- oracle查询不走索引全表扫描,使用索引快速全扫描(Index FFS)避免全表扫描的若干场景-Oracle...
- 看网友如何定义C++
- 解决Python OpenCV 读取视频并抽帧出现error while decoding的问题
- YOLOv4中的tricks概念总结——Bag of freebies