1 / 12

Apache Lucene lucene.apache/

Apache Lucene http://lucene.apache.org/. Biblioteka za pretragu informacija. Pretraga teksta, osnove API i primeri korišćenja. Šta je Apache Lucene?.

dean-rice
Download Presentation

Apache Lucene lucene.apache/

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Apache Lucenehttp://lucene.apache.org/ • Biblioteka za pretragu informacija. Pretraga teksta, osnove API i primeri korišćenja

  2. Šta je Apache Lucene? • Nije alat za pretragu, već biblioteka, API koji daje strukture podataka i procedure koje nam omogućavaju da u aplikaciju ugradimo funkcije pretrage (information retrieval - IR) • Razvoj počeo oko 2000. godine (Doug Cutting), brzo stečena popularnost • Trenutno u verziji 3.4. Najpopularnija Java biblioteka te namene. Brojni komercijalni i open-source projekti zasnovani na Lucene • Postoje implementacije i u drugim jezicima (.NET, Ruby, Perl, Python, C++...)

  3. Indeksiranje • Često slušamo o indeksima pri pretraživanju. • Nije naročito zahtevno pretražiti sekvencijalno jedan dokument. Ako je broj veći, potrebna nam je pomoćna struktura - indeks. • Indeksi na kraju knjiga beleže stranice gde se pojavljuju značajne reči i izrazi • Indeks smanjuje obim pretrage i daje lokaciju traženih reči

  4. Lucene indeksi • Lucene indeks se čuva na fajl sistemu i sadrži podatke bitne za pretragu dokumenata • Klasa org.apache.lucene.document.Document predstavlja osnovnu jedinicu koja se analizira, smešta u indeks i pretražuje • Jedan dokument može sadržati jedno ili više polja (org.apache.lucene.document.Field). Polja su svojstva dokumenta koja se pretražuju ili služe kao opisni podaci • Upiti nalaze dokumente čija polja imaju određene vrednosti (slobodan tekst, brojevi, datumi...) ili su u nekom opsegu • Analogija sa knjigom i traženjem pojma u indeksu: dokument je jedna stranica, polje je broj strane, kao i tekstualni sadržaj te strane (ali obrađen)

  5. Indeksiranje u praksi • Naše dokumente prevodimo u “sirovi tekst” - razne biblioteke za parsiranje i izdvajanje teksta iz raznih formata • Lucene tekst parsira, pretvara u tokene i analizira za indeksiranje (stop reči, svođenje reči na koren i druge operacije specifične za svaki jezik) • Dokumentu pridružujemo kao polja druge relevantne informacije vezane za dokument (datum, neki identifikator...) • Dokument se smešta u indeks • Indeks može biti na fajl sistemu (FSDirectory) ili u RAM (RAMDirectory)

  6. Primer • Pretražujemo HTML dokumente u nekom direktorijumu • Jedan HTML fajl predstavljaće jedan Lucene dokument • Polja: tekst (iz HTML BODY), naslov (TITLE) i putanja na fajl sistemu • Pretražujemo po naslovu i po tekstualnom sadržaju. • Rezultat vraća putanju i naslov • Radimo sa dva indeksa - jedan je u RAM i služi kao bafer, drugi je na fajl sistemu i u njega na svakih 100 dokumenata ubacujemo (spajamo, merge u Lucene terminologiji) indeks koji je u RAM

  7. Šta radi Analyser? • Zavisi koji (StandardAnalyser, StopAnalyser...). Postoje jednostavniji i složeniji. • Uopšteno iz teksta dokumenta izdvaja tokene koje vredi indeksirati, ne ubacivati u indeks suvišne reči • Npr. StandardAnalyser će leksičkom analizom izdvojiti pojedine reči, ukloniti stop reči engleskog jezika, prepoznati e-mail adrese, nazive kompanija, reči koje sadrže apostrofe, svodi reči na koren, osnovni oblik, uklanja akcente i svodi na mala slova... Radi i sa istočnim pismima (Kina, Japan, Koreja), a isprobano i sa domaćom latinicom i ćirilicom :) • Sandbox projekti nude dodatne analizatore • Kao i sve u vezi pretrage, izbor analizatora zavisi od konkretnih potreba

  8. Od tokena ka indeksu • Tokeni odlaze u indeks i postaju Term - vrednosti na osnovu kojih se vraćaju rezultati pretrage • Ne mora svako polje da bude analizirano - neka mogu da budu uneta sa tačnim vrednostima i da kao takva budu pretraživana • Ako želimo da brzo rekonstruišemo indeksiranu vrednost, i vrednost je relativno mala, možemo je celu čuvati u indeksu. Npr. neki datum, naslov, ime fajla itd. • Analizator može biti drugačiji od dodeljenog IndexWriteru za određeni dokument

  9. Upiti • Bogat Query API - jednakost, slilčnost, opsezi vrednosti, wildcard • Kombinovanje upita • QueryParser: formira upit od unetog stringa • IndexSearcher pretražuje indeks na zadati upit • Collector i Hits objekti prikupljaju i rangiraju rezultate (ne cele dokumente, već samo interne id-eve dokumenata) • Možemo dobiti dokument upitom nad indeksom koristeći id dokumenta

  10. Segmenti • Dodavanje i brisanje dokumenata se vrši inkrementalno • Jedan segment je grupa indeksiranih dokumenata • Dokumenti se dodaju u tekući indeks i periodično spajaju sa drugim segmentima • Optimizacije (broj segmenata, broj dokumenata po segmentu...) • Spajanje više indeksa

  11. Druga pitanja vezana za indeksiranje • Konkurentnost u pristupu: moguće je pretraživati indeks dok je u toku upisivanje • Transakciono ponašanje • Paralelni rad sa više indeksa (FS ili RAM) • Optimizacija - brzina indeksiranja, brzina pretrage • Prostor na disku i broj otvorenih fajlova • Backup

  12. Najbolje da probate sami :) • Par jar biblioteka (Lucene, nešto Apache Commons, neki parser za HTML, PDF, MS Word...) • Gomila dokumenata • Igrajte se • Dosta tutoriala, primera, knjiga Lucene in Action... • Probajte nešto od dodatnih biblioteka koje dolaze uz Lucene • Probajte i druge stvari (solr server, Tika...)

More Related