分词就是将一段文本按照一定的规则切分成以一个一个的关键字的过程
Elasticsearch的分析器(Analyzer)有三个组成部分:
字符过滤器(character filters)
在一段文本分词之前,进行预处理,比如过滤html标签等
分词器(tokenizer)
接收字符流,将其分解为单个分词,记录每个分词的顺序、位置、开始和结束字符偏移量等
分词过滤器(token filters)
接受来自分词器的分词流,并且可以修改分词 (例如小写),删除分词(例如删除停用词) 或添加分词(例如同义词)
标准分析器
默认分析器,按Unicode文本分割算法拆分,删除大多数标点符号,小写处理,删除停用词;支持中文,但
只能按字拆分
简单分析器
按照非字母切分,小写处理
空白分析器
遇到空格的时候会进行分词
停止分析器
按照非字母切分,小写处理,删除停用词
关键词分析器
不分词,直接将输入当做输出
模式分析器
按正则表达式分词
语言分析器
对特定语言分词
指纹分析器
专业分析器,它创建一个指纹,可用于重复检测
必须与Elasticsearch版本一致,解压后放到Elasticsearch的plugins
文件夹下,重启Elasticsearch服务即可
下载地址:
https://github.com/medcl/elasticsearch-analysis-ik/releases
IK提供了两个分词算法:ik_smart和ik_max_word,其中ik_smart为最少切分,ik_max_word为最细粒度划分。
ik_max_word:会将文本做最细粒度的拆分,比如会将"中华人民共和国国歌"拆分为"中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌",会穷尽各种可能的组合;
ik_smart:会做最粗粒度的拆分,比如会将"中华人民共和国国歌"拆分为"中华人民共和国,国歌"。
POST /_analyze
{
"analyzer": "ik_max_word",
"text": "中华人民共和国国歌"
}
下载地址:
https://github.com/medcl/elasticsearch-analysis-pinyin/releases
下载地址:
https://github.com/sing1ee/elasticsearch-jieba-plugin/tags