Analysis与Analyzer
Analysis文本分析是把全文本转换一系列单词(term)的过程,也叫分词。
Analysis就是通过Analyzer实现的。ES可使用内置的分析器或者定制分析器。
除了写入数据时,查询的时候也需要用相同的分词器对查询语句进行分析。
Analyzer的组成
分词器是专门用来处理分词的组件,由三部分组成。
- 处理原始文本,过滤一些内容如Html标签的Character Filters。
- Tokenizer,按照规则切分为单词。
- Token Filter:对切分的单词进行加工,小写,删除stopwords(默认关闭),增加同义词。
ES内置分词器:
- Standard Analyzer——默认分词器,按词切分,小写处理。
- Simple Analyzer——按照非字母切分,小写处理。
- Stop Analyzer——小写处理,停止词过滤。
- Whitespace Analyzer——按照空格切分,不转小写。
- Keyword Analyzer——不分词,直接将输入当作输出。
- Patter Analyzer——正则表达式,默认
\W+非字符分割。 - Languate——提供了30多种常见语言的分词器。
- Customer Analyzer——自定义分词器。
analyzer API
可以指定Analyzer进行测试:
Get /_analyze
{
"analyzer": "standard",
"text": "Mastering Elasticsearch, elasticsearch in Action"
}指定索引的字段进行测试:
POST books/_analyze
{
"field" : "title",
"text": "Mastering Elasticsearch"
}自定义分词器进行测试:
POST /_analyze
{
"tokenizer": "standard",
"filter": ["lowercase"],
"text": "Mastering Elasticsearch"
}tags: ElasticSearch 搜索引擎