跳到主要内容

二十、Elasticsearch 教程: 分析 ( Analysis )

Analysis 很多文档都将它翻译为 分析,其实也是蛮有道理的,因为 Analysis 不仅有分词的过程,还要负责分析已分词的情况

其实从使用上看,翻译成分词更好,毕竟提起分词,大家都知道啥意思,但分析,谁能第一时间想到要先分词

搜索操作过程中处理查询时,任何索引中的内容均由分析模块进行分析

分析模块一般由分析器、标记器、tokenfilters 和 charfilters 组成

如果没有显式的定义任何分析器,那么 Elasticsearch 会使用相应的默认的内建分析器,这些默认的分析器由分析模块注册,包括分析器、令牌、过滤器和标记器

范例

例如下面这个请求,创建一个默认的图片索引

POST http://localhost:9200/pictures

请求正文

{
"settings": {
"analysis": {
"analyzer": {
"index_analyzer": {
"tokenizer": "standard", "filter": [
"standard", "my_delimiter", "lowercase", "stop",
"asciifolding", "porter_stem"
]
},
"search_analyzer": {
"tokenizer": "standard", "filter": [
"standard", "lowercase", "stop", "asciifolding", "porter_stem"
]
}
},
"filter": {
"my_delimiter": {
"type": "word_delimiter",
"generate_word_parts": true,
"catenate_words": true,
"catenate_numbers": true,
"catenate_all": true,
"split_on_case_change": true,
"preserve_original": true,
"split_on_numerics": true,
"stem_english_possessive": true
}
}
}
}