Professional Documents
Culture Documents
Apache Lucene
Apache Lucene
Indeks
Upiti
Analiza teksta
Rezultati
Alati
2013.
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
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
2 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Lucene dokumenti
Lucene indeksira i pretrauje tekstualne dokumente
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
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
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
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
3 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Lucene indeks
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
4 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Lucene indeks
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
4 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Vrste polja
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
5 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Indeksiranje dokumenta
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
6 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
7 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
7 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
7 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
7 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
7 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
7 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
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
8 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Pretraivanje indeksa
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
9 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Pretraivanje indeksa
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
9 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Pretraivanje indeksa
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
9 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Pretraivanje indeksa
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
9 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Pretraivanje indeksa
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
9 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Pretraivanje indeksa
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
9 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Pretraivanje indeksa
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
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
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
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
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
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
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
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
and
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
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
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!
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
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!
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
12 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Modikacije terma
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
13 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Modikacije terma
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
13 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Logiki operatori
Operatori:
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
14 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Logiki operatori
Operatori:
or
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
or
apache
14 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Logiki operatori
Operatori:
or
or
apache
and
apache
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
14 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Logiki operatori
Operatori:
or
or
apache
and
apache
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
14 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Logiki operatori
Operatori:
or
or
apache
and
apache
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
not
"apache lucene"
14 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Logiki operatori
Operatori:
or
or
apache
and
apache
not
"apache lucene"
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
14 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Grupisanje
or
apache)
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
and
website
15 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Grupisanje
or
apache)
and
website
Grupisanje polja
title:(+return +"pink panther")
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
15 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Tokenizatori
text
lucene.apache.org
WhitespaceTokenizer
full-text
lucene.apache.org
LetterTokenizer
full
text
lucene
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
apache
org
16 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Token lteri
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
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
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
18 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
SerbianAnalyzer
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
19 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
SerbianAnalyzer
Ideje ?
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
19 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Rangiranje dokumenata
Detalji - link
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
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
21 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Kastomizacija
Analyzer
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
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
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
24 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Nutch
Kongurabilni veb
crawler
framework
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
Hadoop
25 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Lucene - contributions
-i za razliite jezike
Framework
za testiranje
...
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
26 / 27
Koncept
Indeks
Upiti
Analiza teksta
Rezultati
Alati
Snowball
Snowball
jeziku u
Lucene Analyzer
Dragan Ivanovi,dragan.ivanovic@uns.ac.rs
27 / 27