ElasticSearch分词器
一、什么是分词
把文本转换为一个个的单词,分词称为analysis。es默认只对英文语句做分词,中文不支持。每个中文都会被拆分为独立的个体
分词测试: POST url/_analyze
body:
{
"analyzer": "standard",
"text": "i am a hero, i love the world"
}
二、es内置分词器
1.内置英文分词器
standard:默认分词器,单词会被拆分,大小写会转换为小写
simple::按照非字母分词,大写转为小写
whitespace:按照空格分词,忽略大小写
stop:去除无意义的单词,例如 the a an is
keyword:不做分词,把整个文本作为一个单独的关键字
2.安装中文分词器插件
https://github.com/medcl/elasticsearch-analysis-ik
2.1下载后安装到服务器,解压后放到指定文件夹,重启即可。
2.2中文分词器 ik_max_word
会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合,适合 Term Query
2.3中文分词器 ik_smart
会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”,适合 Phrase 查询
2.4自定义中文词库
在{es}/plugins/conf下,创建文件:vim custom.dic,并录入自定义词汇
在{es}/plugins/conf/IKAnalyzer.cfg.xml,增加配置<entry key="ext_dict">custom.dic</entry>
重启即可