elasticsearch系统学习笔记6-文本分析与分词器
概念
- Analysis(文本分析) 是把
全文本
转换成一系列单词(term/token)的过程,也叫分词; - Analysis(文本分析) 是通过 Analyzer(分词器) 来实现的;
- 可使用内置的分词器,也可以
定制化
分词器;
Analyzer 的组成
分词器一般由三部分组成(也可以只包含部分组件):
- Character Filters - 对原始文本进行一些处理操作;比如转换与过滤(去除)
- Tokenizer - 按照一定规则对文本进行切分;
- Token Filters - 将切分后的单词进行一些处理;如转换,增加(同义词…)与删除(结尾词…)
内置分词器
- standard analyzer
- Character Filters
- Tokenizer
- standard
- Token Filters
- standard
- Lower Case (小写转换)
- Stop (默认关闭)
- simple analyzer
- Character Filters
- Tokenizer
- Lower Case
- Token Filters
- ICU analyzer
- https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-icu.html
- https://icu.unicode.org/
./bin/elasticsearch-plugin install analysis-icu
- Character Filters
- Normalization
- Tokenizer
- ICU Tokenizer
- Token Filters
- Normalization
- Folding
- Collation
- Transform
测试:
GET /_analyze
{
"analyzer": "icu_analyzer",
"text": "他说的确实在理"
}
_analyzer api
- 指定 Analyzer 进行测试
GET /_analyze
{
"analyzer": "standard",
"text": "Elasticsearch in Action"
}
- 指定索引的字段上所使用的分词器进行测试
POST user/_analyze
{
"field": "name",
"text": "Elasticsearch in action"
}
- 定制化分词器进行测试
POST /_analyze
{
"tokenizer": "standard",
"filter": ["uppercase"],
"text": "Elasticsearch in action"
}