Analysis与Analyzer

Analysis文本分析是把全文本转换一系列单词(term)的过程,也叫分词。

Analysis就是通过Analyzer实现的。ES可使用内置的分析器或者定制分析器。

除了写入数据时,查询的时候也需要用相同的分词器对查询语句进行分析。

Analyzer的组成

分词器是专门用来处理分词的组件,由三部分组成。

  1. 处理原始文本,过滤一些内容如Html标签的Character Filters。
  2. Tokenizer,按照规则切分为单词。
  3. 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 搜索引擎