Fulltextové vyhledávání je způsob hledání, který prohledává celý text dokumentů, například názvy, popisy a parametry produktů, a výsledky řadí podle relevance, tedy podle toho, jak dobře každý dokument odpovídá dotazu. Nehledá přesně zadaný řetězec znaků. Pracuje se slovy, jejich tvary a jejich váhou. Právě to z něj dělá základ každého použitelného vyhledávání v e-shopu.
V tomhle článku vysvětlíme, jak fulltext funguje uvnitř, proč obyčejné „hledání shody“ na e-shopu selhává, proč je čeština pro vyhledávače obzvlášť náročný jazyk a kde fulltext končí a začíná sémantické neboli AI vyhledávání.
Jak fulltextové vyhledávání funguje
Fulltextový vyhledávač nečte při každém dotazu celý katalog. Pracuje ve dvou fázích:
- Indexace. Texty produktů se předem rozloží na jednotlivá slova (tokeny), sjednotí se (malá písmena, odstranění diakritiky, převod na základní tvar) a uloží do invertovaného indexu. To je obdoba rejstříku na konci knihy: ke každému slovu je zapsáno, ve kterých produktech a v jakém poli se vyskytuje.
- Vyhledání. Dotaz zákazníka projde stejnou úpravou. Vyhledávač pak v indexu najde produkty, které obsahují jeho slova, a každému spočítá skóre relevance.
Skóre relevance je číslo, které vyjadřuje, jak dobře produkt odpovídá dotazu. Nejrozšířenější je algoritmus BM25. Zjednodušeně zvýhodňuje slova, která jsou v dokumentu častá, ale v celém katalogu vzácná, a krátká pole (název) váží víc než dlouhá (popis). Díky tomu produkt, který má „hořčík“ v názvu, porazí produkt, kde je hořčík zmíněný jednou v dlouhém složení.
Výsledkem je hledání, které je rychlé i nad statisíci produktů a které vrací výsledky seřazené, nikoli jen nalezené.
Fulltext vs. prosté hledání shody (LIKE)
Mnoho menších webů hledá jednodušeji: databázovým dotazem typu LIKE '%hořčík%', tedy „najdi záznamy, ve kterých se vyskytuje tento řetězec znaků“. Na první pohled to funguje. Na e-shopu ale rychle narazí:
| Prosté hledání shody (LIKE) | Fulltextové vyhledávání | |
|---|---|---|
| Co porovnává | řetězce znaků | slova a jejich normalizované tvary |
| Pořadí výsledků | žádné, nebo podle data či ID | podle relevance |
| Skloňování | „vaničce“ nenajde „vanička“ | pracuje se základním tvarem slova |
| Diakritika | „kopriva“ nenajde „kopřiva“ | sjednocuje zápisy s diakritikou i bez ní |
| Víceslovné dotazy | hledá celý řetězec, nebo nic | hodnotí každé slovo zvlášť |
| Rychlost u velkého katalogu | prochází všechny záznamy | čte předpočítaný index |
Typický příznak hledání přes LIKE: dotaz „červené šaty“ nevrátí nic, protože produkt se jmenuje „Šaty červené midi“. Řetězec „červené šaty“ v názvu prostě není.
Proč je čeština pro vyhledávače tvrdý oříšek
Většina vyhledávacích technologií vznikla pro angličtinu, která má minimum tvarů slov. Čeština klade na fulltext tři zvláštní nároky.
Skloňování a časování. Jedno podstatné jméno má v češtině až čtrnáct tvarů (sedm pádů v jednotném a množném čísle). Zákazník napíše „vaničce pro miminko“, „vaniček“ nebo „vaničky“. Vyhledávač musí každý tvar převést na společný základ. Říká se tomu stemming (odříznutí koncovky) nebo lematizace (převod na slovníkový tvar podle morfologického slovníku). Lematizace je přesnější, protože ví, že „psa“ a „pes“ jsou totéž slovo, a zároveň nesloučí slova, která si jen náhodou podobají.
Diakritika. Velká část dotazů přichází bez háčků a čárek, protože je to na mobilu rychlejší. „Kopriva“, „ruzova mikina“, „zidle“. Dobrý fulltext indexuje obě podoby a nerozbije se ani na opačném problému, kdy diakritika rozlišuje dvě různá slova („byt“ a „být“).
Překlepy. Rychlé psaní na telefonu produkuje „magnsium“ nebo „kollagen“. Fulltext to řeší tolerancí překlepů (fuzzy matching): za shodu považuje i slovo, které se od hledaného liší o jeden či dva znaky. Je to běžné slabé místo. Podle Baymard Institute 69 % zkoumaných e-shopů nenabízí v našeptávači návrhy pro mírně přepsané dotazy.
Tolerance překlepů má ale i odvrácenou stranu. U katalogových čísel je „podobné číslo“ jiný díl, a tam musí být vyhledávač naopak přísný. Proč a jak to řešit, rozebíráme v článku o hledání podle kódů dílů.
A pokud prodáváte i na Slovensko, přibývá čtvrtý nárok: každá jazyková mutace potřebuje vlastní jazykové zpracování a vlastní synonyma. Více v článku o vícejazyčném e-shopu na Shoptetu.
Fulltext vs. sémantické (AI) vyhledávání
Sémantické vyhledávání hledá podle významu, nikoli podle slov. Dotaz i produkty převede jazykový model na číselné vektory (embeddingy) a hledá produkty, jejichž význam je dotazu nejblíž. Díky tomu najde „běžecké boty“, i když produkt má v názvu „tenisky na běh“, a pochopí hovorový dotaz typu „něco na spaní pro mimino“.
Oba přístupy mají své silné stránky:
| Fulltextové vyhledávání | Sémantické (AI) vyhledávání | |
|---|---|---|
| Princip | shoda slov a jejich tvarů | podobnost významu |
| Silné u | přesných názvů, značek, kódů, EAN | hovorových a popisných dotazů, synonym |
| Slabé u | synonym a jiných pojmenování | přesných kódů a vzácných výrazů |
| Vysvětlitelnost | vysoká (víte, proč se produkt ukázal) | nižší |
Proto moderní vyhledávání v e-shopu není „buď, anebo“. Používá hybridní přístup: fulltext zajistí přesnost u názvů a kódů, sémantická vrstva porozumí záměru a nad tím obojím běží obchodní pravidla řazení a učení z chování zákazníků. Synonyma, která správce schvaluje ručně, pak doplňují to, co se z dat odvodit nedá. Jak synonyma spravovat v praxi, popisuje článek Synonyma ve vyhledávání e-shopu.
Našeptávač: fulltext v reálném čase
Našeptávač (autocomplete) je rozbalovací nabídka pod vyhledávacím polem, která už během psaní ukazuje návrhy dotazů, produktů, kategorií či článků. Technicky jde o fulltextové vyhledávání spouštěné po každém napsaném znaku, a to nad neúplným slovem. Vyhledávač proto musí umět i hledání podle začátku slova (prefixové) a odpovídat dost rychle, aby nabídka nepůsobila zpožděně.
Pro e-shop je našeptávač často důležitější než samotná výsledková stránka. Velká část zákazníků na produkt klikne rovnou z nabídky a výsledkovku nikdy neuvidí. Pojmy jako našeptávač, synonyma nebo nulové výsledky souhrnně vysvětluje náš slovník pojmů vyhledávání.
Co to znamená pro e-shop na Shoptet Premium
Vestavěné vyhledávání Shoptetu je fulltextové a umí víc, než se traduje: pracuje s kořeny slov, dává přednost shodě v kódu a EAN a prohledává i kategorie, značky a články. Pro menší katalog s jasnými názvy může dlouho stačit. Podrobný rozbor jeho silných stránek i hranic najdete v článku Co umí nativní vyhledávání na Shoptetu.
S rostoucím katalogem ale narazíte na limity, které samotný fulltext neřeší: víceslovné dotazy, jazyk zákazníků (synonyma, hovorové výrazy), řazení podle obchodních priorit a hlavně data o tom, co lidé hledají a nenacházejí. Tam nastupuje specializované vyhledávání. Na Shoptet Premium se dá nasadit jako náhrada nativního hledání, protože Premium nabízí design na míru a zakázkovou implementaci, které standardní tarify nemají. Rozdíly vysvětluje článek Shoptet Premium vs. Shoptet.
Takhle je postavené i AI vyhledávání Revelor: fulltextový základ s tolerancí překlepů a češtinou, nad ním synonyma, přepisy dotazů a sémantické porozumění. Řazení se učí z kliků a nákupů. Kdyby služba vypadla, e-shop se plynule vrátí k nativnímu hledání Shoptetu.
Jak poznat, že vám fulltext nestačí
Nejspolehlivější měřítko je míra nulových výsledků, tedy podíl dotazů, na které vyhledávání nevrátí nic (co přesně se tím myslí). Zdravá hodnota je pod pěti procenty. Projděte si seznam takových dotazů a roztřiďte je:
- Zboží opravdu nemáte. To je informace pro nákup, ne chyba vyhledávání.
- Překlep nebo chybějící diakritika. Fulltext s tolerancí překlepů by měl uspět.
- Jiné pojmenování („magnézko“ místo „magnesium“). Tady pomůžou synonyma nebo sémantická vrstva.
- Víceslovný nebo popisný dotaz („dárek pro tátu rybáře“). Tady čistý fulltext končí.
Když v seznamu převažují poslední dvě skupiny, je čas uvažovat o chytřejším vyhledávání. Na co se při výběru dívat, shrnuje průvodce Jak vybrat vyhledávání pro e-shop na Shoptetu.
Časté otázky
Co je fulltextové vyhledávání?
Fulltextové vyhledávání prohledává celý text dokumentů (u e-shopu názvy, popisy, parametry a kategorie produktů) a výsledky řadí podle relevance. Na rozdíl od hledání přesného řetězce pracuje se slovy a jejich tvary, takže zvládá skloňování, diakritiku a s tolerancí překlepů i chyby v psaní. Podrobněji ve slovníku.
Jaký je rozdíl mezi fulltextem a hledáním přes LIKE?
LIKE hledá v databázi přesný řetězec znaků a výsledky neřadí. Fulltext používá předpočítaný index slov, rozumí tvarům slov a výsledky seřadí podle toho, jak dobře odpovídají dotazu. U katalogu s tisíci produktů je navíc výrazně rychlejší.
Je fulltextové vyhledávání totéž co AI vyhledávání?
Ne. Fulltext hledá podle slov, AI (sémantické) vyhledávání podle významu. Moderní vyhledávání v e-shopu oba přístupy kombinuje: fulltext kvůli přesnosti u názvů a kódů, sémantickou vrstvu kvůli hovorovým dotazům a synonymům.
Co je našeptávač ve vyhledávání?
Našeptávač je nabídka pod vyhledávacím polem, která během psaní zobrazuje návrhy produktů, kategorií nebo dotazů. Technicky jde o fulltextové vyhledávání nad neúplným slovem, které se spouští po každém napsaném znaku.
Umí Shoptet fulltextové vyhledávání?
Ano. Nativní vyhledávání Shoptetu je fulltextové, pracuje s kořeny slov a upřednostňuje shodu v kódu produktu a EAN. Nezná ale synonyma, neučí se z chování zákazníků a nedává vám přehled o dotazech bez výsledku. Na Shoptet Premium ho lze nahradit specializovaným vyhledáváním.
Proč vyhledávání nenajde produkt, který v e-shopu mám?
Nejčastěji proto, že zákazník produkt pojmenoval jinak než katalog (synonymum, hovorový výraz), napsal ho s překlepem nebo v jiném tvaru, než vyhledávač umí rozpoznat. Odhalí to přehled dotazů bez výsledku. Bez něj hledáte příčinu poslepu.

