侧边栏壁纸
博主头像
极客日记 博主等级

行动起来,活在当下

  • 累计撰写 93 篇文章
  • 累计创建 17 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

【Solr】 docker 安装 solr8.11.1 并配置IK分词

Jack.Jia
2022-03-05 / 0 评论 / 0 点赞 / 3 阅读 / 0 字

docker 拉取 solr

docker pull solr:8.11.1

创建 solr 容器并运行

docker run --name solr -d -p 8983:8983 -t solr:8.11.1

开放防火墙端口

firewall-cmd --zone=public  --add-port=8983/tcp --permanent
firewall-cmd --reload

如果是云服务器,还需要在实例安全组配置开放端口,这里就不多赘述了。

直接访问 solr 服务

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

Snipaste_20220330_223645.png

创建 solr core

docker exec -it solr bin/solr create_core -c ik_core

也可以在 admin 页面创建:
Snipaste_20220330_223910.png

坑!!!
通过 admin 创建 core 后,发现会提示失败:

Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused by: Can't find resource 'solrconfig.xml' in classpath or '/opt/solr/server/solr/new_core'

不过呢,会在容器内部 /opt/solr/server/solr 目录下创建一个 new_core 空文件夹,我们把默认配置文件拷贝到该文件夹下

docker exec -it solr /bin/bash
cp -r /opt/solr-8.11.1/server/solr/configsets/_default/conf/* /opt/solr-8.11.1/server/solr/new_core/

设置身份验证

export SOLR_AUTH_TYPE='basic'
export SOLR_AUTHENTICATION_OPTS='-Dbasicauth=username:password'

使用 docker-compose 安装 solr

version: '3.9'
services:
  solr:
    image: solr:8.11.1
    container_name: solr
    networks:
      - nginx
    expose:
      - 8983
    ports:
      - '8983:8983'
    restart: always
    privileged: true
    volumes:
      - '/data/docker/solr/data:/var/solr/data/'
      - '/data/docker/solr/server:/opt/solr-8.11.1'
networks:
  nginx:
    name: nginx
    driver: bridge

安装配置 IK 分词器

使用的是 https://github.com/magese/ik-analyzer-solr

下载 jar

https://search.maven.org/search?q=com.github.magese

将 jar 包放入 solr 服务的 Jetty 或 Tomcat 的 webapp/WEB-INF/lib/ 目录下

docker cp ik-analyzer-8.5.0.jar solr:/opt/solr-8.11.1/server/solr-webapp/webapp/WEB-INF/lib/

复制配置文件

# 使用root用户(超级管理)进入 solr 的容器里创建文件夹
docker exec  -it --user=root solr /bin/bash

# 创建文件夹(classes)
cd /opt/solr-8.4.0/server/solr-webapp/webapp/WEB-INF
mkdir classes

# 退出容器
exit

# 将下面的5个配置文件放入solr服务的Jetty或Tomcat的webapp/WEB-INF/classes/目录下
① IKAnalyzer.cfg.xml
② ext.dic
③ stopword.dic
④ ik.conf
⑤ dynamicdic.txt

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

配置 solr 的 managed-schema,添加 ik 分词器

docker exec -it  --user=root solr /bin/bash
cd /var/solr/data/ik_core/conf
vi managed-schema

添加如下:

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

重启 solr 查看分词效果

docker restart solr

Snipaste_20220330_230223.png

至此,就可以愉快的使用 solr 啦 ~

0

评论区