Revelor
Fulltextové vyhledávání v e-shopu — paprsek světla odhaluje v mřížce produktů ten hledaný
· Tomáš Drdla

Fulltextové vyhledávání: co to je a proč e-shopu nestačí hledat písmenka

Co je fulltextové vyhledávání, čím se liší od prostého hledání shody, proč je čeština tvrdý oříšek a kdy fulltext doplnit sémantickým (AI) vyhledáváním.

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:

  1. 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.
  2. 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 IDpodle 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é dotazyhledá celý řetězec, nebo nichodnotí každé slovo zvlášť
Rychlost u velkého kataloguprochá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í
Principshoda slov a jejich tvarůpodobnost významu
Silné upřesných názvů, značek, kódů, EANhovorových a popisných dotazů, synonym
Slabé usynonym a jiných pojmenovánípřesných kódů a vzácných výrazů
Vysvětlitelnostvysoká (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.

Související články

Všechny články na blogu
Zpět na blog