Download as pdf or txt
Download as pdf or txt
You are on page 1of 57

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Apache Lucene biblioteka i alati


Dragan Ivanovi
dragan.ivanovic@uns.ac.rs
Katedra za informatiku, Fakultet tehnikih nauka, Novi Sad

2013.

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

1 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

ta je Lucene
Biblioteka za full-text pretraivanje
Visoke performanse, skalabilna
Fokus je na indeksiranju i pretraivanju
100% Java, ne oslanja se na druge biblioteke, nema
konguracionih fajlova
Nema pauka (crawler/spider), nema parsiranje posebnih
formata dokumenata
Korisnici: Wikipedia (na diplomac!), SourceForge,
TheServerSide, Nabble
Aplikacije: Eclipse, JIRA, Nutch, Solr, Alfresco
Open source: http://lucene.apache.org
O. Gospodneti, E. Hatcher.
Manning, 2010.
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Lucene In Action, Second edition

Apache Lucene biblioteka i alati

2 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Lucene dokumenti
Lucene indeksira i pretrauje tekstualne dokumente

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

3 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Lucene dokumenti
Lucene indeksira i pretrauje tekstualne dokumente
Dokumenti se sastoje iz polja (eld)

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

3 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Lucene dokumenti
Lucene indeksira i pretrauje tekstualne dokumente
Dokumenti se sastoje iz polja (eld)
Polja imaju ime (string) i sadraj (string)

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

3 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Lucene dokumenti
Lucene indeksira i pretrauje tekstualne dokumente
Dokumenti se sastoje iz polja (eld)
Polja imaju ime (string) i sadraj (string)

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

3 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Lucene indeks

Sadraj polja u dokumentu se procesira za invertovani indeks


Polja mogu biti oznaena kao (terminologija se menja u
razliitim verzijama)
Indexed: obavezno za pretragu i sortiranje
Tokenized: podela na tokene, analiza teksta pre indeksiranja
Stored: sauvaj originalan sadraj polja u indeksu
Stored TermVectors: uz dokument sauvan i invertovani indeks

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

4 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Lucene indeks

Sadraj polja u dokumentu se procesira za invertovani indeks


Polja mogu biti oznaena kao (terminologija se menja u
razliitim verzijama)
Indexed: obavezno za pretragu i sortiranje
Tokenized: podela na tokene, analiza teksta pre indeksiranja
Stored: sauvaj originalan sadraj polja u indeksu
Stored TermVectors: uz dokument sauvan i invertovani indeks

Lucene dokument moe da sadri i podatke i metapodatke!

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

4 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Vrste polja

TextField - za vee koliine sadraja, tokenized, indexed, not


stored
StringField - za identikatore po kojima se moe i pretraivati,
indexed, stored, not tokenized
StoredField - stored, not indexed, not tokenized
LongField, IntField, DoubleField - optimizovana pretraga i
sortiranje za odreene vrste podataka

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

5 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Indeksiranje dokumenta

IndexWriter writer = new IndexWriter(directory, indexWriterConfig)


Document doc = new Document();
doc.add(new TextField("author", "Angus Young",
Store.YES));
doc.add(new TextField("author", "Malcolm Young",
Store.YES));
doc.add(new TextField("title", "Crabsody in Blue",
Store.YES));
// ...
writer.addDocument(doc);
writer.close();

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

6 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Konkurentan pristup indeksu

Najvie jedan IndexWriter moe da pristupa indeksu u jednom


trenutku

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

7 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Konkurentan pristup indeksu

Najvie jedan IndexWriter moe da pristupa indeksu u jednom


trenutku
nema konkurentnog indeksiranja

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

7 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Konkurentan pristup indeksu

Najvie jedan IndexWriter moe da pristupa indeksu u jednom


trenutku
nema konkurentnog indeksiranja

Zakljuavanje indeksa se vri na nivou fajl sistema

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

7 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Konkurentan pristup indeksu

Najvie jedan IndexWriter moe da pristupa indeksu u jednom


trenutku
nema konkurentnog indeksiranja

Zakljuavanje indeksa se vri na nivou fajl sistema


Aktivan thread je blokiran u IndexWriter konstruktoru sve dok
je indeks zauzet

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

7 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Konkurentan pristup indeksu

Najvie jedan IndexWriter moe da pristupa indeksu u jednom


trenutku
nema konkurentnog indeksiranja

Zakljuavanje indeksa se vri na nivou fajl sistema


Aktivan thread je blokiran u IndexWriter konstruktoru sve dok
je indeks zauzet
jednostavna upotreba...

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

7 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Konkurentan pristup indeksu

Najvie jedan IndexWriter moe da pristupa indeksu u jednom


trenutku
nema konkurentnog indeksiranja

Zakljuavanje indeksa se vri na nivou fajl sistema


Aktivan thread je blokiran u IndexWriter konstruktoru sve dok
je indeks zauzet
jednostavna upotreba...
...jedan od osnovnih kriterijuma za dizajn Lucene API-ja:
koristi se onako kako je najloginije i najjednostavnije

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

7 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

IndexWriter osnovne operacije

addDocument(Document doc)
addIndexes(IndexReader... readers)
deleteDocuments(Term t)
deleteDocuments(Query query)
updateDocument(Term t, Document doc)
close(), commit(), rollback(), ush(), getAnalyzer(),
getDirectory() ...

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

8 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Pretraivanje indeksa

Upiti se mogu kostruisati na dva naina

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

9 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Pretraivanje indeksa

Upiti se mogu kostruisati na dva naina


pomou jednostavnog upitnog jezika

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

9 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Pretraivanje indeksa

Upiti se mogu kostruisati na dva naina


pomou jednostavnog upitnog jezika
programski pomou Lucene API-ja (vie mogunosti)

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

9 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Pretraivanje indeksa

Upiti se mogu kostruisati na dva naina


pomou jednostavnog upitnog jezika
programski pomou Lucene API-ja (vie mogunosti)
(prvi nain se interno svodi na drugi)

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

9 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Pretraivanje indeksa

Upiti se mogu kostruisati na dva naina


pomou jednostavnog upitnog jezika
programski pomou Lucene API-ja (vie mogunosti)
(prvi nain se interno svodi na drugi)

Mogue je pristupati indeksu radi pretraivanja iz vie


threadova

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

9 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Pretraivanje indeksa

Upiti se mogu kostruisati na dva naina


pomou jednostavnog upitnog jezika
programski pomou Lucene API-ja (vie mogunosti)
(prvi nain se interno svodi na drugi)

Mogue je pristupati indeksu radi pretraivanja iz vie


threadova
konkurentno pretraivanje

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

9 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Pretraivanje indeksa

Upiti se mogu kostruisati na dva naina


pomou jednostavnog upitnog jezika
programski pomou Lucene API-ja (vie mogunosti)
(prvi nain se interno svodi na drugi)

Mogue je pristupati indeksu radi pretraivanja iz vie


threadova
konkurentno pretraivanje
nije potreban nikakav kod za sinhronizaciju

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

9 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Pretraivanje dokumenta
DirectoryReader reader = DirectoryReader.open(directory);
IndexSearcher searcher = new IndexSearcher(reader);
QueryParser parser = new QueryParser("contents", analyzer);
Query query = parser.parse("author:Young");
TopScoreDocCollector collector =
TopScoreDocCollector.create(hitsPerPage, true);
searcher.search(query, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
System.out.println("matches:" + hits.length);
Document doc = searcher.doc(0);
System.out.println("author=" + doc.get("author"));
searcher.close();

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

10 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Upitni jezik
Upit se izraava kao string
Parsiranje upita obuhvata i analizu teksta
Ne obuhvata sve postojee tipove upita

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

11 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Upitni jezik
Upit se izraava kao string
Parsiranje upita obuhvata i analizu teksta
Ne obuhvata sve postojee tipove upita
Dva tipa termova: rei (test, hello)
i fraze ("hello dolly")

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

11 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Upitni jezik
Upit se izraava kao string
Parsiranje upita obuhvata i analizu teksta
Ne obuhvata sve postojee tipove upita
Dva tipa termova: rei (test, hello)
i fraze ("hello dolly")
Term je uvek vezan za polje; polje se navodi ispred terma i
razdvaja dvotakom title:blue, author:Young

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

11 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Upitni jezik
Upit se izraava kao string
Parsiranje upita obuhvata i analizu teksta
Ne obuhvata sve postojee tipove upita
Dva tipa termova: rei (test, hello)
i fraze ("hello dolly")
Term je uvek vezan za polje; polje se navodi ispred terma i
razdvaja dvotakom title:blue, author:Young
Ako se polje ne navede, podrazumeva se

default

polje

Default polje se denie prilikom konstrukcije parsera

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

11 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Upitni jezik
Upit se izraava kao string
Parsiranje upita obuhvata i analizu teksta
Ne obuhvata sve postojee tipove upita
Dva tipa termova: rei (test, hello)
i fraze ("hello dolly")
Term je uvek vezan za polje; polje se navodi ispred terma i
razdvaja dvotakom title:blue, author:Young
Ako se polje ne navede, podrazumeva se

default

polje

Default polje se denie prilikom konstrukcije parsera


Termovi se mogu povezivati logikim operatorima
author:Young
title:Blue

and

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

11 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Modikacije terma

Doker znaci
te?t  zamenjuje jedno slovo
tes*, te*t  zamenjuje vie slova
*est  doker znak nije dozvoljen na prvom mestu!

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

12 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Modikacije terma

Doker znaci
te?t  zamenjuje jedno slovo
tes*, te*t  zamenjuje vie slova
*est  doker znak nije dozvoljen na prvom mestu!

Fuzzy pretraga: koristi Levenshtein rastojanje (edit distance)


roam  pronai e i roams i foam
roam2  minimalna edit distance je 0 (celobrojna vrednost)
podrazumevana edit distance je 2

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

12 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Modikacije terma

Doker znaci
te?t  zamenjuje jedno slovo
tes*, te*t  zamenjuje vie slova
*est  doker znak nije dozvoljen na prvom mestu!

Fuzzy pretraga: koristi Levenshtein rastojanje (edit distance)


roam  pronai e i roams i foam
roam2  minimalna edit distance je 0 (celobrojna vrednost)
podrazumevana edit distance je 2

Blizinska pretraga: na kraj fraze dodati max rastojanje


"jakarta apache"10  pronai jakarta i apache na rastojanju
od max 10 rei

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

12 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Modikacije terma

Pretraga po opsegu vrednosti


modDate:[20020101 TO 20030101] (zatvoreni interval)
title:{Aida TO Carmen} (otvoreni interval)
poreenje je uvek leksikografsko (npr. brojevi se nee pravilno
porediti)

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

13 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Modikacije terma

Pretraga po opsegu vrednosti


modDate:[20020101 TO 20030101] (zatvoreni interval)
title:{Aida TO Carmen} (otvoreni interval)
poreenje je uvek leksikografsko (npr. brojevi se nee pravilno
porediti)

Term boosting: poveavanje znaaja terma


jakarta4 apache  jakarta bie znaajniji od apache
podrazumevani boost je 1
boost > 0

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

13 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Logiki operatori
Operatori:

and, or, not, +, -

Piu se iskljuivo velikim slovima

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

14 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Logiki operatori
Operatori:

and, or, not, +, -

Piu se iskljuivo velikim slovima


je podrazumevani operator

or

jakarta apache jakarta

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

or

apache

Apache Lucene biblioteka i alati

14 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Logiki operatori
Operatori:

and, or, not, +, -

Piu se iskljuivo velikim slovima


je podrazumevani operator

or

jakarta apache jakarta

or

apache

and ili && ima funkciju preseka skupova


jakarta

and

apache

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

14 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Logiki operatori
Operatori:

and, or, not, +, -

Piu se iskljuivo velikim slovima


je podrazumevani operator

or

jakarta apache jakarta

or

apache

and ili && ima funkciju preseka skupova


jakarta

and

apache

+ zahteva postojanje terma iza sebe


+jakarta lucene

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

14 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Logiki operatori
Operatori:

and, or, not, +, -

Piu se iskljuivo velikim slovima


je podrazumevani operator

or

jakarta apache jakarta

or

apache

and ili && ima funkciju preseka skupova


jakarta

and

apache

+ zahteva postojanje terma iza sebe


+jakarta lucene

not (binarni operator!) predstavlja razliku skupova


"jakarta apache"

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

not

"apache lucene"

Apache Lucene biblioteka i alati

14 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Logiki operatori
Operatori:

and, or, not, +, -

Piu se iskljuivo velikim slovima


je podrazumevani operator

or

jakarta apache jakarta

or

apache

and ili && ima funkciju preseka skupova


jakarta

and

apache

+ zahteva postojanje terma iza sebe


+jakarta lucene

not (binarni operator!) predstavlja razliku skupova


"jakarta apache"

not

"apache lucene"

- zahteva nepostojanje terma iza sebe


"jakarta apache" -lucene

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

14 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Grupisanje

Grupisanje logikih izraza


(jakarta

or

apache)

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

and

website

Apache Lucene biblioteka i alati

15 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Grupisanje

Grupisanje logikih izraza


(jakarta

or

apache)

and

website

Grupisanje polja
title:(+return +"pink panther")

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

15 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Tokenizatori

Rastavljaju sadraj polja na tokene


Primer sadraja: full-text lucene.apache.org
StandardTokenizer
full

text

lucene.apache.org

WhitespaceTokenizer
full-text

lucene.apache.org

LetterTokenizer
full

text

lucene

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

apache

org

Apache Lucene biblioteka i alati

16 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Token lteri

LowerCaseFilter  pretvara u mala slova


StopFilter  izbacuje stop rei
ASCIIFoldingFilter (bivi ISOLatin1AccentFilter)  uklanja
akcente sa slova
PorterStemFilter  radi Porter stemming
SnowballFilter  drugi nain za stemming
SynonymTokenFilter  dodaje sinonime u indeks
...

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

17 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Analizatori
Kombinuju tokenizator i ltere
SimpleAnalyzer
LetterTokenizer LowerCaseFilter

StandardAnalyzer
StandardTokenizer StandardFilter LowerCaseFilter
StopFilter

CzechAnalyzer
DutchAnalyzer
GermanAnalyzer
GreekAnalyzer
RussianAnalyzer
...

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

18 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Analizatori
Kombinuju tokenizator i ltere
SimpleAnalyzer
LetterTokenizer LowerCaseFilter

StandardAnalyzer
StandardTokenizer StandardFilter LowerCaseFilter
StopFilter

CzechAnalyzer
DutchAnalyzer
GermanAnalyzer
GreekAnalyzer
RussianAnalyzer
...
SerbianAnalyzer ???
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

18 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

SerbianAnalyzer

Koje funkcije nam trebaju?


ravnopravan tretman latinice i irilice  upiti pronalaze tekst u
oba pisma
mogunost unosa upita bez akcenata 
cevapcici evapii
redukciju na koren rei cemo sada zanemariti

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

19 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

SerbianAnalyzer

Koje funkcije nam trebaju?


ravnopravan tretman latinice i irilice  upiti pronalaze tekst u
oba pisma
mogunost unosa upita bez akcenata 
cevapcici evapii
redukciju na koren rei cemo sada zanemariti

Ideje ?

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

19 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Rangiranje dokumenata

Koristi se kombinacija vektorskog i Bulovog modela


prvo se pomou Bulovog modela izdvoje dokumenti koje treba
dalje rangirati
ima i fuzzy proirenja

Detalji - link

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

20 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Rangiranje dokumenata
Funkcija za ocenjivanje:

score(q, d) =
tf (t d)idf (t)boost(t)norm(t, d)

coord(q, d)norm(q)
tq

coord(q, d)  koordinacioni faktor, srazmeran broju pronaenih


termova u dokumentu (search time)
norm(q)  normalizacioni faktor koji ocene iz razliitih upita
ini uporedivim (search time)
tf (t)  frekvencija terma t u dokumentu d (index time)
idf (t)  inverzna frekvencija dokumenta za term t (index time)
boost(t)  faktor poveanja vanosti terma t (search time)
norm(t, d)  ukljuuje boost za dokument i polje, i duinu
polja (index time)
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

21 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Kastomizacija

Analyzer

- kastomizacija pretprocesiranja teksta

- ne odnosi se na normalizaciju tokena, suavanje


mogueg skupa odgovora, pretrauje se odreena grupa
dokumenata koji su dobijeni kao prethodni rezultat ili koji su
dozvoljeni odreenoj grupi korisnika (performanse mogu na
ovaj nain da se poprave)
Filter

- nain sortiranja drugaiji od sortiranja po relevantnosti,


na primer po nekom polju (godina, datum, itd.)
Sort

- dodatna obrada odgovora na upitu, moe da ukljui


sortiranje odgovora, ltriranje pa ak i da redenie score
algoritam)
Collector

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

22 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Luke
Swing aplikacija za rad sa Lucene indeks fajlovima koji su
kreirani iz neke aplikacije
Koristi se prilikom razvoja aplikacija koje koriste Lucene
biblioteku
Lista mogunosti
Pregled indeksiranih zapisa po rednom broju dokumenta ili po
nekom termu
Prikaz kompletnog dokumenta (Lucene Document) i kopiranje
u clipboard
Izvravanje upita i pregled rezultata, moe se ukljuiti i
odgovarajui Analyzer
Brisanje i izmena dokumenta, odnosno njegovih polja
Optimizacija indeksa
...
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

23 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Solr
Platforma za pretraivanje koja se deploy -uje u neki veb server
(Jetty, Tomcat,...)
Open source, pisana u Javi
Bazirana na Lucene biblioteci, ali je gotova aplikacija
Kastomizuje se putem XML fajlova, ali ima i otvorenu
arhitekturu tako da ju je mogue i proiriti ako za to ima
potrebe
Ima REST HTTP/XML i JSON API pa joj se moe pristupati i
iz aplikacija koje nisu pisane u Javi (SolrJ, SolrNet)
Lista mogunosti
Pretraivanje
Indeksiranje
Highlight rezultata
Rich dokumenti (PDF, Word, etc.) i geoprostorne pretrage
Dinamiko klasterovanje
Integracija za bazom
...

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

24 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Nutch
Kongurabilni veb

crawler

Open source, pisano u Javi


Otvorena arhitektura
Preuzeti podaci se mogu skladititi pomou Apache Gora
-a za skladitenje velike koliine podataka

framework

Ekstrahovanje teksta iz dokumenta se moe vriti pomou


Apache Tika alata
Indeksiranje ekstrahovanih tekstova iz dokumenata se moe
vriti pomou Solr platforme
Moe se pokrenuti na jednoj maini ili distribuirano u
klasteru

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

Hadoop

25 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Lucene - contributions

Pored osnovnog jezgra Lucene ima i proirenja


Highlighter
Geoprostorne pretrage
Auto-suggest and Spellchecking support - Did you mean
Analyzer

-i za razliite jezike

Framework

za testiranje

...

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

26 / 27

Koncept

Indeks

Upiti

Analiza teksta

Rezultati

Alati

Snowball

Prost jezik za obradu stringova


String paterni odluuju o toku izvravanja programa
Pogodan jezik za pisanje stemera
Postoji konvertor napisanog stemera u

Snowball

jeziku u

Lucene Analyzer

Nema za srpski jezik


Porterov stemer za engleski jezik - link

Dragan Ivanovi,dragan.ivanovic@uns.ac.rs

Apache Lucene biblioteka i alati

27 / 27

You might also like