Solr7.3.1学习(一)

Solr7.3.1学习(一)

由于项目中用到了全文检索系统,就找到了solr,参考了很多教程和官方文档,记录一下。

软件环境


  • solr7.3.1
  • JDK8 32位
  • windows xp
  • oracle11g

下载和启动


solr是一个单独的系统,部署在web容器中。solr7.3.1 不再提供war包,内部集成了jetty,也可以将webapp内容拷贝到tomcat中,这里直接用内置的jetty采用单节点单核心模式。

  1. 在官网下载solr7.3.1
    这里写图片描述
  2. 解压下载的zip文件,建议路径全英文
    这里写图片描述
  3. 进入根目录下bin文件夹,复制路径。
  4. 打开cmd键入命令
    1. cd C:\Program Files\MYJAVA\test\solr-7.3.1\bin
      这里写图片描述
    2. solr start -p 8983
      这里写图片描述
      出现红框中字样代表启动成功,命令中的8983是指定端口启动,访问 localhost:8983/solr 出现下面图片,没有红色的错误信息。这样solr就已经启动,接下来配置核心和导入数据库配置。
      这里写图片描述

核心配置


  1. 建立核心(core
    核心的概念个人理解相当于数据库,用来存放索引的。多核心可以对应不同的表数据,也可以单核心存放,这里使用的是单核心。
    1. 打开新cmd窗口,键入命令 cd C:\Program Files\MYJAVA\test\solr-7.3.1\bin
    2. 执行 solr create -c coreName 其中coreName 对应核心的名称,这里是testCore
      这里写图片描述
    3. 打开C:\Program Files\MYJAVA\test\solr-7.3.1\server\solr可以看到testCore文件夹已经创建
      这里写图片描述
  2. 配置solr的核心
    主要是配置核心文件夹testCore\conf下的managed-schemasolrconfig.xml 和 数据库导入文件 dataImport.xml(可自定义名称)。

    1. 引入中文分词器

      1. 便于全文检索时对中文关键词进行拆分。这里选用IKanlyzer分词器 点击下载

      2. 将下载好的jar包放入solr-7.3.1/server/solr-webapp/webapp/WEB-INF/lib目录中
        这里写图片描述

      3. 修改managed-schema文件,在最后一行加入如下代码:

        <!-- ik分词器 -->  
        <fieldType name="text_ik" class="solr.TextField">  
        <analyzer type="index">  
          <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>  
          <filter class="solr.LowerCaseFilterFactory"/>  
        </analyzer>  
        <analyzer type="query">  
          <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>  
          <filter class="solr.LowerCaseFilterFactory"/>  
        </analyzer>  
        </fieldType>  

        如图:
        这里写图片描述

    2. 引入数据库导入插件

      1. 复制C:\Program Files\MYJAVA\test\solr-7.3.1\dist目录下的
        solr-dataimporthandler-extras-7.3.1.jarsolr-dataimporthandler-7.3.1.jar
        以及对应数据库驱动(这里使用oracle)ojdbc6-11.2.0.4.jar
        C:\Program Files\MYJAVA\test\solr-7.3.1\server\solr-webapp\webapp\WEB-INF\lib目录下
      2. 修改solrconfig.xml文件,在最后一行加入一下代码:

         <!-- 数据库导入 -->
        <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
            <lst name="defaults">
            <!-- 数据源配置文件名自定义 -->
            <str name="config">dataImport.xml</str>
            </lst>
        </requestHandler>
      3. testCore\conf下新建dataImport.xml 名称与solrconfig.xml配置中相对应(如上图)需要分词的字段则type="text_ik",这就是刚才配置的ik分词器。
        dataImport.xml中就是对应的数据库导入参数(如下):
        <dataConfig>标签下填写具体的数据库链接参数,可以配置多个数据库,用name来唯一区分。
        <document>标签就是具体导入信息。里面一个<entity>代表一个实体,对应数据一张表格,可以多实体嵌套,具体参考官方文档。
        <entity>下的pk属性代表此表唯一的主键
        <entity>下的transformer属性代表开启自动转换数据库text clob 类型字段
        <entity>下的query属性代表此表初次导入和全量导入的sql
        <entity>下的deltaQuery属性代表此表增量导入的id,注意只查询id
        <entity>下的deltaImportQuery属性代表此表增量导入的sql,会使用查询出query的id
        <entity>下的deletedPkQuery属性代表此表删除的sql,注意只查询id
        <field>表示要导入的字段信息,clumn对应数据库字段,name 对应managed-schema自己增加字段
        这里写图片描述

      **以上是官方文档说明。我这里增量导入无效,暂时没有找到具体解决方法

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
   <dataSource name="oracle" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:orcl" user="root" password="root"/>
    <document>
        <entity name="openInfo" 
            pk="openId" 
            transformer="ClobTransformer" 
            query="SELECT 'openInfo' INFOTYPE,CONCAT('openInfo_', a.ID) TID,a.* FROM OPENINFO a where  a.DELSTATE=0 AND a.OPENSTATE='3'" 
            deltaQuery="SELECT ID FROM OPENINFO where DELSTATE=0 AND OPENSTATE='3' AND RECORDCREATETIME > '${dataimporter.openInfo.last_index_time}'" 
            deltaImportQuery="SELECT 'openInfo' INFOTYPE,a.* FROM OPENINFO a where a.id='${dih.delta.openId}'" 
            deletedPkQuery="select ID from OPENINFO where DELSTATE=1" >
          <field column="TID" name="id" />  
          <field column="ID" name="openId" /> 
          <field column="TITLE" name="title" />  
          <field column="CONTEXT" name="content" clob="true" />  
          <field column="ISSUENUM" name="issueNum" />  
          <field column="ISSUEAGENCY" name="issueAgency" />
          <field column="INFOTYPE" name="type" />
          <field column="RECORDCREATETIME" name="createDate" />
        </entity>
    </document>
</dataConfig>

配置完成,启动测试

  1. 启动solr出现以下画面,则启动成功
    这里写图片描述

  2. 点击左侧的 这里写图片描述选择新建的核心,点击anlysis输入中文词汇,选择配置的ik分词器,点击AnlyseValue 下方出现分词结果,则配置分词成功
    这里写图片描述

  3. 导入数据库数据,点击Dataimport,勾选红框部分,点击Execute执行
    这里写图片描述

    导入成功画面
    这里写图片描述

  4. 点击Query,Execute Query查询到以下画面,则一个单节点单核心的solr服务器搭建成功!
    这里写图片描述

参考文章

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值