Ako na vyhľadávanie bez diakritiky s elasticsearch, hunspell a icu_folding

Ahojte,

mám index v elasticsearch inšpirovaný touto sériou: https://www.ludekvesely.cz/serial-elasticsearch-4-fulltextove-vyhledavani-v-cestine/

Dostal som sa k problému, že pri vyhľadávaní bez diakritiky neviem skloňovať napr. dámsky/dámska/damsky/damska. Na úplne rovnaký problém narazil jeden diskutujúci na zdrojáku, ale bez odpovede.

Citace
Narazil jsem na problém s diakritikou, konkrétně se jedná například o výraz „dámský“ vs „damsky“. ...

V mojom prípade je analyzér zostavený veľmi podobne:
Kód: [Vybrat]
"slovak": {
                "type": "custom",
                "tokenizer": "standard",
                "filter": [
                    "slovak_stop",
                    "slovak_hunspell",
                    "lowercase",
                    "icu_folding",
                    "unique_on_same_position"
                ]
            }

Zatiaľ si neviem predstaviť, ako to riešiť. Ako to riešite ostatní? Cez nejaké komerčné api na dopĺňanie diakritiky?


Dámský vs damsky jsem vyřešil tak, že se vše nahrává ještě bez diakritiky a v případě, že to s diakritikou nic nenajde, tak hledá ještě podruhé bez diakritiky. Ale teď jsem zjistil, že na "damsk" mi nic nenajde, tak jsem pro druhé query nastavil
'fuzziness' => 1,
To přidá toleranci 1 překlepu.

Logik

  • *****
  • 1 029
    • Zobrazit profil
    • E-mail
Řešení je si upravit slovník hunspellu tak, že je bez diakritiky. Je to víceméně odstranění diakritiky ze slovníku plus vyhození pár duplicit, který tak vznikou - a celý to pak indexovat bez diakritiky.