分词器
一、自定义分词器
1 #自定义分词器 2 PUT cunstom_analysis 3 { 4 "settings": { 5 "analysis": { 6 "char_filter": { 7 "my_char_filter":{ 字符过滤器,在切词时将指定词语进行替换 8 "type":"mapping", 9 "mappings":[ 10 "& => and", 11 "| =>or"] 12 }, 13 "html_char_filter":{ 过滤掉html的标签 14 "type":"html_strip", 15 "escaped_tags":["a"] 设置a标签保留 16 } 17 }, 18 "filter": { 这里的filter作为停用词,将自定义的词语在切词时直接去除 19 "my_stopword":{ 20 "type":"stop", 21 "stopwords":["is","a"] 22 } 23 }, 24 "tokenizer": { 分词器,在切词时根据指定的标点或者这词语进行切词 25 "my_tokenizer":{ 26 "type":"pattern", 27 "pattern":"[,.?]" 28 } 29 }, 30 "analyzer": { 31 "my_analyzer":{ 32 "type":"custom", 33 "char_filter":["my_char_filter","html_char_filter"], 34 "filter":["my_stopword","lowercase"], filter主要作用是定义停用词、定义大小写转换等 35 "tokenizer":"my_tokenizer" 36 } 37 } 38 } 39 } 40 }
利用自定义分词器进行切词后的结果如上图所示:
1、mapping字符过滤器在切词前将&变为and,将|变为or
2、html_strip字符过滤器在切词前过滤掉了除标签之外的所有html标签
3、filter停用词在切词后将is、a词语去除,使得结果中没有这两个词语
4、tokenizer切词器根据指定的字符”,.?“进行短语的拆分
二、中文分词器
1、安装和部署
1) 下载:https://github.com/medcl/elasticsearch-analysis-ik
2) 创建插件文件夹 cd your-es-root/plugins/ && mkdir ik
3) 将插件解压缩到文件夹 your-es-root/plugins/ik
4) 重新启动es
2、两种analyzer
ik_max_word:细粒度
ik_smart:粗粒度