Fujitsu-Siemens
 
M A G A Z I N
 
WEB DIZAJN 
  Dušan Ječmenica

Pretraživači (II deo)


U prošlom broju smo započeli priču o pretraživačima. Pošto smo se upoznali sa osnovnim stvarima vezanim za ovu problematiku hajde da malo da zavirimo "ispod haube" i da vidimo kako jedan, od trenutno najboljih pretraživača u trenutku pisanja ovog teksta - Google, radi. Ovo je priča koja može biti interesantna običnom "surferu" koji pretražuje Interent, ali mnogo više koristi može doneti web dizajnerima koji se trude da njihovi sajtovi budu visoko rangirani na listama pretrage.


Za početak – malo istorije


Ovde ne možete a da ne primetite, sličnost sa Bil Gates-om i njegovim studentskim danima.

1995. Sergey Brin i Larry Page su bila dva studenta na Univerzitetu Stenford (Stanford University) kada su se upoznali i rešili da naprave do tad neviđeno – najbolji pretraživač. Ovde ne možete a da ne primetite, sličnost sa Bil Gates-om i njegovim studentskim danima. Već 1997. gore pomenuta dvojica studenata su već napravili svoj prvi pretraživač koji je nosio ime BackRub i bio je preteča Googlea. Već 1998. osnivaju svoju firmu na nagovor ko-osnivača Yahoo-a, David Filo-a.
1999. se sele u University Avenue, Palo Alto, gde imaju preko pola miliona upita dnevno, a potom se sele u Mountain View, California. Rad Hat je postao njihov prvi zvanični klijent. Krajem iste godine imaju 39 zaposlenih i 3 miliona upita na dan! Na zapadu se obično kvalitet lako prepozna i nagradi, pa je Google dobio na desetine nagrada renomiranih računarskih časopisa. Već u 2000. god imaju 60 miliona upita na dan, i osposobljeni su za WAP tehnologiju. Tada plasiraju Google Toolbar™, plugin za browser koji pretragu čini lakšom. 2001. imaju 100 miliona upita dnevno i 10 jezički lokalizovanih verzija pretrage. Tu se onda mešaju mnoge kompanije poput Novell-a, AT&T, Lycos itd., pa 2002. god imaju 150 miliona upita dnevno, 3 milijarde indeksiranih web strana, 400 miliona slika, 1 milion PDF dokumenata, i dostupni su na 74 jezika, od kojih je jedan i – srpski. Tada patentiraju PageRank, jednistvenu tehnologiju za rangiranje rezultata pretrage. Preko 300 portala i pretraživača u preko 30 zemalja sveta se u tom trenutku oslanjalo na Google. Sada je taj broj daleko veći jer je Google postao broj jedan u svetu pretraživača. Na adresi http://labs.google.com/ možete se poigrati sa nezvaničnim najnovijim Google-ovim tehnologijama koje su još u beta-fazi testiranja.
Zbog izuzetnih dostignuća, Larry Page i Sergey Brin, su se našli na InfoWorld "Top Ten Technology Innovators" listi.


Ko mu nadenu takvo ime ?


Ime Google, predstavlja igru slova od reči GOOGOL koja označava broj 1 praćen sa 100 nula. Tu reč je izmislio devetogodišnji nećak matematičara Edward Kasner-a. Kasner mu je postavio zadatak da smisli ime za neki mnogo veliki broj - i eto šta sve može dečja mašta. Inače "googolplex" je "10 na googol." Ove reči se prvi put pominju 1940. god u knjizi Edward Kasner-a i James Newman-a: "Mathematics and the Imagination." Inače, indikativno je da za dobar marketing na internetu treba imati što otkačenije ime. To se vidi i na primeru Yahoo-a.


Arhitektura Google-a


Svaki dokument se konvertuje u skup reči koji se zovu hit-ovi.

 

Većina izvornog koda Google-a je napisana u C ili C++ i izvršava se kombinovano na Linuxu i Solarisu. Crawling ( spidering) se izvršava sa više uporednih spider-a. Postoji jedan URL server koji šalje listu URL-ova spider-ima da je posete. Strane koje su posećene se šalju posebnoj mašini koja se zove "store-server". On ih potom kompresuje i ostavlja ih u "skladište". Svakoj web strani koja je skladištena je pridružen jedan indentifikacioni broj(docID). Indeksiranje se vrši sa indexer-om i sort-erom. Indexer posećuje "skladište", dekompresuje elemente i rastavlja ih. Svaki dokument se konvertuje u skup reči koji se zovu hit-ovi. Oni sadži podatke o reči , njenu poziciju u dokumentu , veličinu fonta i tzv. kapitalizaciju (da li su velika ili mala slova). Indexer razdeljuje ove hit-ove u skup Barrel-a (buradi, bačvi), kreirajući delimično sortiranog preteču indexa (listinga). Indexer takođe radi još jednu bitnu funkciju: on izdvaja linkove sa web strana i smešta ih u jedan specijalan fajl.

Slika 1: Arhitektura Google-a

 

URLresolver analizira pomenuti fajl sa linkovima i konvertuje apsolutne linkove u relativne i onda ih pridružuje docID-ovima(Slika 1). On takođe smešta tekst iz linkova u gore pomeutu preteču index-a, i pridružuje je docID-ovima na koje pokazuju linkovi. Posle toga generiše bazu podataka sa linkovima koji odgovoaraju docID-ovima. Ta baza se koristi za izračunavanje PageRank-a i vrlo je bitna.
Sorter uzima barrel-e, koji su sortirani po docID-ovima, i ponovo ih sortira po wordID-ovima da generiše takozvani "obrnuti index" (inverted index). Sorter takođe generiše lisu wordID-ova i pridružuje ih obrnutom index-u. Program poznat kao DumpLexicon, uzima ovu listu i zajedno sa listom koja je nastala kao rezultat indexera, odgovara na zadati query tj. upit.


Document index i Lexicon


Ovaj deo pretraživača sadrži informacije o svakom dokumentu. Informacije u svakom zapisu sadrže trenutni status dokumenta, pokazivač na "skladište", rezime dokumenta i razne druge dodatne statističke podatke. Lexicon je ustvari rečnik koji sadrži preko 14 miliona reči ( od kojih su neke vrlo retke ). On se sastoji iz dva dela: liste reči i heš tabele pokazivača. (Heširanje je preslikavanje (mapiranje) ključeva u adrese podataka. To je postupak za traženje podataka izvođenjem neke aritmetičke operacije nad ključem za dobijanje adrese. Kod heširanja uvodi se koncept tabele. Ako sa k označimo ključ nekog podatka, mi primenjujemo neku transformaciju ključa h(k) i ona nam daje poziciju u tabeli gde se nalazi sam podatak ili informaciju o lokaciji (adresi) tog podatka.)


Hit list


Ovo je ujedno i najbitniji deo same baze podataka koji je trebalo projektovati da zauzme što manje prostora i da može veoma brzo da se pretraži. Nemojte ni sumnjati da je baš to i urađeno. Naime, u samoj hit listi se čuvaju podaci o rečima , njihovoj poziciji i kapitalizaciji i fontu. U samo procesu generisanja, Google inženjeri su mogli da krenu u optimizaciju na 3 različita načina: jednostavno kodiranje (sa tripletima celih brojeva), kompaktno kodiranje (ručno raspoređivanje bitova) ili Huffman-ovo kodiranje. (o Huffman-ovom kodu ste mogli pročitati u prošlom broju u članku "Kako radi Zip" kolege Marka Pertovića). Ali tvorci Goole-a su se ipak odlučili za varijantu broj 2, jer donosi mnogo više uštede u prostoru nego varijanta 1, a i dosta manje manipulacija sa bitovima nego Huffman-ov kod - što zahteva manje procesorskog vremena.

Slika 2: Raspored bitova u hit-u


To radi, otprilike, ovako: svaki hit zaizima 2 bajta u memoriji.(Slika 2) Postoje dve vrste hit-ova: plain (obični, sirovi) i fancy (ukrašeni). Fancy sadrže informacije o dodatnim hit-ovima (podhitovima): URL-u, title-u (naslovu HTML dokumenta), tekst samog linka (anchor hit) i META tag (ako ga ima). Plain hit-ovi sadrže sve ostalo: bit kapitalizacije (da li su slova velika ili mala), veličinu fonta i poziciju reči u dokumentu (sve preko 4095 se označava kao 4096). Veličina fonta se predstavlja kao relativna u odnosu na ostatak dokumenta i zauzima 3 bita (ustvari, samo je 7 vrednosti iskorišćeno, jer kombinacija "111" označava da se radi o fancy hit-u). Inače, fancy hit se satoji od 1 bita kapitalizacije, veličine fonta 7 (kombinacija "111" da se označi da je u opitanju fancy hit, 4 bita da se kodira vrsta fancy hit-a (koji je od gore 4 navedena), i 8 bita za poziciju – što sve ponovo iznosi 16 bita , tj 2 bajta.
Što se tiče anchor hit-ova, njihovih 8 bita pozicije su podeljeni na po 4 bita za poziciju u samom anchor-u i još 4 bita za heš docID-a na koji anchor pokazuje. To donekle ograničava "phrase search" – pretragu čitave fraze. Inače, relativna veličina fonta se koristi zato što kada pretražujete, ne želite da vam se identični dokumenti rangiraju različito samo zato što jedan ima veći font, ili obratno. Komplikovano, zar ne?


Stabilno, nema šta...


Kao što vidite, Google je projektovan da bude stabilna mašina za pretragu , i kao takav, ne samo što je engine kodiran dobro, nego i zapošljava mnogo tehničkog osoblja koje svojim znanjem stalno unapređuje pretragu i pruža odličnu tehničku podršku svima koji se oslanjaju na Googe sistem pretraživanja.
U sledećem broju i dalje ćemo se baviti Google pretragom i, između ostalog, videti kako se rangiraju rezultati. Do tada - googlirajte...

 

VRH STRANE

(c) 2003 OMEGA - sva prava zadržana