Vyhľadávanie produktov alebo obsahu je kľúčovou vlastnosťou každého dobrého eshopu. Ak Vaše produkty používatelia nenájdu, nemôžu ich ani kúpiť.
Poďme ale postupne a pozrime sa na to ako vyhľadávajú weby za štandardných okolností. Aká je motivácia využívať samostatný vyhľadávací nástroj?
Databázy, ktoré poháňajú možno aj váš web
Dáta eshopu, produkty, kategórie, články, … sú za normálnych okolností uložené v primárnej databáze ako je napríklad MySQL, MariaDB alebo dokumentová databáza MongoDB. Z tejto databázy sa obsah vyberá a zobrazuje používateľovi.
Pozrime sa na príklad toho ako vyzerá najjednoduchšie vyhľadávanie dát v praxi. Používateľ prichádza na url adresu: www.vasweb.sk/produkt/1000. Táto URL adresa hovorí, že by si používateľ chcel prezrieť produkt s ídečkom 1000. Funguje to rovnako ako v bežnom živote. Predstavte si, že dostanete za úlohu vyhľadať v knihe stranu 250. Knihu jednoducho zoberiete a otvoríte na strane 250. Je to úloha, ktorá sa dá vykonať veľmi rýchlo, pretože sa deje na základe primárneho kľuča, čo je v našom knižnom príklade číslo strany a v prípade produktovej databázy ID produktu. Napríklad v MySQL to viete dosiahnuť pod 10ms, čo je úžasný čas.
Ako sme na tom však v prípade, že od databázy chceme vykonanie zložitejšej operácie ako je napríklad vyhľadávanie produktov na základe ich názvu alebo útržku z názvu, či dokonca na základe viacerých parametrov?
Ako príklad môžeme uviesť nasledujúcu situáciu. Zákazník hľadá obsah na základe dopytu „krmivo„. Od kvalitného vyhľadávača na stránke očakávame aby vyhľadával nie len v názve, ale rovnako v značke, v produktových tagoch a v ďalších parametroch produktu. Navyše chceme produkty triediť podľa ich relevancie voči vyhľadávanému výrazu a často aj podľa iných parametrov, napríklad dostupnosti produktu. Zložitosť takýchto dopytov je na štandardné databázy často priveľká a výsledkom je spomalenie celého procesu vyhľadávania.
Vo veľkej miere navyše primárnou úlohou databáz ako je MySQL nie je fulltextové vyhľadávanie, a teda tieto databázy neposkytujú príliš veľké množstvo nástrojov, ktoré by koncovému zákazníkovi uľahčili nájsť to, čo chce.
Fulltextové vyhľadávanie je vyhľadávanie na základe textu v prirodzenom jazyku, ktoré prehľadáva každé slovo (napríklad z názvu produktu alebo jeho inej časti v databáze). Ak by sme sa mali vrátiť k príkladu s knihou, predstavte si, že za úlohu dostanete vyhľadať všetky strany alebo kapitoly, ktoré obsahujú vybrané slovo, napríklad: „auto“. Väčšina kníh ma k dispozícií Register, na základe, ktorého ste opäť úlohu schopný dokončiť rýchlo. Podobný register existuje aj pri databázových systémoch ako je MySQL (nazývame ich index) napriek tomu sú niektoré požiadavky na neho priveľké.
Výhody ElasticSearchu
Práve v tejto chvíli nám na pomoc prichádza ElasticSearch, ktorého hlavnou úlohou je vykonávať práve zložité vyhľadávacie dopyty. Zhrnuté v kocke, ElasticSearch nám poskytuje tieto základné výhody:
- rýchle vyhľadávanie aj pri zložitých dopytoch
- rozšírené možnosti vyhľadávania, indexovania a analyzovania textu oproti štandardným nástrojom – ElasticSearch je schopný vytvoriť si omnoho sofistikovanejší „Register“ (index) oproti štandardne používaným databázam
- ElasticSearch rovnako umožňuje napojenie na iné systémy a rozšírené analýzy textu
Aké sú teda spomínané rozšírené možnosti? Nakoľko ich je viacero, spomeňme štyri, ktoré sú ľahko implementovateľné a zároveň môžu pomôcť výrazne zlepšiť kvalitu výsledkov vyhľadávania.
Vyhľadávanie s preklepmi
Každému z nás sa stane, že na mobile klikne na iné písmenko ako chce. ElasticSearch umožňuje vyhľadávať, a to pomerne dobre, aj napriek preklepom.
Nemysleli ste náhodou … ?
ElasticSearch vie pre koncového zákazníka vytvoriť zoznam odporúčaných výrazov, ktoré môže vyskúšať pre zlepšenie vyhľadávania. Podobne ako je tomu v prípade, keď vyhľadávate na Googli, ktorý sa vás spýta, či nechcete namiesto vami zadaného výrazu použiť odporúčaný.
Úprava slovných tvarov
Po nainštalovaní slovníka je ElasticSearch schopný vyhľadávať podľa základného tvaru slova. Napríklad pre dopyt: „práčka“ nájdeme: „prali“, „pral“, …
BONUS: GEO vyhľadávanie
Ak by ste na vašom projekte potrebovali vyhľadávať v zozname GPS súradníc (napríklad zoznam kamenných predajní), ElasticSearch podporuje aj vyhľadávanie na základe geografických dát.
Naše projekty s vyhľadávaním ElasticSearch: