前言
ES作为全文检索服务,势必要对原始的文本进行内容的拆分,然后才能够进行有效的索引对吧,而拆分原始内容到一个一个小的词或者说语音单元,这部分的功能呢是由ES的分词器去完成的呢,他本身就内置了许多的分词器,在安装和使用IK分词器之前先了解一下Elasticsearch内置的几个分词器。
一、ES常用内置分词器
-
standard - ES index默认分词器,按词切分,小写处理,
-
simple - 按照非字母切分(符号被过滤), 小写处理,会去除数字
-
whitespace - 按照空格切分,不转小写
-
stop - 小写处理,停用词过滤(the,a,is)
-
keyword - 不分词,直接将输入当作输出
示例:
1、standard:支持中英文,中文会议单个字切割。他会将词汇单元转换成小写形式,并去除停用词和标点符号
POST _analyze
{
"analyzer": "standard",
"text": ["my name is 张某某 X"]
}
2、simple:首先会通过非字母字符来分割文本信息,然后将词汇单元统一为小写形式。该分析器会去掉数字类型的字符。中文原样输出,
3、 whitespace:仅仅是去除空格,对字符没有lowcase化并且不对生成的词汇单元进行其他的规范化处理。
二、 IK分词器的安装
下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases在这上面有elasticsearch所对应版本的IK分词器以编译的包,可以在上面找到对应版本进行下载使用
1、下载:
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.1/elasticsearch-analysis-ik-7.5.1.zip
2、在解压到elasticsearch/plugin/ik/文件夹中,ik文件夹需要自己建
unzip elasticsearch-analysis-ik-7.5.1.zip -d $ES_HOME/plugins/ik/
把$ES_HOME替换成你elasticsearch所在目录即可
3、重启elasticsearch后就可以用了
使用ik分词器:
创建索引时指定分词器:
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"ik": {
"tokenizer": "ik_max_word"
}
}
}
},
"mappings": {
"properties": {
"title": {
"type": "text"
},
"content": {
"type": "text",
"analyzer": "ik_max_word"
}
}
}
}
IK分词器示例:
1、ik_smart
:会做最粗粒度的拆分
POST _analyze
{
"analyzer": "ik_smart",
"text": ["我是中国人"]
}
2、ik_max_word
:会将文本做最细粒度的拆分
POST _analyze
{
"analyzer": "ik_max_word",
"text": ["我是中国人"]
}