subota, 20 aprila, 2024
Internet, mreže i komunikacije

Apache Lucene – korak do Google-a (1. deo)

Autor: Dejan Čugalj

Ljudska potreba za otkrivanjem novog nas je odvela na Mesec, sutra će nas, verovatno, odvesti i na Mars, Veneru, Pluton, ali ono sa čim trenutno moramo da se složimo je da internet predstavlja najveće ljudsko dostignuće. Web pretraživači su u velikoj meri uticali na razvoj interneta kao primarnog izvora informisanja na kraju 20. i početku 21. veka. Oni nam toliko olakšavaju život dajući nam informacije „na dlanu”, da se više i ne pitamo šta je to zapravo informacija.

Previše je komplikovano opisati na kom principu funkcionišu algoritmi web pretraživača, čak i ukratko, ali jedan od osnovnih teorijskih temelja na kome se zasnivaju ovi algoritmi je naučna oblast koja se bavi teorijom informacija i kodovanja. Verovatno se pitate zašto je toliko bitan ovaj deo naučne oblasti IT tehnologija, kada je, na kraju krajeva, kako i sam naziv kaže, ovo u principu filozofska (teorijska) oblast, a i većina korisnika interneta nije nikada ni čula za „to”. Naravno da se ovaj deo naučne oblasti IT tehnologija ne može predstaviti jednom rečenicom, ovim tekstom ili nekim kratkim opisom, ali u suštini, ono što smo dobili Šenonovim (engl. Claude Elwood Shannon) istraživanjem teorije informacija, je odgovor na pitanje šta je u stvari niz bitova, bajtova jedne web stranice, slike, filma, javnog/tajnog ključa SSL sertifikata, u perspektivi, podatka kao nosioca informacije koja se može matematički „izmeriti”. Zbog toga, u naučnim krugovima, Šenon važi za „oca” teorije informacija. Vrednost podataka (informacija) kao jednog od osnovnih i ključnih delova web pretraživača se preslikala na studentsko životno ostvarenje Larry Page-a i Sergey Brin-a, a nazvali su ga Google.

Teorija informacija nam je donela još jedan zanimljiv deo, a to je matematička predstava količine podataka na web-u. Ovo nije tekst koji se bavi tim statističkim podacima, ali verujte da se radi o ogromnoj količini podataka koja se meri Yottabyte-ovima.


Sva ta ogromna količina informacija savremenog doba je tu, čak može da se kaže da je i opipljiva na neki virtuelan način, ali se postavlja pitanje kako doći do nje. Šta je suštinski informacija, koliko ona vredi, koliko je „teška” za upit (query) ka traženom podatku i sl., sve nam je to na papiru dao Šenon, ali ono što implementira matematiku sa tog papira su u stvari algoritmi internet web pretraživača. U principu, svi internet web pretraživači rade na poprilično logičan i predvidljiv način, ali s obzirom na tajnost algoritama koje koriste, ne može se sa sigurnošću tvrditi da je to baš tako, no… Svedoci smo razvoja jednog od najvećih open source projekata, GNU/Linux-a, zamislite kako bi izgledao FLOSS Google (prim. aut.). Zvuči neverovatno, ali bez obzira na profit kompanija koje poseduju najveće svetske web pretraživače i naravno njihove algoritme, neke od njih su voljne da u nekim momentima predaju makar deo svog intelektualnog blaga javnosti, kao što se, na našu sreću, desilo decembra 2004. kada je Google Labs javno objavio MapReduce algoritam, što je open source zajednica znala da iskoristi. Da li se kaju ili ne, ne znamo, jer se postavlja pitanje šta su dobili… Objavljivanjem samo dela svog algoritma, Google Labs nam je zagolicao maštu principom i složenošću sistema po kojem algoritmi web pretraživača funkcionišu. Za sve ono što smo mi od svega toga dobili, zasluge dugujemo open source projektu Apache Lucene, kao samo jednom od projekata iz porodice Apache Software Foundation’s Jakarta family (Java), kao i osnivaču ovog projekta, Doug Cutting-u.

Doug Cutting

Tokenizacija (ukratko)

Prilikom učenja bilo kog od programskih jezika, u jednom trenutku se morate susresti sa terminom „tokenizacija”, u klasama obrade string literala. Tokenizacija je, zapravo, obično razdvajanje reči iz rečenice. Kada kažemo razdvajanje reči, mislimo na izdvajanje reči nekim pattern-om (šablonom) koji, na primer, razdvaja reči po pravilu praznih polja, zareza itd. Rečenica: „Ovo je divan dan”, posle tokenizacije sa prelomom u novi red bi izgledala ovako:

Ovo

je

divan

dan

Ovo je bitno jer se, generalno gledano, ovim principom vode i web pretraživači. Svaka reč predstavlja indeks tj. težinu informacije u podatku, što nas opet vraća Šenonu i njegovoj teoriji informacija, kao i pitanju koja je količina informacija stvarno sadržana u svakoj od ovih reči. Možete da primetite da su predikati, imenice i pridevi, jedni od glavnih nosioca informacija, ali to ne mora po pravilu uvek da bude tako. Analizom gorenevedene rečenice, možemo da izdvojimo reči: „Ovo” i „je”, tzv. nosioce podataka koji nemaju na informacionoj težini, ali su ipak podaci, dok: „divan” i „dan” predstavljaju podatak koji nosi neku informaciju u sprezi konteksta rečenice te kao takvi imaju informacionu težinu. Verovatno se pitate zašto je bitno u kom se kontekstu gorenavedena rečenica može protumačiti (indeksirati), kao i koliko je informacija sadržano u svakoj reči, a to su upravo tajne koje ćemo, nadamo se i uspešno, razotkriti. Zvuči suludo, lako i prosto, ali tako je. U ovom malom i prostom primeru možete da vidite i naslutite SEO (Search Engine Optimization) princip. Postavlja se pitanje koji je značaj ključnih reči (key words) prilikom optimizacije nekog sajta i zašto neke od reči dobijaju veći „značaj” od drugih prilikom indeksiranja web pretraživača. Iako vam trenutno zvuči nejasno kako sve ovo funkcioniše, pokušaćemo to detaljnije da vam objasnimo putem Apache Lucene projekta kao i čitave porodice open source projekata iz familije Jakarta, kroz seriju članaka objavljenih u LiBRE! časopisu. Svako ko sebe naziva SEO stručnjakom, morao bi da poznaje principe Apache Lucene projekta (prim. aut.).

Apache Lucene – Opis projekta

Da biste dobili pravi osećaj šta je Apache Lucene, i koliko je moćan, morate prvo da se zapitate koliko često imate potrebu za dobijanjem informacija, bilo sa tvrdog diska vašeg računara ili sa web-a. Zamislite da posedujete vašu biblioteku e-knjiga, samo e-knjiga, koja se nalazi u jednoj fascikli a koja je podeljena na potfascikle (po kategorijama, temama, pa i ključnim rečima – metapodacima iz samog e-dokumenta). Pošto svaki dokument ima metapodatke (datum kada je napravljen, datum kada je izmenjen, naziv autora, ključne reči), pronalaženje određenog dokumenta po metapodacima je izvodljivo i relativno lako, ali prelazak u niži nivo analize (kao što je pretraga po sadržaju), predstavlja domen naučne fantastike ako se, naravno, radi ručno. Verovaćete nam ako kažemo da je to ipak moguće, da je moguće doći do analize i rezultata pretrage za vreme mereno milisekundama, nezavisno od veličine i kompleksnosti podataka, a da je rezultat pretrage moguće prikazati sa svim programerskim detaljima (kojih, uzgred, ima puno). Upravo takvu vrstu pretrage obavlja Apache Lucene, biblioteka za pretragu, pisana u programskom jeziku Java, koja omogućava implementaciju sopstvenog i nezavisnog pretraživača, kojem je samo mašta limit.

Nastavak