前言
处于项目需要,我们需要在elasticsearch中设置自定义的词典与停用词,这里简单说明下其配置方法。
自己这里是通过docker以及docker-compose的方式来使用的,直接使用elasticsearch的方法流程与之类似,可以看下面的参考。
配置文件
项目目录
项目目录结构大致如下:
(base) ➜ elasticsearch tree .
.
├── config
│ ├── IKAnalyzer.cfg.xml
│ ├── stopwords.dic
│ └── userwords.dic
├── docker-compose.yml
└── Dockerfile
1 directory, 5 files
Dockerfile
其中Dockerfile
中内容如下:
FROM elasticsearch:7.7.1
RUN yes | ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.1/elasticsearch-analysis-ik-7.7.1.zip
docker-compose.yml
其中docker-compose.yml
中内容如下:
version: '3'
services:
es:
image: elasticsearch-ik:7.7.1
container_name: elasticsearch
network_mode: "host"
environment:
- discovery.type=single-node
ports:
- 9200:9200
- 9300:9300
volumes:
- ./config/IKAnalyzer.cfg.xml:/usr/share/elasticsearch/config/analysis-ik/IKAnalyzer.cfg.xml
- ./config/userwords.dic:/usr/share/elasticsearch/config/analysis-ik/userwords.dic
- ./config/stopwords.dic:/usr/share/elasticsearch/config/analysis-ik/stopwords.dic
IKAnalyzer.cfg.xml
其中IKAnalyzer.cfg.xml
中内容如下:
<?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">userwords.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopwords.dic</entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
stopwords.dic
其中stopwords.dic
内容如下:
吃
userwords.dic
其中userwords.dic
内容如下:
曹操和
李德方
启动方式
docker-compose up -d
结果
效果如图:
可以看到,里面李德方
、曹操和
分别作为词语被拆分出来,同时吃
这个词直接就被过滤掉了。