Fungování vyhledávačů

Technologie jednotlivých fulltextů se navzájem liší a každý si ji více, či méně chrání. Proto jsou uveřejňované popisy architektury a algoritmů zjednodušené. Ve skutečnosti jsou mnohonásobně složitější.

Obecná a základní konstrukce fulltextu není nijak složitá. To dokazuje např. velmi pěkný článek na Lupě, kde je popsáno jak na 72 řádcích za pomocí (ne)obyčejného shellu napsat jak část sbírající data (robota) i komponentu obsluhující samotné vyhledávání.

Aby však nedošlo k mýlce. Profesionální fulltextové vyhledávače mají přeci jen o pár řádek víc.
Například Štěpán Škrob ze Seznam.cz uvádí v rozhovoru pro zdrojak.root.cz respektive v diskuzi pod rozhovorem, že fulltext seznamu má téměř 1 700 000 řádek kódu (jaké komponenty jsou obsaženy v odhadu přesněji neuvádí a informace už je taky nějaký ten pátek stará), což je jistě úctyhodný počet.
Ale základ mají všechny fulltextové vyhledávače stejný.
Hlavní části jsou robot, index (databáze), výdej a přidružené komponenty.

Robot, crawler nebo chceteli indexer

Hledá nové stránky, zpracovává je a zařazuje do DB.
Stará se také o sledování změn na už dříve zaindexovaných URL.

Jeho činnost se dá rozdělit do následujících kroků:

  • stažení stránky
  • parsování stránky (vypreparování textů a vybraných zajímavých informací v kódu stránky)
  • indexovaní – tedy podle interních pravidel rozseká, přeuspořáda text stránky, který následně uloží do všelijakých tabulek, souborů a databází. Současně zpracovává odkazy, které byly na stránce nalezeny

Index – databáze

Sem se ukládají stránky a informace o nich. Podoba se liší a tím pádem i datová struktura. Myslím, že se do jisté míry dá přirovnat ke strukturám vznikajícím v rozsahlém internetovém obchodě s desítkami tísíc položek ve kterých se dá hledat podle určitých kritérií.

Výdej – hledání

Po zadání dotazu si hledací webová stránka, jeho CGI sahá do databáze a nalezené dokumenty řadí podle algoritmu, který zohledňuje nemálo faktorů, které stanovují kvalitu stránky a podle vypočtené hodnoty relevance vrací seřazený výsledek hledání.
Samozřejmě existuje určitě spousta dalších vnitřních komponent, které se starají o rozličné úkoly. Jsou to všelijaké cashe, detektory jazyků, překlepátory, lemmatizátory, rank kalkulátory, detektory duplicit, filtry, analyzátory odkazů, citační analýzy… Ale jak už bylo řečeno, do hloubky jednotlivých fulltextů vidí jen malý okruh zasvědcených. Ostatní mohou jen odhadovat a provádět měření chování vyhledávačů a na jejich základě vyvozovat více či méně správné závěry.