Jak vyhledávače tvoří svůj index: rychlost, hmotnost a hash

13

Pavouci se nezastaví. Plazí se. Nacházejí nové stránky, aktualizují staré a svou práci nikdy nedokončí. Internet se mění příliš rychle na to, aby bylo dosaženo plného pokrytí. Ale jakmile jsou data shromážděna, skutečná práce začíná. Systém je musí zachránit. Musíme je umožnit vyhledávat.

Nejedná se pouze o nahrání textu do složky. Důležité jsou zde dvě věci. Za prvé, jaká data ukládáte? Za druhé, jak je organizujete?

Proč jednoduché úložiště nefunguje

Představte si vyhledávač, který si pamatuje pouze slovo a URL, kde se vyskytuje. To je k ničemu. Stejný výsledek získáte pro slovo „banka“ na finanční stránce a pro slovo „banka“ na stránce na webu říční turistiky. Bez kontextu. Žádné pořadí.

Skutečný systém potřebuje více. Sleduje frekvenci. Počítá, jak často se termín objevuje. Bere v úvahu pozici. Slova v nadpisu jsou důležitější než slova v zápatí. Slova v odkazech jsou důležitá. Slova v metaznačkách jsou důležitá. Každý faktor má svou vlastní váhu.

Tento vážicí systém je patentovaný. Google používá jeden vzorec. Bing – další. To je důvod, proč stejný dotaz produkuje různé výsledky na různých platformách. Neexistuje jediné „správné“ pořadí výsledků. Existují pouze různé algoritmy, které upřednostňují různé signály.

Husté balení dat

Úložný prostor stojí peníze. Inženýři komprimují data. Původní bílá kniha Google popisuje použití pouhých dvou bajtů (16 bitů) k uložení složitých metadat pro jeden výskyt slova.

V těchto 16 bitech:
– 2–3 bity mohou sledovat velikost písmen
– 2–3 bity mohou sledovat velikost písma
– 2–3 bity mohou sledovat polohu vzhledem k jiným slovům

To se zdá neuvěřitelně malé množství. K efektivnímu hodnocení stránky to však stačí. Data jsou komprimována. Jsou zakódované. Poté jsou připraveny k indexování.

Řešení pomocí hash tabulky

Index má jeden cíl: rychlost. Okamžité vyhledávání dat. I na složité dotazy.

Možná si myslíte, že funguje abecední řazení. Ale to není pravda. V angličtině je mnoho slov začínajících na „M“. Existuje několik slov začínajících na „X“. Slovník to odráží. Písmeno M je „tlusté“. Písmeno X je „tenké“. Hledání „M“ trvá déle než hledání „X“ ve špatně optimalizovaném systému kvůli nevyváženosti distribuce.

Hašování to řeší.

Hašování použije vzorec na každé slovo. Převádí slovo na číselnou hodnotu. Tato hodnota rozděluje záznamy rovnoměrně do pevného počtu segmentů. Ignoruje abecedu. Ignoruje jazykovou frekvenci. Vytváří umělou uniformitu.

V hašovací tabulce je uložen číselný klíč a ukazatel na skutečná data. Samotná data mohou být uložena tím nejefektivnějším možným způsobem. Index spojuje rychlé vyhledávání s velkým úložištěm.

Toto oddělení je klíčové. Nekontrolujete celou databázi. Vypočítáte hash, přejdete přímo k požadovanému kbelíku a získáte ukazatel. Je to přímo vpřed. Je to rychlé. Unese zátěž.

Proč je to pro vás důležité?

Až příště zadáte dotaz a získáte výsledky v milisekundách, přemýšlejte o hashovací tabulce. Přemýšlejte o vážení. Myslete na kompresi. Internet je chaotický. Je to nepořádek. Ale index to krotí. Proměňuje hluk v řád.

Pavouci pokračují v plazení. Index dále roste. A algoritmy se nadále upravují. Protože když přestanou, všimnete si toho.