Elasticsearch符号非英语键盘的同义词

时间:2017-04-08 15:36:08

标签: elasticsearch elasticsearch-5

我正在使用Elasticsearch索引一个网站,该网站有许多具有斯堪的纳维亚字符的名称。问题是我们的用户通常使用美式英语键盘并用最接近的英文字母替换这些字符。例如,索引的内容为Tromsø,但搜索的内容为Tromso

如何在Elasticsearch中搜索时添加字符同义词以使原始字符和英文字符相等?

1 个答案:

答案 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

的主题