petak, 19 aprila, 2024
Internet, mreže i komunikacije

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

Autor: Dejan Čugalj

Šta je stvarno Lucene?

Lucene je Java-ina biblioteka za pronalaženje informacija (engl. Information Retrieval – IR). „Apache Lucene – korak do Google-a (1. deo)”, članak koji je izašao u broju 12, samo je „zagrebao led ispod kilometarske ledene površine” pokušajem približavanja šta suštinski znači informacija, i kada kažemo IR mislimo na proces traženja informacija u dokumentima koji su u elektronskoj formi. Članak u prošlom broju je uvodni deo, više kao teorijska priprema za dublje upuštanje u opis Lucene biblioteke.

Lucene nije već predefinisan i spreman za upotrebu (ready to use) program, već više predstavlja šablon (freamework) za mogućnost sopstvene implementacije pretrage u bilo koji od programa, nebitno da li smo ga napisali mi ili neko drugi. Iz ovog se vidi da je potrebno neko početničko programersko znanje programskog jezika Java (Python ili C#), ali stvarno početničko, za korišćenje i implementaciju osnovnih delova ove biblioteke. Čitaoci će možda, a često se i dešava, da pomešaju Lucene sa web pretraživačima, možda čak i da je uporede sa njima, što ona u suštini nije. Kao što smo rekli, pretraživači su sklop ujedinjenih i sinhronizovanih modula kojima se pripisuje velika složenost, pa tako i Lucene predstavlja samo jedan deo, modul, koji taj sklop čini izvodljivim i koji ćemo pokušati da implementiramo kako se budemo približavali kraju serijala o Lucene. Naravno, ovde spominjemo samo web pretraživače, ali u suštini, pretraga i dobijanje informacija se osim na internetu koristi i u raznim drugim naučnim oblastima, počevši od: data mining-a, biologije, meteorologije (utvrđivanje raznih klimatskih obrazaca), finansija (berze), itd.

Apstraktnost sa kojom se borimo samo pišući o Lucene dovodi do momenta koji glasi: gde smo to mi ikada koristili Lucene? Samo par primera: MySpace, LinkedIn, Fedex, Apple, Eclipse IDE (programerima poznato razvojno okruženje), MIT’s OpenCourseWare, Disney itd. Spisak svih, trenutno „Powered by Lucene” projekata možete videti na web adresi: http://wiki.apache.org/lucene-java/PoweredBy.

Šta stvarno može Lucene?

Napomenuli smo da Lucene nije gotov, spreman za upotrebu program za pretragu, već predstavlja samo podlogu, pozadinu na kojoj se programiraju programi, što možemo predstaviti slikom.

Trenutno prepoznajemo samo glavni (core) deo, ali već u sledećem broju će biti sve jasnije.

Ovde je bitno napomenuti da biblioteci Lucene nije presudna lokacija podataka koje prima: dokumenti na lokalnom tvrdom disku, web serveru, bazi podataka. Takođe, nije bitno ni koju ekstenziju imaju: .XML, .HTML, .PDF, ili bilo kojeg drugog formata, iz prostog razloga što je programer zadužen za ekstrakciju samog teksta iz dokumenta. Drugim rečima, da bi Lucene bila u mogućnosti da „odradi posao” indeksiranja, programer je taj koji mora da spremi podatke za Lucene.

U zavisnosti od domena samog problema i zahteva korisnika, mogu da se koriste razne pomoćne biblioteke za samu ekstrakciju teksta iz e-dokumenta, web stranice ili baze podataka itd.

Pretpostavimo da imamo web stranicu na kojoj bi trebalo da pretražimo tekst. U ovom slučaju bismo morali da napišemo ili da iskoristimo već napisanu biblioteku koja mora da očisti (parsira) tu web stranicu; drugim rečima, morali bismo da očistimo sve HTML tag-ove koji nam ne trebaju da bismo na kraju došli do teksta koji se obično nalazi između

<body></body>

tag-ova HTML jezika, pa u sledećem koraku da se očiste paragrafi, podebljan tekst, pa možda ako želimo linkove da izvučemo koji se nalaze u

 <ahref="http://www.w3schools.com/">Visit W3Schools</a>

tag-ovima (desni klik na web stranicu, pa pregled kôda (View Source), mislimo da će vam biti jasnije). Vidimo da je u ovom domenu pretrage web parser internet stranice jako bitan i ovde se najviše daje na značaju baš njima dok je sam rad sa Lucene mnogo lakši.

Prilikom pisanja programa verovatno ćete duplo više vremena izgubiti pripremajući, parsirajući e-dokumenta nego što je sama implementacija i indeksiranje Lucene bibliotekom. To samo govori o snazi Lucene biblioteke (prim. aut). Takođe, u slučaju da želimo da pretražimo naše PDF dokumente koji se nalaze na tvrdom disku, prvo što treba da uradimo je da iskoristimo već napisanu biblioteku koja je u mogućnosti da „izvuče” tekst iz te vrste e-dokumenata, pa tek onda da prosledimo Lucene da indeksira. Spisak ekstenzija elektronskih dokumenata veoma je veliki (.PDF, .DOC, .DOCX, .ODT, .TXT… ). Koristan link ekstenzija datoteka http://www.fileinfo.com/filetypes/common.

Ideja kojom se vodimo i koja će, nadamo se, na kraju ukrasiti ovaj serijal o Lucene je projekat napisan u Java programskom jeziku, a korist samog programa je pretraga PDF dokumenata po sadržaju, te iz toga proizilazi savet za one koji su se već susreli sa Lucene da za ekstrakciju teksta koriste predivnu biblioteku „Apache Tika” jer je to Java-ina biblioteka koja podržava najveći broj ekstenzija e-dokumenata, i koja je takođe pod „Apache Software License, Version 2.0” (open source) licencom. Koristan link je http://tika.apache.org.

Ovoj veoma korisnoj biblioteci, a i takođe prvom koraku implementacije Lucene biblioteke – ekstrakcijom teksta (malo programiranja), ćemo se pozabaviti već u sledećem broju LiBRE! časopisa!

Prethodni deo | Nastavak