Jak wyszukiwarki tworzą swój indeks: prędkość, waga i hashowanie

9

Pająki nie zatrzymują się. Czołgają się. Znajdują nowe strony, aktualizują stare i tak naprawdę nigdy nie kończą swojej pracy. Internet zmienia się zbyt szybko, aby zapewnić jego pełny zasięg. Ale kiedy dane zostaną zebrane, rozpoczyna się prawdziwa praca. System musi je zapisać. Musimy umożliwić ich przeszukiwanie.

Nie chodzi tu tylko o przesłanie tekstu do folderu. Ważne są tutaj dwie rzeczy. Po pierwsze, jakie dane przechowujesz? Po drugie, jak je zorganizować?

Dlaczego proste przechowywanie nie działa

Wyobraź sobie wyszukiwarkę, która zapamiętuje tylko słowo i adres URL, pod którym ono występuje. To nie ma sensu. Ten sam wynik otrzymasz w przypadku słowa „bank” w witrynie finansowej i słowa „bank” na stronie witryny poświęconej turystyce rzecznej. Brak kontekstu. Brak rankingu.

Prawdziwy system potrzebuje więcej. Śledzi częstotliwość. Liczy, jak często pojawia się to określenie. Bierze pod uwagę to stanowisko. Słowa w tytule są ważniejsze niż słowa w stopce. Słowa w linkach są ważne. Słowa w metatagach są ważne. Każdy czynnik otrzymuje swoją własną wagę.

Ten system ważenia jest zastrzeżony. Google używa jednej formuły. Bing – kolejny. Dlatego to samo zapytanie daje różne wyniki na różnych platformach. Nie ma jednej „prawidłowej” kolejności wyników. Istnieją po prostu różne algorytmy, które dają priorytet różnym sygnałom.

Gęste pakowanie danych

Miejsce do przechowywania kosztuje. Inżynierowie kompresują dane. Oryginalna biała księga Google opisuje użycie zaledwie dwóch bajtów (16 bitów) do przechowywania złożonych metadanych dla pojedynczego wystąpienia słowa.

W tych 16 bitach:
– 2–3 bity mogą śledzić wielkość liter
– 2–3 bity mogą śledzić rozmiar czcionki
– 2–3 bity mogą śledzić pozycję względem innych słów

Wydaje się to niewiarygodnie małą kwotą. To jednak wystarczy, aby skutecznie wypozycjonować stronę. Dane są skompresowane. Są kodowane. Następnie są gotowe do indeksowania.

Rozwiązanie wykorzystujące tabelę mieszającą

Indeks ma jeden cel: prędkość. Natychmiastowe wyszukiwanie danych. Nawet w przypadku skomplikowanych zapytań.

Można by pomyśleć, że kolejność alfabetyczna działa. Ale to nieprawda. W języku angielskim jest wiele słów zaczynających się na literę „M”. Istnieje kilka słów zaczynających się na „X”. Słownik to odzwierciedla. Litera M jest „gruba”. Litera X jest „cienka”. Wyszukiwanie „M” trwa dłużej niż wyszukiwanie „X” w słabo zoptymalizowanym systemie ze względu na nierównowagę dystrybucji.

Hashowanie to naprawia.

Haszowanie stosuje formułę do każdego słowa. Konwertuje słowo na wartość liczbową. Ta wartość powoduje równomierne rozmieszczenie rekordów w ustalonej liczbie zasobników. Ignoruje alfabet. Ignoruje częstotliwość językową. Tworzy sztuczną jednolitość.

Tabela mieszająca przechowuje klucz numeryczny i wskaźnik do rzeczywistych danych. Same dane mogą być przechowywane w najbardziej efektywny możliwy sposób. Indeks łączy szybkie wyszukiwanie z intensywnym przechowywaniem.

To oddzielenie jest kluczowe. Nie skanujesz całej bazy danych. Obliczasz skrót, przechodzisz bezpośrednio do żądanego segmentu i pobierasz wskaźnik. To proste. To jest szybkie. Utrzymuje ciężar.

Dlaczego jest to dla Ciebie ważne?

Następnym razem, gdy wpiszesz zapytanie i uzyskasz wyniki w milisekundach, pomyśl o tabeli mieszającej. Pomyśl o ważeniu. Pomyśl o kompresji. W Internecie panuje chaos. On jest w rozsypce. Ale indeks to oswaja. Zamienia hałas w porządek.

Pająki nadal pełzają. Indeks nadal rośnie. Algorytmy są nadal dostosowywane. Bo jeśli przestaną, zauważysz.