分词器
文本分析就是把全文本转换成一系列单词(term/token)的过程,也叫分词。在 ES 中,Analysis 是通过分词器(Analyzer) 来实现的,可使用 ES 内置的分析器或者按需定制化分析器。
分词器 接受一个字符串作为输入,将这个字符串拆分成独立的词或 语汇单元(token) (可能会丢弃一些标点符号等字符),然后输出一个 语汇单元流(token stream) 。
分词器的组成
分词器是专门处理分词的组件,一个文本进来首先对文本数据进行处理,再去分词,最后对分词的结果进行过滤。分词器有以下三部门组成:
- Character Filters:针对原始文本处理,比如去除 html 标签
- Tokenizer:按照规则切分为单词,比如按照空格切分
- Token Filters:将切分的单词进行加工,比如大写转小写,删除 stopwords,增加同义语
分词API
- 直接指定分词器分词
GET _analyze
{
"analyzer": "standard",
"text" : "Mastering Elasticsearch , elasticsearch in Action"
}
- 指定索引字段分词
POST books/_analyze
{
"field": "title",
"text": "Mastering Elasticesearch"
}
- 自定义分词
POST /_analyze
{
"tokenizer": "standard",
"filter": ["lowercase"],
"text": "Mastering Elasticesearch"
}
ik分词器
ik分词器采用两个分词算法:ik_smart
(最少划分)和ik_max_word
(最细粒度划分)
- 安装:ik分词器下载地址:
- 下载完毕,解压后放入
elasticsearch
的插件中即可
- 重启观察ES加载插件
- 使用kibana测试分词
- 自定义分词器
未定以前“我爱西红柿吻番茄”不会在一起:
自定义分词:
-
新建字典:
-
在ik中配置新建字典
-
重启ES生效并测试
如果需要配置自己的分词,就需要在自定义的dic文件中进行相关配置即可。