Zadnjih par mjeseci se zbog količine obaveza slabo bavim vlastitim projektima, ali tu i tamo stignem posvetiti koji sat igranju i eksperimentiranju. Jedna od stvari s kojima sam se zabavljao došla je dovoljno daleko da može ugledati svjetlo dana. Radi se o eksperimentu sa web tražilicama.
Zašto igrarija s tražilicama kad je tu Google? Evo nekoliko razloga:
Korisnost prikazanih podataka

Koliko vam ovo ima smisla? Hoćete li baš tolko rezultata gledati? Da, psihološki djeluje impresivno, ali ono, rat tražilica je gotov, ‘ajmo biti malo realni i davati korisne podatke. Osobno mislim da je korisnije dati relativno mali broj rezultata (recimo do 100) za koje tražilica misli da su relevantni, te uz svaki od njih napisati i koliko su otprilike relevantni. Tako ako prva dva rezultata imaju preko 90% relevantnost, a treći ima 30%, očito je gdje je otprilike “granica” dobrih rezultata. Zasad tražilica daje sve rezultate koji imaju relevantnost nekih 5% (što u praki ispadne oko 100njak rezultata), što je prilično konzervativno i vjerojatno se granica može pomaknuti na 30%).
Iskorištavanje prostora na malim ekranima

Količina korisnih informacija na jednom ekranu, kod mobilne inačice pretraživača. (Napomena: kako bi dobio screenshotove, koristio sam OperaMini demo sa Operinih stranica, jer fotografiranje Symbian telefona sa upaljenim browserom ne daje baš kvalitetnu sliku. Pokušao sam uspoerdno dati i prikaz Pogodka, ali iz nekog razloga on ne smatra OperuMini mobilnim browserom, pa se učita standardna stranica).
Minimalizam
Ukoliko se usredotočimo samo na pretraživanje weba, onda dosta “zgodnih detaljčića” koje postojeće web tražilice imaju postaju suvišne. Za usporedbu, pogledajte Google, Pogodak i TraZhi. Osobno volim minimalizam, te mi je ljepše ako web tražilica nije polu-portal, nego je, well…web tražilica. Jedna od krajnosti u koju smo išli je složiti dizajn bez ikakvih slika (favicon ne računamo, jer ga se nigje u HTMLu ne poziva. Browseri ga učitavaju na vlastiti rizik :), tj uz korištenje samo stvari koje nam CSS pruža. Tu još ima mjesta za dorade, ali overall ideja je minimalizam i jednostavnost.
Bandwidth
Kao jedna od posljedica minimalizma, ali i zbog različitih optimizacija koje sam isprobavao (minimiziranje htmla i css-a, gzipanje, nekorištenje nikakvih slika, itd – pritom je je YSlow bio iznimno koristan) uspio sam postići da se izuzetno malo podataka mora prenijeti do browsera. Za primjer pretraživanja za “britney” (na normalnoj tražilici, dakle ne mobilnoj verziji) potrebno je prenijeti 2KB, dok za isti takav query na Googleu prebaci 21KB ukoliko stranica (tj slike) nije u cacheu, a 5KB ukoliko je. U sva tri slučaja, sam sadržaj stranice je gzipan.
Višestruki izvori
Zašto pitati samo jednu tražilicu (pa makar ona bila i najbolja na svijetu) ako možete pitati više njih (pod uvjetom da su i ostale kvalitetne) i napraviti prosjek? Za svaki query korisnika, tražilica se raspita na par mjesta, pozbroji dobivene podatke, i da skupne rezultate. U mom eksperimentiranju i subjektivnom istraživanju pokazalo se da rezultati iz više izvora budu jednako ili više relevantni za pojam. Osim toga, ovakvo “peglanje” rezultata osigurava i da zlonamjerne ciljane Google SEO optimizacije ne dolaze toliko do izražaja (jer ciljaju samo Google), a za paranoike je dobro znati da Google koliko god postao zao ne može jednostavno “isključiti” neku (relevantnu) stranicu iz rezultata, jer će je ostali izvori pokazati.
Nema reklama i bannera
Provjereni recept s Naslovnice, ovog puta doveden do ekstrema. Kako se radi o eksperimentalnom projektu iz gušta, nema nikakvih reklama, bannera, sponzorstava i tome slično. Jedina tome slična stvar je jedan link na stranice Rei.
Problemi
Naravno da cijela stvar ima i par (ozbiljnih) problema. Neke od njih nadam se s vremenom rješiti, odnosno ima lijeka samo treba vremena i još malo rada na sustavu, dok za neke trenutačno ne vidim pametan način da ih se zaobiđe.
- Latencija — Količina prenesenih podataka tj potrošeni BW stvarno je minimalna, ali se rezultate čeka dulje nego kod drugih tražilica, iz jednostavnog razloga što u većini slučajeva moja tražilica mora pitati dalje za podatke, i tek nakon dolaska podataka i skupne obrade ih prikazuje. U praksi to znači da je moguće čekanje do 6s. Ukoliko se rezultati već nalaze u cacheu (recimo kod pregledavanja druge stranice rezultata, ili kod popularnih pojmova), vrijeme odaziva je manje.
- Oslanjanje na druge tražilice – ukoliko “upstream” tražilica zabrlja, i mi zabrljamo. Neki od izvora također parsiraju druge izvore, pa im se ponekad zalomi da krivo to protumače i onda u naslovu stranice bude i “[Translate This Page]” :)
Isprobajte
(Dosadašnji) rezultat eksperimenta se zove TraZhi – a lightweight search engine, pozivam vas da ga isprobate i javite kako vam se čini. Sve sugestije su dobrodošle, ovdje smo da se igramo :)
P.S.
Web server je custom asinkroni single-threaded pisan u TwistedPython frameworku, uz Apache kao reverse-proxy ispred njega. Više o korištenim izvorima možete naći na About TraZhi stranici.

pazi što daje za query: http://www.trazhi.com/?q=senko+ra%C5%A1i%C4%87
Osmi link je dosta čudan i nije mi jasno kakve ima veze: http://www.trazhi.com/www.zwagertechniek.nl/
(da, url napiše na kraju tvog url-a, tak da se ne može kliknuti, definitivno greška.
Je, to je greška. URL koji dobijem od izvora nema ‘http’ u sebi a ja to greškom ne provjeravam, pa onda nakeljim samo hostname umjesto da prependam sa http, pa se zato to događa. Tnx na dojavi!
Za činjenicu da je ovaj link gore – *zbunj* isto. Nema nikakve veze sa mnom :)