【全】使用 Docker 的 Solr 容器中安装 IK 中文分词器

200 阅读3分钟

【原创文章,转载请标明出处】

该文首次发表在我的个人博客网站中,然后是 CSDN 上,现在想在该平台也发表一篇,均为作者本人行为,非转载。

这些坑我已经帮你踩过了

  1. 现在大家能够在👉网上(需要禾斗学上网)下载的 IK 分词器版本已经非常老了,而 Solr 更新还是非常快的,所以会出现版本不兼容的问题,不然即使成功装上了,也无法进行分词,Solr 会报异常:java.lang.AbstractMethodError
File Summary + Labels Uploaded Size
[IK Analyzer 2012FF_hf1_source.rar] IK Analyer 2012-FF Hotfix 1 源码 Type-Archive OpSys-All Ver 2012 FF hf1 Dec 21, 2012 1.02MB
[IK Analyzer 2012_u6_source.rar] IK Analyer 2012 upgrade 6 源码 Type-Source OpSys-All version 2012 u6 Dec 21, 2012 1.02MB
[IKAnalyzer2012_u6.zip] IK Analyer 2012 完整分发包 upgrade 6 Type-Archive OpSys-All version 2012 u6 For Lucene 3.x / Solr3.x Oct 29, 2012 2.04MB
[IK Analyzer 2012FF_hf1.zip] IK Analyer 2012-FF hotfix 1 完整分发包 Type-Archive OpSys-All version 2012FF hotfix1 For lucene4.0 / solr 4.0 Oct 26, 2012 2.05MB
[IK Analyzer 2012 FF_SRC.rar] IK Analyer 2012-FF 源码 Type-Source OpSys-All Ver 2012 FF Oct 23, 2012 1.02MB
  1. 所以现在给大家提供比较新的两个版本:

    • Solr 6 (包含)以下食用更佳:https://github.com/cj96248/ik-analyzer-solr6

    • (推荐) Solr 7&8 食用更佳:https://github.com/magese/ik-analyzer-solr

      上面两个都需要将源码打成 JAR 包

  2. 当然 Solr5 以前的可以装上老版本,我也都因为勤(cai)快(keng)下好了

    链接:https://pan.baidu.com/s/1WAtY5kjI75Kg-e6OAH69cw 提取码:g5ib

安装 Solr

拉取 Solr 镜像

docker pull solr

创建 Solr 容器并运行

--name mySolr 给自己的容器取名 mySolr

-p 8983:8983 8983 端口号映射到宿主机的 8983 端口上

-d solr 后台运行容器

docker run --name mySolr -p 8983:8983 -d solr

直接访问 Solr 服务

浏览器直接访问

http://宿主服务器ip地址:8983

电脑虚拟机无法访问检查防火墙,阿里云等云服务器需要进行安全组配置开放端口,这里就不多赘述了。

页面上的 Versions 就是 Solr 的版本号

访问Solr
访问Solr

安装核心选择器

创建核心选择器

exec -it :交互式执行容器

-c 内核的名称(必须)

docker exec -it mySolr bin/solr create_core -c myIKCore

安装配置 IK 分词器

  1. 传输 IK 分词器

    • 先通过 FTP 传输软件传入宿主机的某一文件夹内

    • 没有按照开篇说的步骤将源码打成 JAR 包的我也准备好了

      链接:https://pan.baidu.com/s/1HRkBrGSQ3d4jl-XL07fSKw 提取码:fviy

    • 将 JAR 包复制到 Solr 容器的分词包文件夹中

      docker cp ik-analyzer.jar mySolr:/opt/solr-8.3.1/contrib/analysis-extras/lucene-libs
      
  2. 查看 Solr 容器在宿主机中数据卷的位置

    docker inspect mySolr
    

    找到 Mounts

    Destination 容器里的路径

    Source 对应宿主机里的路径

    Mounts
    Mounts
  3. 将 IK 分词器配置到 Solr 的核心配置文件中

{Source} 就是上一步骤的 Source 值,不是真写 {Source} 哈

cd {Source}/data/myIKCore/conf/
vim solrconfig.xml

添加如下内容

dir : 容器存放自带分词 JAR 包的目录

regex : JAR 包名

<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs/" regex="ik-analyzer.jar" />

声明中文分词器

vim managed-schema

找到指定位置添加配置

<!-- IKAnalyzer -->
<fieldType name ="text_ik" class ="solr.TextField">
    <!-- 索引时候的分词器 -->
    <analyzer type ="index" isMaxWordLength ="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    <!-- 查询时候的分词器 -->
    <analyzer type ="query" isMaxWordLength ="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

真香时刻

重启 Solr 容器

docker restart mySolr

浏览器访问 Solr

  • 选择刚刚创建的核心选择器

    选择核心选择器
    选择核心选择器
  • 进行分词分析

    进行分词分析
    进行分词分析