Algorytmy wyszukiwania i sortowania oraz struktury danych
wykorzystywane w wyszukiwarkach internetowych Poprzez wyszukiwanie i sortowanie rozumiemy sposób uporządkowania pewnej grupy elementów względem zadanego kryterium. Większość ludzi nie zdaje sobie sprawy z tego, że korzystając codziennie z komputera wykorzystują algorytmy sortowania. Przykładem może być choćby użytkowanie systemu operacyjnego z GUI, gdy w jakimś folderze znajduje się bardzo wiele plików/folderów. Zazwyczaj wybieramy wtedy opcję rozmieszczenia ikon np. według nazwy/daty utworzenia/rozmiaru. Gdy przeglądamy np. notowania giełdowe w internecie, najczęściej mamy możliwość ustawienia danych według pewnych kryteriów. Możemy np. sprawdzić opłacalność pewnych akcji w przeciągu ostatnich 6 czy 12 miesięcy. Klikając w odpowiednie miejsce i ustawiając dane w zadanej kolejności, wykorzystywany algorytm sortowania. W swojej pracy przedstawię algorytmy wyszukiwania i sortowania w wyszukiwarkach internetowych, a także struktury danych wykorzystywane na przykładzie Google. Tematyka działania wyszukiwarek jest mi bliska, interesuję się bowiem infobrokeringiem i narzędziami wyszukiwania informacji. Poza tym, dziś każdy internauta korzysta z wyszukiwarek – trudno wyobrazić sobie poruszanie się po zasobach sieci bez ich pomocy. Możemy się spotkać z dwoma algorytmami wyszukiwania i sortowania – metodą wektorową oraz binarno-hybrydową. W pierwszym modelu dla każdego dokumentu w zbiorze A tworzony jest wektor podobieństwa V, pozwalający porównać go do innych dokumentów – wektor podobieństwa jest konstruowany w momencie, gdy wyszukiwarka otrzyma zapytanie od użytkownika. Długość tego wektora zależy od liczby słów w słowniku S wyszukiwarki, zawierającym wszystkie wyrazy ze wszystkich dostępnych dokumentów zbioru A. Miara typowości słowa dla danego dokumentu stanowi kryterium wyszukiwania; jest ona iloczynem dwóch liczb o nazwie idf (inverted document frequency) oraz tf (term frequency). Liczba tf(S,A) jest tym wyższa, im częściej wyraz występuje na stronie. Natomiast idf(S) jest tym wyższe, im rzadziej wyraz występuje we wszystkich dokumentach zbioru. Największą miarę typowości mają wyrazy, które często występują w danym dokumencie, ale rzadko we wszystkich innych. W modelu wektorowym wszystkie obliczenia związane z oceną typowości dokumentu są wykonywane podczas dodawania dokumentu do zbioru, co ma zasadnicza wadę – wszelkie zmiany kryteriów oceny wyników wymagają ponownego ściągnięcia wszystkich dokumentów i wyliczenia wektorów podobieństwa. Lepszym algorytmem jest metoda binarno-hybrydowa. Wektory podobieństwa nie zawierają miar tf*idf, tylko wartości zero-jedynkowe, wskazujące, czy dany wyraz znajduje się w dokumencie. Pierwsza faza algorytmu wyszukuje po prostu te strony, które zawierają wszystkie wyrazy, jakie występują w zapytaniu. W kolejnym kroku algorytmu strony sortowane są według miary trafności, która uwzględnia następujące kryteria: czy słowa z zapytania znajdują się obok siebie w dokumencie i w którym miejscu (w adresie, tytule, nagłówkach, odnośnikach, akapitach itp.) oraz w jakim stopniu strona jest popularna (badanie wskaźnika page-rank). Wyświetlane wyniki są kombinacją tych dwóch kryteriów, a na szczycie listy umieszczone są strony o największej wartości tych wskaźników. Agent wyszukiwarki (spider, crawler, robot) zapisuje informacje o przeszukiwanych stronach w zasobach wyszukiwarki – bazie danych. W przypadku Google nosi ona nazwę BigTable Datastore. Datasore jest olbrzymią, rozproszoną, posortowaną tablicą opartą na GQL. BigTable to rozproszony system zarządzania bazą danych zaprojektowany z myślą o ogromnych zbiorach informacji. Dane podzielone są na tablety (każdy po max. 100MB; po przekroczeniu tego rozmiaru tablety dzielone są na mniejsze), które odpowiadają pewnym przedziałom kluczy. Każdy tablet znajduje się w pamięci określonego serwera tabletów, które wspólnie tworzą drzewo o wysokości 3. Dwa pierwsze poziomy przechowują metadane, natomiast trzeci poziom przechowuje rzeczywistą zawartość tabeli.
Lokalizacja korzenia drzewa tabletów przechowywana jest w pliku Chubby. Za
pierwszym razem klient musi przejść przez całe drzewo, by ustalić adres serwera tabletów. Przy kolejnych użyciach bazy danych klient korzysta ze wcześniej zapamiętanych danych.