一、使用docker命令查看solr版本(也可以去docker仓库查看:https://hub.docker.com/_/solr/)
docker search solr
二、可以拉取对应版本(我这使用的版本是8.11.1)
docker pull solr:8.11.1
三、创建my_solr容器
docker run --name my_solr -d -p 8983:8983 solr:8.11.1
run 运行容器
– name 容器名称
-d 后台运行
-p 容器端口和宿机端口映射
solr:8.11.1 指镜像名称
四、创建solr核心命令
1.创建solr核心
//创建名为my_core的核心
docker exec -it --user=solr my_solr bin/solr create -c my_core
//删除核心命令
docker exec -it --user=solr my_solr bin/solr delete -c my_core
2.修改solr.in.sh.orig权限(可选)
如果你的solr使用的是root启动,solr初始化检查时会报一些警告信息,最重要的是在使用solr时,因为是root用户,无权限操作,服务器的内存会被大量占用,严重时会导致OOM问题。
//1.此文件位置在/opt/solr/bin目录下
//进入solr容器
docker exec -it -u root my_solr /bin/bash
cd /opt/solr/bin
//安装vim命令:apt-get install vim(如果提示:Unable to locate package vim,则需要敲:apt-get update)
//等更新完毕以后再敲命令: apt-get install vim
vim solr.in.sh.orig
//找到SOLR_ULIMTIT_CHECKS行,默认为true,这里改为false
SOLR_ULIMTIT_CHECKS=false
五、访问浏览器
127.0.0.1:8983/solr (自己的ip + 端口 + /solr)
标红框的地方就是刚刚创建的核心
六、solr配置中文分词器:下载Ik文件(永久有效)
链接:https://pan.baidu.com/s/1CeiClqDfV_Ye93V9onG1xw 提取码:hgvc
//创建Ik文件夹
mkdir /Ik
将解压的文件放置到创建的文件中(文件名随便取,我这里是Ik)
七、将下载的ik文件拷贝至sorl容器中
//将jar包拷贝到solr的lib目录下
docker cp ik-analyzer-8.3.0.jar my_solr:/opt/solr-8.11.1/server/solr-webapp/webapp/WEB-INF/lib/
docker cp ik-analyzer-solr7-7.x.jar my_solr:/opt/solr-8.11.1/server/solr-webapp/webapp/WEB-INF/lib/
docker cp solr-dataimporthandler-8.4.0.jar my_solr:/opt/solr-8.11.1/server/solr-webapp/webapp/WEB-INF/lib/
docker cp solr-dataimporthandler-extras-8.4.0.jar my_solr:/opt/solr-8.11.1/server/solr-webapp/webapp/WEB-INF/lib/
八、进入容器修改managed-schema
//进入solr容器
docker exec -it -u root my_solr /bin/bash
//进入到conf目录
cd /var/solr/data/my_core/conf
//修改managed-schema(注:如果没有安装vim命令,在虚拟机安装即可。)
//安装vim命令:apt-get install vim(如果提示:Unable to locate package vim,则需要先输入此命令:apt-get update)
//等更新完毕以后再敲命令: apt-get install vim
vim managed-schema
将以下内容添加至managed-schema文件中
<!-- ik分词器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
//useSmart:分词粗细粒度(true:粗分词 false:细分词)
<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">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" 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>
<!-- 定义两个字段 -->
//name:名字随便取 type:分词的类型 indexed:是否建立索引 stored:是否储存到硬盘
<field name=