规范化器
edit规范化器
editNormalizers(规范化器)与分析器类似,但它们只能生成一个单一的标记。因此,它们没有分词器,并且只接受可用字符过滤器和标记过滤器的一个子集。只有那些基于每个字符工作的过滤器是被允许的。例如,一个将字母转换为小写的过滤器是被允许的,但一个需要查看整个关键词的词干提取过滤器则不被允许。当前可以在规范化器定义中使用的过滤器列表包括:arabic_normalization(阿拉伯语规范化)、asciifolding(ASCII折叠)、bengali_normalization(孟加拉语规范化)、cjk_width(CJK宽度)、decimal_digit(十进制数字)、elision(省略)、german_normalization(德语规范化)、hindi_normalization(印地语规范化)、indic_normalization(印度语规范化)、lowercase(小写)、pattern_replace(模式替换)、persian_normalization(波斯语规范化)、scandinavian_folding(斯堪的纳维亚折叠)、serbian_normalization(塞尔维亚语规范化)、sorani_normalization(索拉尼语规范化)、trim(修剪)、uppercase(大写)。
Elasticsearch 自带一个 lowercase 内置规范化器。对于其他形式的规范化,需要自定义配置。
自定义规范化器
edit自定义规范化器接受一个 字符过滤器列表和一个 词元过滤器列表。
PUT index
{
"settings": {
"analysis": {
"char_filter": {
"quote": {
"type": "mapping",
"mappings": [
"« => \"",
"» => \""
]
}
},
"normalizer": {
"my_normalizer": {
"type": "custom",
"char_filter": ["quote"],
"filter": ["lowercase", "asciifolding"]
}
}
}
},
"mappings": {
"properties": {
"foo": {
"type": "keyword",
"normalizer": "my_normalizer"
}
}
}
}