Elasticsearch系列-Analyzer分词
Analysis与Analyzer
Analysis:文本分析是把全文本转换一系列单词(term/ token)的过程,也叫分词。
Analyzer:ES的Analysis是通过Analyzer来实现的,ES有内置的分析器,也可以使用一些定制化分析器。
除了在数据写入时会做分词处理,在匹配Query语句时,也会使用到分词处理,使用到分词器去对查询语句进行分析。
Analyzer的组成
分词器是专门处理分词的组件,Analyzer由三部分组成:
- Character Filters:针对原始文本处理,例如去除html。
- Tokenizer:按照规则,切分为单词。
- Token Filter:将切分的单词进行加工,小写,删除stopwords,增加同义词。
ES的内置分词器
分词器 | 描述 |
---|---|
Standard Analyzer | 默认分词器,按词切分,小写处理 |
Simple Analyzer | 按照非字母切分(符号被过滤),小写处理 |
Stop Analyzer | 小写处理,停用词过滤(the,a, is) |
Whitespace Analyzer | 按照空格切分,不转小写 |
Keyword Analyzer | 不分词,直接将输入当做输出 |
Patter Analyzer | 正则表达式,默认 \W+(非字符分隔) |
Language | 提供了30多种常见语言的分词器 |
Customer Analyzer | 自定义分词器 |
分词器 | Tokenizer | Token Filters | Character Filters |
---|---|---|---|
Standard Analyzer | Standard | Standard,Lower Case,Stop(默认关闭) | |
Simple Analyzer | Lower Case | ||
Stop Analyzer | Lower Case | Stop | |
Whitespace Analyzer | WhiteSpace | ||
Keyword Analyzer | Keyword | ||
Patter Analyzer | Pattern | Lower Case,Stop |
中文分词器
分词器 | 描述 | Tokenizer | Token Filters | Character Filters |
---|---|---|---|---|
ICU Analyzer | ICU中文分词 ,需要安装Elasticsearch-plugin install analyzer-icu | ICU Tokenizer | Normalization,Folding,Collation,Transform | Normalization |
IK | 支持自定义词库,支持热更新分词字典 | |||
THULAC | 清华大学自然语言处理和社会人文计算实验室的一套中文分词器 |
Analyzer API
GET /_analyze
POST /_analyze
GET /<index>/_analyze
POST /<index>/_analyze
示例:
GET /_analyze
{
"analyzer" : "standard",
"text" : "Quick Brown Foxes!"
}
结语
更多详细分词处理,可以去官网看看。