本次参考文章 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

出现 Created new core 'Ik_core' 即创建超过
浏览器访问
http://localhost:8983

solr配置中文分词器
下载Ik文件
链接:https://pan.baidu.com/s/1bVCQljlfi6pE-6d_cJESwQ 提取码:4e4v
// 创建创建个目录将解压的文件放在这里
mkdir /mnt/Ik/


当使用虚拟机复制不进去时,考虑是否文件夹具有权限,修改权限,包括子目录的
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
此时需要:
注意操作目录
root@43b0864ac698:/# 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都是
pint和plong,而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" />

修改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>
配置成功






























