Docker安装Solr和IK,以及数据导入。

本文主要是参考了:

     Docker+Solr+IK

     JavaEE进阶——Docker安装Solr(单机/集群)

于是写了一些个人心得。

好了言归正传,话不多说,说多了老婆又该说我絮叨,没有重点了。

一:环境需求

       1:docker :可以参考(本人写的Docker安装

       2:mysql

二:在docker 中安装Solr

  1. docker下载solr镜像
  • docker pull solr:7.4.0

    2.启动solr镜像

  • docker run --name mysolr  -d -p 18983:8983 -t solr:7.4.0
  • 1. run 运行容器
    2. -d 代表后台运行
    3. -p 容器端口和宿机端口映射
    4. --name 容器名称
    5. solr 镜像名称

   3.新建core

  • docker exec -it --user=solr mysolr bin/solr create_core -c ik_core

   4.为了方便后续修改配置,将容器 solr 文件拷贝本地 /usr/local/solr/ 路径下

  • docker cp mysolr:/opt/solr/ /usr/local/ # 容器拷贝宿主机

  5.进入/opt/solr/server/solr-webapp/webapp/WEB-INF/lib添加jar包

  • ik-analyzer-7.4.0.jar
    mysql-connector-java-8.0.11.jar
    solr-dataimporthandler-7.4.0.jar
    solr-dataimporthandler-extras-7.4.0.jar

         ik-analyzer-7.4.0.jar地址ik-analyzer

         solr-dataimporthandler-7.4.0.jar和solr-dataimporthandler-extras-7.4.0.jar在/usr/local/mysolr/solr/dist文件夹下

  • docker cp  /usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib/solr-dataimporthandler-extras-7.4.0.jar  mysolr:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib/solr-dataimporthandler-extras-7.4.0.jar
    docker cp  /usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib/solr-dataimporthandler-7.4.0.jar  mysolr:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib/solr-dataimporthandler-7.4.0.jar
    docker cp  /usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib/mysql-connector-java-5.1.46.jar  mysolr:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib/mysql-connector-java-5.1.46.jar
    docker cp  /usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib/ik-analyzer-7.4.0.jar  mysolr:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib/ik-analyzer-7.4.0.jar

   6.进入/opt/solr/server/solr/ik_core/conf,新建data-config.xml

    

  • <?xml version="1.0" encoding="UTF-8"?>
    <dataConfig>
        <dataSource name="source1" type="JdbcDataSource"
                  driver="com.mysql.jdbc.Driver"
                  url="jdbc:mysql://***.**.**.**:3306/*****"
                  user="****"
                  password="******"
                  batchSize="-1" />
        <document>
            <entity name="service_info" dataSource="source1"
                query="SELECT id,title,business_type_id,category_id , service_price , service_time,service_desc,service_area,
                cover,click_count,create_by,create_date,del_flag FROM service_info where del_flag = 1">
    
                <field column='id' name='id' />
                <field column='title' name='title' />
                <field column='business_type_id' name='business_type_id' />
                <field column='category_id' name='category_id' />
                <field column='service_price' name='service_price' />
                <field column='service_time' name='service_time' />
                <field column='service_desc' name='service_desc' />
                <field column='service_area' name='service_area' />
                <field column='cover' name='cover' />
                <field column='click_count' name='click_count' />
                <field column='create_by' name='create_by' />
                <field column='create_date' name='create_date' />
                <field column='del_flag' name='del_flag' />
            </entity>
        </document>
    </dataConfig>

  7.配置managed-schema,加入IK分词

  •  <!-- ik分词器 -->
        <fieldType name="text_ik" class="solr.TextField">  
            <analyzer type="index" useSmart="false"
                class="org.wltea.analyzer.lucene.IKAnalyzer" />
            <analyzer type="query" useSmart="true"
                class="org.wltea.analyzer.lucene.IKAnalyzer" />
        </fieldType> 
    
        <field name='id' type="string" indexed="true" stored="true"/>
        <field name='title' type="text_ik" indexed="true" stored="true" omitNorms = "false" omitTermFreqAndPositions ="false"/>
        <field name='business_type_id' type="string" indexed="true" stored="true"/>
        <field name='category_id' type="string" indexed="true" stored="true"/>
        <field name='service_price' type="string" indexed="true" stored="true"/>
        <field name='service_time' type="string" indexed="true" stored="true"/>
        <field name='service_desc' type="text_ik" indexed="true" stored="true"/>
        <field name='service_area' type="text_ik" indexed="true" stored="true"/>
        <field name='cover' type="string" indexed="true" stored="true"/>
        <field name='click_count' type="string" indexed="true" stored="true"/>
        <field name='create_by' type="string" indexed="true" stored="true"/>
        <field name='create_date' type="string" indexed="true" stored="true"/>
        <field name='del_flag' type="string" indexed="true" stored="true"/>

 8.配置solrconfig.xml

  • <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
           <lst name="defaults">
              <str name="config">data-config.xml</str>
           </lst>
    </requestHandler>
    

9.重启solr容器

  • docker restart mysolr 

10.登录http://ip:18983/solr/

11.导入数据库数据,最后选择execute(只执行一次)

  •    

12.测试是否成功(有数据表示成功)

13.测试分词效果(分词效果理想)

最后单机版的结束。一个不想做程序员的猴子。祝大家早日脱离苦海。谢谢

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值