官方相关阅读:
- https://www.elastic.co/guide/en/elasticsearch/reference/7.4/indices-analyze.html
- https://www.elastic.co/guide/en/elasticsearch/reference/current/analyzer-anatomy.html
1. 分析器 Analyzer
Analysis 也叫分词,是把全文本转换成一系列单词(term/token)的过程。Analysis 是通过 Analyzer 来实现的,其中 ElasticSearch 内置了一些分析器,我们也可以按需定制化分析器。
分析器是专门处理分词的组件,其由如下三部分组成:
- Character Filters:针对原始文本处理,例如取出 html 文本标签;
- Tokenizer:按照规则切分为单词,例如按照空格或者标点切分文本;
- Token Filters:将切分的单词进行加工,例如小写、删除 stopwords(停用词,如 the、a、is) 或者增加同义词等。
2. 内置 Analyzer
- Standard Analyzer:默认分析器,按词切分,小写处理
- Simple Analyzer:按照非字母切分(符号被过滤),小写处理
- Stop Analyzer:小写处理,停用词过滤(the,a,is)
- Whitespace Analyzer:按照空格切分,不转小写
- Keyword Analyzer:不分词,直接将输入当做输出
- Pattern Analyzer:正则表达式,默认 \W+(非字符分隔)
- Language Analyzer:提供了 30 多种常见语言的分析器,例如将单词 eating 分析转为 eat
- Customer Analyzer:自定义分析器
3. 其他 Analyzer
- ICU Analyzer:提供了 Unicode 的支持,更好的支持亚洲语言
- IK:支持中文,支持自定义词库,支持热更新分词词典
4. 示例
1 | GET /_analyze |