分析器定义
一个分析器是组合了三种函数的包装器,三个函数按以下顺序执行:
- 字符过滤器 处理初始输入的字符串,可以过滤掉特定的字符,或者转换成自定义的字符
- 分词器 分词器把字符串分成单个词条,一个分析器必须有一个唯一的分词器
- 词单元过滤器 词条按顺序通过词单元过滤器,词单元过滤器可以修改,添加或者移除词条。例如:lowercase过滤器,会把字母全部转换为小写。
自定义分析器
在 analysis 下的相应位置设置字符过滤器、分词器和词单元过滤器,格式为:
PUT /my_index
{
"settings": {
"analysis": {
"char_filter": { ... 字符过滤器 ... },
"tokenizer": { ... 分词器 ... },
"filter": { ... 词单元过滤器 ... },
"analyzer": { ... 分析器 ... }
}
}
}
实际应用中的定义:
{
"analysis": {
"tokenizer": {
"filter": {
"my_stopwords": {
"type": "stop",
"stopwords": [
"the",
"a"
]
}
},
"trigram_tokenizer": {
"type": "ngram",
"min_gram": 1,
"max_gram": 3,
"token_chars": [
"letter",
"digit"
]
}
},
"analyzer": {
"trigram_analyzer": {
"tokenizer": "trigram_tokenizer",
"filter": [
"lowercase",“my_stopwords”
]
}
}
}
}
定义一个分析器trigram_analyzer,采用分词器tokenizer,采用ngram作为此单元过滤器,字符过滤器只保留字母letter 和数字digit,并转换为小写字母lowercase,去掉the 和a