Analysis与Analyzer
- Analysis
文本分析是把全文本转换一系列单词(term/token)的过程,也叫分词。
- Analyzer
Analysis通过Analyzer来实现。
ES在数据写入时转换词条,匹配Query语句时也需要用相同的分析器对查询语句进行分析。
Analyzer的组成
- Character Filters
针对原始文本处理,例如去除html。
- Tokenizer
按照规则切分为单词,比如按照空格。
- Token Filter
将切分的单词进行加工,小写,删除stopwords(停用词),增加同义词。
ES 内置的分词器
-
Standard Analyzer:默认分词器,按词切分,小写处理;
image.png -
Simple Analyzer:按照非字母切分(符号被过滤),小写处理;
image.png -
Stop Analyzer:小写处理,停用词过滤(the,a,is);
image.png -
Whitespace Analyzer:按照空格切分,不转小写;
image.png -
Keyword Analyzer:不分词,直接将输入当做输出;
image.png -
Patter Analyzer:正则表达式,默认\W+(分字符分隔);
image.png -
Language:提供了30多种常见语言的分词器;
-
Customer Analyzer:自定义分词器。
_analyzer API
- 指定Analyzer进行测试;
GET /_analyze
{
"analyzer" : "standard",
"text" : "Master Elasticsearch, elasticsearch in Action"
}
- 指定索引的字段进行测试;
POST 索引名/_analyze
{
"field" : "title",
"text" : "Master Elasticsearch, elasticsearch in Action"
}
- 自定义分词器进行测试。
POST /_analyze
{
"tokenizer" : "standard",
"filter" : ["lowercase"],
"text" : "Master Elasticsearch, elasticsearch in Action"
}
网友评论