我正在使用Elasticsearch
索引一个网站,该网站有许多具有斯堪的纳维亚字符的名称。问题是我们的用户通常使用美式英语键盘并用最接近的英文字母替换这些字符。例如,索引的内容为Tromsø
,但搜索的内容为Tromso
。
如何在Elasticsearch
中搜索时添加字符同义词以使原始字符和英文字符相等?
答案 0 :(得分:0)
您可以创建自定义分析器并为此设置char filter
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"char_filter": [
"my_char_filter"
]
}
},
"char_filter": {
"my_char_filter": {
"type": "mapping",
"mappings": [
"ø => o",
"á => a"
]
}
},
"filter": [
"lowercase"
]
}
}
}
在这种情况下,Tromsø
和Tromso
都会提供相同的输出字词。请查看有关创建自定义分析器https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-custom-analyzer.html