背景
什么是分词
把文本转换为一个个的单词,分词称之为analysis。es默认只对英文语句做分词,中文不支持,每个中文字都会被拆分为独立的个体。
es 内置分词
- standard:默认分词,单词会被拆分,大小会转换为小写。
- simple:按照非字母分词。大写转为小写。
- whitespace:按照空格分词。忽略大小写。
- stop:去除无意义单词,比如the/a/an/is…
- keyword:不做分词。把整个文本作为一个单独的关键词
文章推荐
es(Elasticsearch)安装使用(01es安装篇)_少年ing的博客-CSDN博客
es(Elasticsearch)客户端Kibana安装使用(02Kibana安装篇)_少年ing的博客-CSDN博客
es(Elasticsearch)安装使用(03ik分词器安装篇)_少年ing的博客-CSDN博客
es(Elasticsearch)客户端Elasticsearch-head安装使用(04Elasticsearch-head安装篇)_少年ing的博客-CSDN博客
版本声明
CenOS:7.5阿里云服务器 关闭防火墙
JDK:1.8;
Elasticsearch:7.6.1;
Kibana:7.6.1;
IK:7.6.1;
1、ik下载地址
注意和 要和es版本对应
Releases · medcl/elasticsearch-analysis-ik · GitHub
某网盘
链接:https://pan.baidu.com/s/1-ADPvSk9wt0cjPAMP9nYKw
提取码:k3yn
2.安装
2.1 使用 es用户 在es安装目录plugins下 创建ik目录
su es 切换es用户
mkdir ik
** 2.2 将下载ik压缩包上传ik目录 并解压到该目录 解压后 删除压缩包负责启动有问题**
cd /usr/local/elasticsearch-7.6.1/plugins/ik
unzip elasticsearch-analysis-ik-7.6.1.zip
若报 bash: unzip: command not found
安装下 unzip
yum install -y unzip zip
** 2.3重启Elasticsearch**
在es 的bin目录先查询PID,然后杀死进程:
ps -ef | grep elasticsearch
启动es
cd /usr/local/elasticsearch-7.6.1/bin
./elasticsearch -d
启动ES之后,ES会自己加载IK插件,如果启动ES成功,说明IK安装成功:
重启Kibana
ES重启之后,ES的客户端
Kibana也应该重启
。
1、root用户或者es用户都可以
2、cd /usr/local/elasticsearch-7.6.1/kibana-7.6.1-linux-x86_64/bin
3、./kibana -d
2、测试分词效果
#默认
POST _analyze
{
"analyzer": "standard",
"text": "我是中国人"
}
#ik ik_smart 最少切分算法
POST _analyze
{
"analyzer":"ik_smart",
"text":"我是中国人"
}#ik ik_max_word 最细粒度切分算法
POST _analyze
{
"analyzer":"ik_max_word",
"text":"我是中国人"
}
3、指定IK分词器作为默认分词器
ES的默认分词设置是standard,这个在中文分词时就比较尴尬了,会单字拆分,比如我搜索关键词“清华大学”,这时候会按“清”,“华”,“大”,“学”去分词,然后搜出来的都是些“清清的河水”,“中华儿女”,“地大物博”,“学而不思则罔”之类的莫名其妙的结果,这里我们就想把这个分词方式修改一下,于是呢,就想到了ik分词器,有两种ik_smart和ik_max_word。
ik_smart会将“清华大学”整个分为一个词,而ik_max_word会将“清华大学”分为“清华大学”,“清华”和“大学”,按需选其中之一就可以了。
修改默认分词方法(这里修改school_index索引的默认分词为:ik_max_word):
PUT school_index
{
"settings" : {
"index" : {
"analysis.analyzer.default.type": "ik_max_word"
}
}
}
首先,咱们还是得分析出现此问题的原因
前边也说了,其分词是基于自身的一个词典 进行分词的,出现此情况原因在于 ‘我是’ 这个词,我们的词典没有,所以不会吧这几个字切分为词,
那么我们是不是可以根据一些业务场景自定义词典呢?
答案是:当然可以!
IK 分词器 自定义词典
进入咱们的es plugins 下 进入ik分词器 目录,发现其配置文件中 ,说明了用户是可以自定义词典的!
cd
/usr/local/elasticsearch-7.6.1/plugins/ik/config
那么我们按着此模式,也新建一个词典 随意取名.dic
例如我定义一个词典 my.dic 在其中输入我业务场景所用的 我的
touch my.dic
vim my.dic
输入 我的
保存
在修改我们的配置文件 加入我们的自定义词典
vim IKAnalyzer.cfg.xml
重启es
测试
参考
CentOS7下安装ElasticSearch7.6.1详细教程(单机、集群搭建)_@来杯咖啡的博客-CSDN博客_centos7安装elasticsearch
ElasticSearch分词器IK安装教程_@来杯咖啡的博客-CSDN博客_elasticsearch ik分词安装
Elasticsearch (ES) 学习之路(三) IK 分词器安装与使用自定义词典_保护我方胖虎的博客-CSDN博客_es 自定义词典
版权归原作者 少年ing 所有, 如有侵权,请联系我们删除。