Zadejte hledaný výraz...

MariaDB – fulltextové vyhledávání s neúplnými slovy

Richard Šimek
verified
rating uzivatele
14. 5. 2025 14:29:33
Zdravím, potřeboval bych poradit.
Mám dotaz do MariaDB databáze: 
SELECT * FROM adresni_mista WHERE MATCH(nazev, alternativni_nazev, nazev_obce, nazev_casti_obce, nazev_ulice, cislo_domovni, cislo_spojene, psc) AGAINST ('+revoluční*' IN BOOLEAN MODE)
Ten najde perfektně adresy jako "Revoluční", ale ne, když je to slovo na začátku neúplné, na slovo "evoluční", "oluční" nenajde nic. Ale já zrovna toto potřebuji. Samozřejmě jsem zjistil, že to jde nahradit něčím jako LIKE '%oluční%', bohužel má ale ta tabulka skoro 3 miliony záznamů a bez fulltextu je to strašně pomalé. Jde to nějak vyřešit?
14. 5. 2025 14:29:33
https://webtrh.cz/diskuse/mariadb-fulltextove-vyhledavani-s-neuplnymi-slovy-2#reply1536864
skorozacatecnik
verified
rating uzivatele
15. 5. 2025 12:34:04
MariaDB na tohle není nejlepší řešení. Co vím, tak to většinou lidi staví na Elasticu, nebo využívají nějakou službu. Ale k věci:
Pokud nevadí, že bude 2x větší FT index a potřebuješ vyřešit jen ten úkol, co popisuješ, tak můžeš přidat i slova s obráceným řazením písmen, tzn. "revoluční" - "ínčulover", a když budeš hledat, tak budeš využívat jak klasickou variantu "revoluč*", tak i variantu "ínčulov*" nebo "ínčul*". Tím druhým ale získáš i "luční" ulici, která ale není relevantní k "revoluční", takže pak nad tím musíš mít nějakou další logiku, která vyhodnotí relevanci, nebo omezovat, kolik písmen chceš odříznout.
Z postu bych tipoval, že jde o RUIAN, který má necelých 3M adres. Tam se dostaneš ještě do dalších problémů, kdy musíš vyřešit i situace, kdy uživatel zadává "kapitána jaroše", ale v RUIANu je to jako "kpt. Jaroše". To je ještě relativně jednoduše řešitelné, ale pak se dostaneš na další překlepové varianty, jako "reviluční" a pod. To už přes Marii nevyřešíš.
Hodně zdaru.
15. 5. 2025 12:34:04
https://webtrh.cz/diskuse/mariadb-fulltextove-vyhledavani-s-neuplnymi-slovy-2#reply1536881
Pavel Mareš
verified
rating uzivatele
(19 hodnocení)
15. 5. 2025 13:36:51
Tohle řešíme skrze Algolia aktuálně. Funguje super.
15. 5. 2025 13:36:51
https://webtrh.cz/diskuse/mariadb-fulltextove-vyhledavani-s-neuplnymi-slovy-2#reply1536885
Richard Šimek
verified
rating uzivatele
20. 5. 2025 09:46:08
Díky moc. Zkusil jsem i postgreSQL, i klasickou mySQL databázi a vždy byl nějaký problém, buď to neumělo, nebo to bylo pomalé :-( Takže zatím zůstaneme u MariaDB a asi následně vyřešíme nějakou službou.
20. 5. 2025 09:46:08
https://webtrh.cz/diskuse/mariadb-fulltextove-vyhledavani-s-neuplnymi-slovy-2#reply1536956
Pro odpověď se přihlašte.
Přihlásit