美文网首页
Solr服务器的简单使用

Solr服务器的简单使用

作者: __youzhiyong | 来源:发表于2017-12-08 09:36 被阅读0次

solr服务器的搭建

1.1 下载ZIP包:http://mirrors.shuosc.org/apache/lucene/solr/7.1.0/ (没有找到6.6.1的版本了)
1.2 解压,进入在solr-7.1.0\bin目录下,在此处打开命令行 输入solr start 运行solr服务器,默认在8983端口
1.3 访问 http://127.0.0.1:8983/solr 看能否进入solr控制台,能则启动成功
1.4 运行solr服务器之后,首先需要创建一个core;创建命令solr create -c <coreName> 如 solr create -c mycore

solr服务器的配置(solr6.6.1版本+mysql数据库)

  1. solr-6.6.1\server\solr\mycore\conf\managed-schema
    保存的是字段信息,可以通过solr admin UI来添加字段;也可以手动在此文件中添加(推荐)
      <field name="id" type="long" multiValued="false" indexed="true" required="true" stored="true"/>
      <field name="content" type="string" indexed="true" stored="true"/>
  1. solr-6.6.1\server\solr\mycore\conf\db-data-config.xml
    保存的是连接数据库的驱动信息以及导入数据的SQL语句,包括增量查询
    <dataConfig>
      <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/grdd_test" user="root" password="root" />
        <document>
          <entity name="test" 
                query="select * from user" 
                deltaQuery="select id from user where gmt_modified > '${dataimporter.test.last_index_time}'"
                deltaImportQuery="select * from user where id='${dih.delta.id}'" />
                <!--
                query:查询数据库表符合记录数据。
                deltaQuery:增量索引查询主键ID,注意这个只能返回ID字段,注意dataimporter.test.last_index_time这个值,
                    这个表达式dataimporter.test是根据conf/dataimport.properties文件中的数据来的不要test也行
                deltaImportQuery:增量索引查询导入的数据
                solr本身提供了一个last_index_time,这个字段记录了每条记录导入的时间(包括增量和全量导入),
                我们只需要将updateTime和last_index_time比较即可得到上一次索引更新以后变化的记录。       
                    注意,这个的updateTime为数据库里面的一个字段,规定每次更新字段都会更新这个值,否则没有意义
                -->
                
      </document>
    </dataConfig>
  1. solr-6.6.1\server\solr\mycore\conf\solrconfig.xml
    保存的是增删查改等操作,以及所需的第三方jar包,这个文件需要修改的是添加一个dataimport类型的requestHandler节点(在select之前),
    可能需要在文件相应位置导入相应的jar包,如下:
    <!-- line75左右 -->
    <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />  
    ....
    <!-- 数据导入配置,在 “/select”之前 -->
    <requestHandler name="/dataimport" class="solr.DataImportHandler">
      <lst name="defaults">
        <str name="config">db-data-config.xml</str>
      </lst>
    </requestHandler>
  
  1. solr-6.6.1\server\solr\mycore\conf\dataimport.properties
    保存的是一个最后导入数据的时间,用于增量查询,与数据库数据中的gmt_modified数据进行对比,决定是否需要更新

  2. solr-6.6.1\server\solr\conf\dataimport.properties
    (注意路径与上面的不同) 这个文件保存的是定时增量导入的配置信息

#################################################
#                                               #
#       dataimport scheduler properties         #
#                                               #
#################################################

#  to sync or not to sync
#  1 - active; anything else - inactive
syncEnabled=1

#  需要同步的core
syncCores=mycore

#  solr server name or IP address
server=127.0.0.1

#  solr server port
port=8983

#  application name/context
webapp=solr

#  URL params [mandatory]
#  remainder of URL
params=/dataimport?command=delta-import&clean=false&commit=true

#  schedule interval
#  number of minutes between two runs
#  [defaults to 30 if empty]
interval=1

#  重做索引的时间间隔,单位分钟,默认7200,即5天; 
#  为空,为0,或者注释掉:表示永不重做索引
reBuildIndexInterval=7200

#  重做索引的参数
reBuildIndexParams=/dataimport?command=delta-import&clean=false&commit=true

#  重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;
#  两种格式:2012-04-11 03:10:00 或者  03:10:00,后一种会自动补全日期部分为服务启动时的日期
reBuildIndexBeginTime=03:10:00
这里还有一个配置:solr-6.6.1\server\solr\mycore\core.properties 这个是自动生成的
此文件唯一标识一个core,主要配置为name,以key=value的形式存储,可为空,默认core的名字为文件夹的名字

solr服务器检索core的规则:
1. 在web.xml中找到solr/home对应的路径,默认为\server\solr\目录
2. 递归遍历该文件夹,遇到core.properties 文件则跳出该级目录,然后遍历一下个目录
  1. solr-6.6.1\server\solr\mycore\conf\下面创建一个lib文件夹,将mysql的jdbc jar包放进去

  2. solr-6.6.1\server\solr-webapp\webapp\WEB-INF\lib下面需要导入的包
    7.1. apache-solr-dataimportscheduler-1.1.jar 附百度云链接
    https://pan.baidu.com/s/1qYPxi5u 密码:4kxy
    定时增量查询的jar包,需要定时增量查询功能时导入 同时需要在solr-6.6.1\server\solr-webapp\webapp\WEB-INF\web.xml文件中添加一个listener,如下

    <listener>  
      <listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>  
    </listener>

7.2 solr-dataimporthandler-6.6.1.jar、solr-dataimporthandler-extras-6.6.1.jar 导入数据必须的包,这两个包在solr-6.6.1\dist目录下,拷贝过来就行

在spring boot项目中使用solr

  1. 导入依赖
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-solr</artifactId>
    </dependency>
  1. 在application.properties文件中配置solr服务器地址
spring.data.solr.host=http://127.0.0.1:8983/solr
  1. 然后就可以像使用spring jpa一样来操作了
    3.1: 创建一个repository接口,继承SolrCrudReposity. 然后定义所需要的方法,可参考:https://docs.spring.io/spring-data/solr/docs/current/reference/html/#_supported_query_keywords
    3.2: 创建一个实体类,需要在实体类上使用注解,表明对应的是solr中的哪一个core
    @SolrDocument(solrCoreName = "mycore")

3.3: 在测试类中注入创建的repository接口,直接调用其方法

在java中用最原始的方法使用solr

        //solr服务器地址
        String solrServerUrl = "http://127.0.0.1:8983/solr";
        //solr core名称
        String solrCoreName = "mycore";

        //1. 初始化一个solrClient实例,SolrClient为抽象类,有两个实现类HttpSolrClient, CloudSolrClient
        SolrClient solrClient1 = new HttpSolrClient(solrServerUrl);

        //2. 设置查询条件
        SolrQuery query = new SolrQuery();
        query.set("q", "sex:true");
        //...其他条件

        //3. 发起查询请求
        QueryResponse response = solrClient1.query(solrCoreName,query);

        //4. 处理请求数据
        System.out.println(response);

下一篇:Solr统一配置MySQL数据源

参考文档:
https://docs.spring.io/spring-data/solr/docs/current/reference/html/
https://lucene.apache.org/solr/guide/6_6/index.html
https://zhuanlan.zhihu.com/p/28855188

相关文章

  • Solr6.4.2+jetty+mysql

    下载地址 solr : solr官网地址 部署 由于solr默认带有jetty服务器,所以使用默认jetty服务器...

  • Solr服务器的简单使用

    solr服务器的搭建 1.1 下载ZIP包:http://mirrors.shuosc.org/apache/lu...

  • 实验报告

    课上实验报告 1启动solr 使用我们自己的云服务器http://120.24.46.77:8983/solr/#...

  • 高级框架第六天Solr:企业级搜索应用服务器

    Solr:企业级搜索应用服务器 一.Solr简介 1.为什么使用Solr 在海量数据下,对MySQL或Oracle...

  • Solr初识

    1 什么是Solr Solr是Apache的顶级开源项目,它是使用Java开发的,基于lucene的全文搜索服务器...

  • solr简单使用

    Apache Solr中的主要配置文件如下 Solr.xml - 它是包含Solr Cloud相关信息,此文件是在...

  • 搜索学习--Elasticsearch全文搜索服务器的基本使用

    前言 之前我们使用Solr全文搜索服务器来建立我们自己的搜索,本篇文章将介绍跟Solr类似的另一种搜索服务器——E...

  • 将文件传送给Solr服务器

    用post.jar将XML或JSON文件传送到Solr服务器 在Solr中对XML和JSON文件的方式非常简单,直...

  • 如何使用MapReduce构建Solr索引

    Solr 是什么? Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的 Java 来实现。服务 器通...

  • solr

    何为solr solr是java搜索引擎Lucene的更高一层封装,通过webapp服务器实现可视化界面,方便使用...

网友评论

      本文标题:Solr服务器的简单使用

      本文链接:https://www.haomeiwen.com/subject/rjgsixtx.html