Elasticsearch - картографический фильтр с несколькими вариациями - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть следующее слово "άιχάλης"

, и я создаю это отображение

{
"settings": {
    "analysis": {
        "analyzer": {
            "my_analyzer": {
                "tokenizer": "keyword",
                "char_filter": [
                    "my_char_filter"
                ]
            }
        },
        "char_filter": {
            "my_char_filter": {
                "type": "mapping",
                "mappings": [
                    "α => a",
                    "β => b",
                    "γ => g",
                    "δ => d",
                    "ε => e",
                    "ζ => z",
                    "η => i",
                    "θ => th",
                    "ι => i",
                    "κ => k",
                    "λ => l",
                    "μ => m",
                    "ν => n",
                    "ξ => x",
                    "ο => o",
                    "π => p",
                    "ρ => r",
                    "σ => s",
                    "τ => t",
                    "υ => u",
                    "φ => f",
                    "χ => x",
                    "ψ => ps",
                    "ω => o",
                    "ς => s",
                    "έ => e",
                    "ύ => u",
                    "ί => i",
                    "ό => o",
                    "ά => a",
                    "ή => i",
                    "ώ => o"
                ]
            }
        }
    }
},
"mappings": {
    "properties": {
        "name": {
            "type": "text"
        }
    }
}
}

Если я проанализирую слово, я получу следующий результат

{
"tokens": [
    {
        "token": "Μixalis",
        "start_offset": 0,
        "end_offset": 7,
        "type": "word",
        "position": 0
    }
]
}

И это работает ... Но проблема в том, что некоторые символы имеют несколько вариантов. Например,

«χ» может быть «x» или «ch», и я хочу создать несколько вариантов («ξ» может быть «x» или «ks»)

Правильный ответможет быть

{
"tokens": [
    {
        "token": "Μixalis",
        "start_offset": 0,
        "end_offset": 7,
        "type": "word",
        "position": 0
    },
    {
        "token": "Μichalis",
        "start_offset": 0,
        "end_offset": 8,
        "type": "word",
        "position": 0
    }
]

}

Поэтому я хочу создать все варианты слов из всех вариантов символов

(Elasticsearch 7)

...