Linux下docker安装solr8-x并配置中文分词器-详细安装过程

Linux下docker安装solr8-x并配置中文分词器-详细安装过程插图

本次参考文章 1、docker 安装solr8.6.2 配置中文分词器 2、阳光沙滩博客系统-文章搜索模块,感谢两位大佬的教程指导

创建docker容器

docker安装

使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

重新启动Docker服务

systemctl daemon-reload
systemctl restart docker

配置Docker开机自启动

systemctl enable docker

docker安装solr

这里直接安装最新版就可以了,后面再进行修改

docker pull solr:8.6.2

创建并允许solr容器

docker run --name blog-solr -d -p 8983:8983 solr:8.6.2 // blog-solr这个可用自行命名

// 参数详解

run 运行容器 -d 后台运行 -p 容器端口和宿机端口映射 -- name 容器名称 blog-solr 指镜像名称

创建核心

docker exec -it --user=solr blog-solr bin/solr create_core -c Ik_core

Linux下docker安装solr8-x并配置中文分词器-详细安装过程插图1

出现 Created new core 'Ik_core' 即创建超过

浏览器访问

http://localhost:8983

Linux下docker安装solr8-x并配置中文分词器-详细安装过程插图2

solr配置中文分词器

下载Ik文件

链接:https://pan.baidu.com/s/1bVCQljlfi6pE-6d_cJESwQ 提取码:4e4v

// 创建创建个目录将解压的文件放在这里
mkdir /mnt/Ik/

Linux下docker安装solr8-x并配置中文分词器-详细安装过程插图3

Linux下docker安装solr8-x并配置中文分词器-详细安装过程插图4

当使用虚拟机复制不进去时,考虑是否文件夹具有权限,修改权限,包括子目录的

chmod 777 * -R

复制配置文件

这里需要根据自己的solr版本(solr-8.6.2)进行修改对应的版本号,查看版本可以使用 docker images,就可以看到安装的版本。

docker cp  ik-analyzer-8.3.0.jar blog-solr:/opt/solr-8.6.2/server/solr-webapp/webapp/WEB-INF/lib/
docker cp  ik-analyzer-solr7-7.x.jar blog-solr:/opt/solr-8.6.2/server/solr-webapp/webapp/WEB-INF/lib/
docker cp  solr-dataimporthandler-8.4.0.jar blog-solr:/opt/solr-8.6.2/server/solr-webapp/webapp/WEB-INF/lib/
docker cp solr-dataimporthandler-extras-8.4.0.jar  blog-solr:/opt/solr-8.6.2/server/solr-webapp/webapp/WEB-INF/lib/

进入solr容器创建文件夹

docker exec  -it --user=root blog-solr /bin/bash
cd /opt/solr-8.6.2/server/solr-webapp/webapp/WEB-INF
mkdir classes
exit

IKAnalyzer.cfg.xml

Ik目录下,新建一个IKAnalyzer.cfg.xml文件,可以先在Windows新建好,然后拖动进去,怎么快乐怎么来吧。内容就是下面的内容。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

<properties>
    <comment>IK Analyzer 扩展配置</comment>
        <!--用户可以在这里配置自己的扩展字典 -->
    <entry key="ext_dict">ext.dic;</entry>
        <!--用户可以在这里配置自己的扩展停止词字典-->
    <entry key="ext_stopwords">stopword.dic;</entry>
</properties>

然后我们就执行下面的指令,这是在Ik目录下执行的。

docker cp IKAnalyzer.cfg.xml blog-solr:/opt/solr-8.6.2/server/solr-webapp/webapp/WEB-INF/classes/

修改managed-schema

docker exec -it  --user=root blog-solr /bin/bash
cp /opt/solr-8.6.2/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-8.6.2.jar /opt/solr-8.6.2/server/solr-webapp/webapp/WEB-INF/lib/
cd /var/solr/data/Ik_core/conf
vim managed-schema 

这里,可能你会出现 bash: vim: command not found

出现bash: vim: command not found 的解决办法 (centOS)

因为vim没有安装,使用如下命令安装:

apt-get install vim

又可能会出现如下问题:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package vim

此时需要:

注意操作目录

[email protected]:/# apt-get update

然后再:

apt-get install vim

中途会让你确认一次,输入 Y 然后就可以了,我们继续执行

cd /var/solr/data/Ik_core/conf
vim managed-schema 

managed-schema最下面添加以下内容:

这里的内容根据yulate拉大锯两位大佬的配置文件结合在一起的

需要注意的是,8.x的int和long都是pintplong,而5.x的是int无需要加p

<!-- 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>

     <fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
         <analyzer type="index">
             <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
         </analyzer>
         <analyzer type="query">
             <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
         </analyzer>
     </fieldType>
    <!--自定义字段-->
    <field name="blog_view_count" type="pint" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="blog_title" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="blog_content" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="blog_create_timme" type="pdate" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="blog_labels" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="blog_url" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="blog_category_id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <!--搜索item-->
    <field name="search_item" type="text_cn" indexed="true" stored="true" required="true" multiValued="true" />
    <copyField source="blog_title" dest="search_item" />
    <copyField source="blog_content" dest="search_item" />
    <copyField source="blog_labels" dest="search_item" />

Linux下docker安装solr8-x并配置中文分词器-详细安装过程插图5

修改solrconfig.xml

vim solrconfig.xml

在最下面添加

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

重启solr

exit
docker restart blog-solr

docker容器自动启动设置

如果已经启动了则可以使用如下命令:
docker update --restart=always <CONTAINER ID>

配置成功

Linux下docker安装solr8-x并配置中文分词器-详细安装过程插图6

版权声明:
作者:北忘山
文章:Linux下docker安装solr8-x并配置中文分词器-详细安装过程
链接:https://www.beiwangshan.com/archives/20.html
来源:beiwangshan.com
文章版权归作者所有,未经允许请勿转载。
THE END
分享
二维码
打赏
< <上一篇
下一篇>>