专栏首页禁心尽力Solr_全文检索引擎系统

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     }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分布式搜索之搭建Solrcloud(Solr集群)

    Solrcloud介绍:   SolrCloud(solr集群)是Solr提供的分布式搜索方案。   当你需要大规模,容错,分布式索引和检索能力时使用SolrC...

    赵小忠
  • solr_架构案例【京东站内搜索】(附程序源代码)

    注意事项:首先要保证部署solr服务的Tomcat容器和检索solr服务中数据的Tomcat容器,它们的端口号不能发生冲突,否则web程序是不可能运行起来的。 ...

    赵小忠
  • mybatis_映射查询

    一、一对一映射查询: 第一种方式(手动映射):借助resultType属性,定义专门的pojo类作为输出类型,其中该po类中封装了查询结果集中所有的字段。此方法...

    赵小忠
  • solr install

         Solr是一个独立的企业及搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的...

    week
  • solr安装配置

    环境介绍 solr 6.5.1 tomcat8 jdk1.8 一、下载solr安装包 下载地址:http://www.apach...

    似水的流年
  • Apache solr(一).

    概念:Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Apache...

    JMCui
  • Solr搜索引擎 — 两种安装方式

    常常在业务开发中会遇到大列表的查询需求或者按照各项条件搜索内容,一般的做法往往都是数据库直接搞定,但是到了一定的程度只有这类需求会带来巨大的开销,一个表格中涉...

    喵了个咪233
  • solr初探-安装使用

    Solr是一个高性能,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优...

    kl博主
  • (二)Solr的安装配置及部署

    qubianzhong
  • solr安装配置

    下载地址:http://www.apache.org/dyn/closer.lua/lucene/solr

    似水的流年

扫码关注云+社区

领取腾讯云代金券