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实例中添加数据?

   //向solr服务器中的collection1实例中添加数据
@Test
public void add() throws Exception{
//1、创建与solr服务器的连接
/*
* http://localhost:8080/solr默认连接的是collection1实例
* 如果想连接其他的实例,如collection2、collection3则在连接时必须指定:http://localhost:8080/solr/实例名称
*/
SolrServer server = new HttpSolrServer("http://localhost:8080/solr"); //2、创建solr的文档对象并添加数据
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "003");
document.addField("title", "solr"); //3、将文档对象添加到solr服务器
server.add(document); //4、提交
server.commit();
}

需求二:修改solr服务中collection3实例中的数据?

 //修改solr服务器上collection3实例中的数据
@Test
public void update() throws Exception{
//1、连接solr服务器上collection3实例中的数据
SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection3");
//2、创建solr的文档对象并将数据修改
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "001");
document.addField("title", "博学谷");
//3、将文档对象添加到solr服务器
server.add(document);
//4、提交
server.commit();
}

需求三:对solr服务中的数据进行删除操作,根据id删除、删除所有数据?

   //删除solr服务器上collection2实例中的指定数据:
@Test
public void delete() throws Exception{
//1、连接solr服务器
SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
//2、根据id删除数据
server.deleteById("002");
//3、提交
server.commit();
} //删除solr服务器上collection1实例中的所有数据:
@Test
public void deleteAll() throws Exception{
//1、连接solr服务器
SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection1");
//2、删除指定实例下的所有数据
server.deleteByQuery("*:*");
//3、提交
server.commit();
}

需求四:检索solr服务中collection3实例中的全部数据?

   //查询solr服务器上collection3实例中所有的数据:
@Test
public void findAll() throws Exception{
//1、连接solr服务器
SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection3");
//2、创建查询对象
SolrQuery query = new SolrQuery();
//3、给查询对象中设置查询条件
query.setQuery("*:*");
//4、查询并获取响应
QueryResponse response = server.query(query);
//5、从响应中获得结果集
SolrDocumentList results = response.getResults();
//6、处理结果集
//输出结果集的总查询条数
System.out.println(results.getNumFound());
for (SolrDocument solrDocument : results) {
System.out.println("id*************"+solrDocument.get("id"));
System.out.println("title**********"+solrDocument.get("title"));
System.out.println("===========================================");
}
}

Solr_全文检索引擎系统的更多相关文章

  1. solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件

    昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...

  2. Lucene总结

    数据的分类 结构化数据:有固定类型或者有固定长度的数据 例如:数据库中的数据(mysql,oracle等), 元数据(就是windows中的数据) 结构化数据搜索方法: 数据库中数据通过sql语句可以 ...

  3. Solr入门介绍

    solr入门案例 solr是apache下的一个全文检索引擎系统. 我们需要在服务器上单独去部署solr, 通过它的客户端工具包solrJ, 就是一个    jar包, 集成到我们项目中来调用服务器中 ...

  4. [IR] Open Source Search Engines

    From:http://blog.csdn.net/xum2008/article/details/8740063 本文档是对现有的开源的搜索引擎的一个简单介绍 1.    Lucene Lucene ...

  5. 全文搜索技术—Lucene

    1.   内容安排 实现一个文件的搜索功能,通过关键字搜索文件,凡是文件名或文件内容包括关键字的文件都需要找出来.还可以根据中文词语进程查询,并且支持多种条件查询. 本案例中的原始内容就是磁盘上的文件 ...

  6. 全文搜索技术—Solr

    1.   学习计划 1. Solr的安装及配置 a)    Solr整合tomcat b)    Solr后台管理功能介绍 c)    配置中文分析器 2. 使用Solr的后台管理索引库 a)     ...

  7. solr简单学习---1

    *服务器配置略,比较复杂,看视频 1.导入jar包 package cn.itcast.solr; import org.apache.solr.client.solrj.SolrServer; im ...

  8. Solr全文检索框架

    概述: 什么是Solr? Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务.Solr可以独立运行在Jetty.tomcat.webLogic.webSh ...

  9. lucene 全文检索工具的介绍

    Lucene:全文检索工具:这是一种思想,使用的是C语言写出来的 1.Lucene就是apache下的一个全文检索工具,一堆的jar包,我们可以使用lucene做一个谷歌和百度一样的搜索引擎系统 2. ...

随机推荐

  1. a标签点击跳转失效--IE6、7的奇葩bug

    一般运用a标签包含img去实现点击图片跳转的功能,这是前端经常要用到的东西. 今天遇到个神奇的bug:如果在img上再包裹一层div,而且div设置了width和height,则图片区域点击时,无任何 ...

  2. django server之间通过remote user 相互调用

    首先,场景是这样的:存在两个django web应用,并且两个应用存在一定的联系.某些情况下彼此需要获取对方的数据. 但是我们的应用肯经都会有对应的鉴权机制.不会让人家随随便便就访问的对吧.好比上车要 ...

  3. Yii1.1的验证规则

    在Yii1.1的数据验证是由CValidator完成,在CValidator中提供了各种基本的验证规则 <?php public static $builtInValidators=array( ...

  4. HTML DOM 介绍

    本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...

  5. IE的F12开发人员工具不显示问题

    按下F12之后,开发人员工具在桌面上看不到,但是任务栏里有显示.将鼠标放在任务栏的开发人员工具上,出现一片透明的区域,选中之后却出不来.将鼠标移动到开发人员工具的缩略图上,右键-最大化,工具就全屏出现 ...

  6. Redis百亿级Key存储方案(转)

    1 需求背景 该应用场景为DMP缓存存储需求,DMP需要管理非常多的第三方id数据,其中包括各媒体cookie与自身cookie(以下统称supperid)的mapping关系,还包括了supperi ...

  7. node模块加载层级优化

    模块加载痛点 大家也或多或少的了解node模块的加载机制,最为粗浅的表述就是依次从当前目录向上级查询node_modules目录,若发现依赖则加载.但是随着应用规模的加大,目录层级越来越深,若是在某个 ...

  8. BridgePattern(桥接模式)

    /** * 桥接模式 * @author TMAC-J * 应用于多维度方案 * 用组合的形式代替继承 * 符合单一职责原则 * 一个类只有一个引起他变化的原因 * 增加程序灵活性 */ public ...

  9. android手机登录时遇到“QQ安全登录发现病毒”解决

    android手机作为开源系统非常容易感染病毒,有时候我们会经常遇到手机QQ登录时检测到app被感染,一般情况是由手机感染病毒所引起的,安装腾讯管家后只能检测病毒和卸载感染病毒的软件,不能清除病毒.解 ...

  10. kvm上的Linux虚拟机使用virtio磁盘

    kvm上的Linux虚拟机使用virtio磁盘 系统:centos6.6  64位 网上的文章比较少,怎麽将Linux虚拟机的磁盘改为使用virtio磁盘 因为centos6或以上系统已经包含了vir ...