1.IK分词器
之前我们创建索引,查询数据,都是使用的默认的分词器,分词效果不太理想,会把text的字段分成一个一个汉字。IK分词器在是一款 基于词典和规则 的中文分词器。
1.1 Analysis分词
Analysis-文本分析是把全文本转换一系列单词的过程,叫分词。
举例:默认英文句子是通过空格进行分词并进行小写转换
doc1:A happy new year to you 可以分词为 a 、happy、new、year、to、you
doc2:Happy birthday 可以分词为happy 、birthday
1.2 Analyzer分词器
Analyzer分词器是分词的技术实现,在ES中就提供了以下多种分词器进行不同方式的分词操作
-
Standard Analyzer-默认分词器,按词切分,小写处理
-
Simple Analyzer-按照非字母切分(符号被过滤) ,小写处理
-
Stop Analyzer-小写处理,停用词过滤(the, a, is)
-
Whitespace Analyzer-按照空格切分,不转小写
-
Keyword Analyzer-不分词,直接将输入当作输出
-
Patter Analyzer-正则表达式,默认\W+(非字符分隔)
-
Language-提供了30多种常见语言的分词器
其他三方分词器,如 IK,THULAC
2. IK分词器的安装
2.1 下载
下载与你ES对应版本的IK分词器。
2.2 创建目录
在/es安装目录/plugins目录新建ik目录
2.3 解压
将elasticsearch-analysis-ik-8.8.2
内容解压缩到ik目录下
2.4 重启Elasticsearch
3.IK分词器配置
IK分词器有两种分词模式:ik_max_word和ik_smart模式。
3.1 ik_smart
会做最粗粒度的拆分,比如会将测试开发工程师
拆分为测试 、开发、工程师
等词语。
3.2 ik_max_word
会将文本做最细粒度的拆分,比如会将`测试开发工程师
拆分为测试、试开、开发、工程师、工程、师
。
# 查看IK分词效果
get _analyze
{
"analyzer": "ik_smart",
"text": "测试开发工程师"
}
get _analyze
{
"analyzer": "ik_max_word",
"text": "测试开发工程师"
}