原有问题
默认按照逐个单词分词,而不是此词组
bash
# 测试分词器
POST /_analyze
{
"text": "To learn about how usage data helps us manage and improve our products and services, see our Privacy Statement(opens in a new tab or window). To stop collection, disable usage data here."
}
安装分词器
ES 环境搭建
控制台分别输入:
javascript
docker run -d --name es -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" -v es-data:/usr/share/elasticsearch/data -v es-plugins:/usr/share/elasticsearch/plugins --privileged --network es-net -p 9200:9200 -p 9300:9300 elasticsearch:8.8.2
arduino
docker run -d --name kibana -e ELASTICSEARCH_HOSTS=http://es:9200 --network=es-net -p 5601:5601 kibana:8.8.2
IK下载地址
Releases · medcl/elasticsearch-analysis-ik · GitHub
IK安装
查看 es-plugins 地址 : docker volume inspect es-plugins
在win中地址可能不一样,位置可参考如下路径:
\\wsl$\docker-desktop-data\data\docker\volumes\es-plugins\_data
相关文档推荐:
Docker Desktop for Windows(WSL 2 方式)数据卷存放位置及如何访问_windiws上docker创建的数据库放在那里_4CTOR的博客-CSDN博客
将IK包放入es-plugin_data文件夹内,并改名为 ik
重启es :docker restart es
种类
ik_smart
:粗粒分词,分出的词相对较少,但占用内存空间也较少ik_max_word
:最细切分,分出的词相对更细,但占用内存空间也更多
ES-IK分词器拓展和停用词典
IKAnalyzer.cfg.xml:扩展和通用词典文件所在位置配置
ext.dic:IKAnalyzer.cfg.xml中配置的扩展词典
stopword.dic:IKAnalyzer.cfg.xml中配置的停用词典
为什么要配置扩展词典和停用词典?
扩展词典:可能会有一些全新词IK分词器之前并没有加入到词典中,这时候就需要我们配置一些新出现的词,IK分词器才能在分词的时候把他们当做一个词来看待。如:绝绝子,鲲鲲等
停用词典:敏感词屏蔽