5.1 分词器处理分词的组件
(1)Character filters,原始文本的预处理,通常完成HTML元素删除,替换指定字符等功能;
例如:<span>hello<span> --> hello ,& --> and,I&you --> I and you
Tokenizer,分词,按照预设的规则切分文本
例如:hello you and me --> hello, you, and, me
(3)Token filter,切分后处理,例如大小写转换,删除停用词/stopwords,增加同义词
例如:hello you and me --> hello, you, and, me
5.2 内置分词器介绍
5.2.1 Standard Analyzer
默认分词器
按词切分,支持多语言
小写处理
支持中文采用的方法为单字切分
5.2.2 Simple Analyzer
按照非字母切分
小写处理
5.2.3 Whitespace Analyzer
空白字符作为分隔符
5.2.4 Stop Analyzer
相比Simple Analyzer多了去除请用词处理
停用词指语气助词等修饰性词语,如the, an, 的,这等
5.2.5 Keyword Analyzer
不分词,直接将输入作为一个单词输出
5.2.5 Pattern Analyzer
通过正则表达式自定义分隔符
5.3安装IK分词器
5.3.1下载 es版本对应的 IK 版本
5.3.2进入容器docker exec -it es bash
5.3.3通过elasticsearch-plugin install 安装对应版本
5.3.4重启容器
5.4 IK分词器使用
{
"settings" : {
"analysis" : {
"analyzer" : {
"ik" : {
"tokenizer" : "ik_max_word"
}
}
}
},
"mappings" : {
"motor_fans_short_topic" : {
"dynamic" : true,
"properties" : {
"intro" :
{ "type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"title" : {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
}
}
}
}
}
5.5ik_max_word 和 ik_smart 什么区别
ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query
ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询