Vyhledávač Adres (RÚIAN)
Proč jsem projekt vypracoval?
Tento projekt byl vypracován jako závěrečný projekt na střední škole v rámci předmětu databáze.
Cíl projektu
Cílem projektu bylo vytvořit vyhledávač adres v České republice nad daty z RÚIAN. Aplikace by měla fungovat pod 500ms na request, ale v ideálním případě pod 60ms. Dále je potřeba, aby šla najít každá adresa v republice včetně všechn edge casů.
Řešení
Postavil jsem webovou aplikaci v Rustu napojenou na Maria DB. Využil jsem leptos pro frontend a sqlx pro databázi.
Nejsložitější součást projektu tohoto projektu byl návrh databáze. Klíčovým rozhodnutím bylo využít FULLTEXT INDEX nad pomocným sloupcem search.
Výsledná query tedy vypadala následovně:
SELECT <adresa>
FROM adresy
WHERE MATCH(search) AGAINST('+praha*' '+hlavn*' '+xxx138*' IN BOOLEAN MODE)
ORDER BY cislo_domovni = 138 DESC, cislo_orientacni = 138 DESC
LIMIT 20;Všechny slova/čísla jsem očistil o háčky a čárky a čísla jsem prodloužil o xxx, aby se počítali do fulltext search. Například 138 se změnilo na xxx138.
Pomocí order by jsem docílil toho, že adresy s přesným číslem 138 budou výše, než čísla, která pouze začíná na 138.