2. Agenda
Motivation
Apache Lucene
Konzepte
Überblick über die Komponenten
Lucene Dokument
Indizierung
Index-Suche
Case study: Solr
16.11.10 2
3. Motivation
Bedarf an einer effizienten Suchmaschine
für Kunden
Mehr Wissen über Lucene
Mangel an wissenschaftlicher Arbeit über
die interne Struktur von Apache Lucene
16.11.10 3
4. Apache Lucene
Erfunden 1998 von Doug Cutting
2001 von Apache von Sourceforge übernommen und
wird bis heute “Apache Lucene” genannt
Ist eine Java-Bibliothek für die Volltextsuche
Benutzt für die Indizierung und für die Suche
Implementiert algorithmen und Modelle der Information
Retrieval
16.11.10 4
11. Erstellung eines Lucene-Dokuments
Das DocumentHandler Interface
Ein Dokumenten Parser. Z.B. : PDFBOx, SAX
Eine Implementierung des DocumentHandlers
Interface
16.11.10 Lucene Dokument 11
21. TokenFilter Beispiel: PorterStemFilter
(condition)S1-> S2
Condition =
(*V*)Y → i, ZB.
•
Z.b. Query → queri
(m>0)ational → ate
(m>1)ate →
• Z.b. Informational →
informationate → inform
16.11.10 Indizierung 21
22. Erstellung eines Index
Beispiel: Erstellung eines Index für zwei pdf
Dateien:
16.11.10 Indizierung 22
23. Erstellung eines Index
terms(sorted) DocIds
Extracted and DocIds
analyzed terms
all 1
all 1
assumption 1
literature 1
engines 2
shares 1
information 1
assumption 1
information 2
web 1
literature 1
searches 1
motivated 1
motivated 1
need 1
information 1
search 2
need 1
search 2
search 2
searches 1
engines 2
shares 1
uses 2
spider 2
spider 2
spiders 2
search 2
uses 2
spider 2
web 1
web 2
web 2
information 2
16.11.10 Indizierung 23
24. Erstellung eines Index
Terms Dictionary Posting lists
Terms Dictionary Posting lists
(term,tfq)
( stemmed terms,tfq)
all 1 1
all 1 1
assumption 1 1
assumpt 1 1
engines 1 2
engin 1 2
information 2 1,2
inform 2 1,2
literature 1 1
literatur 1 1
motivated 1 1
need 1 1 motiv 1 1
search 2 2 need 1 1
searches 1 1 search 3 1,2
shares 1 1 share 1 1
spider 1 2
spider 2 2
spiders 1 2
us 1 2
uses 1 2
web 2 1,2
web 2 1,2
16.11.10 Indizierung 24
25. Indizierungsalgorithmen: IR Versus
Lucene
Indizierungsalgorithmen in Information Retrieval(IR)
Suffix arrays
Signature Files
Inverted Files
Lucene Indizierungsalgorithmus
Basis-Algorithmus
Inkrementell-Algorithmus.
16.11.10 Indizierung 25
28. Index Optimierung
Lucene benutzte Puffer kontrollieren:
MergeFactor
minMergeDocs
maxMergeDocs
Zuerst den Index in den Arbeitspeicher
speichern
IndexWriter.optimize()
IndexWriter.MaxFieldLength
16.11.10 Indizierung 28
31. Lucene Abfrage Sprache
(Query Language)
Hat eine Grammatik:
Query ::=(clause)*
Clause ::=[“+”,”-”][<TERM>”:”](<TERM>| “(“Query”)”)
Definiert die Syntax eines Lucene Query Token
16.11.10 Index Suche 31
32. Lucene Query:
Beispiel „web AND search“
16.11.10 Index Suche 32
34. Index Search Algorithmus
Quelle: http://lucene.sourceforge.net/papers/riao97.ps
16.11.10 Index Suche 34
35. Lucene Retrieval Modell
Ist eine Kombination von Boolean Model und
Vector space model
Boolean Model: Beispiel query = “Web AND
search”
16.11.10 Index Suche 35
36. Lucene Retrieval Modell
Vector space model
Erfunden 1945 by Gerard Salton
Prinzip: Gegeben sei ein Dokument Dj, und ein
Query Q. Beide werden als Vektoren von t terms
Dargestellt. Die Ähnlichkeit zwischen den beiden
Vektoren wird berechnet. Je kleiner der Winkel
zwischen den beiden ist, desto näher ist das
Dokument von den Query. Die Ähnlichkeit ist wie
folgt berechnet:
16.11.10 Index Suche 36
37. Begriff Gewichtung: tfij - idfi
Die Begriffe, die als Such Ergebnisse dargestellt werden,
sollten höhere Begriff frequenz haben und eine geringe
frequenz in der Lucene Dokumenten Sammlung haben
Die Gewichtung eines Begriff hängt von 3 Faktoren ab: tfij ,
idfi , und die Länge des Dokuments.
Der Begriff Gewichtung in das Dokument ist das Produkt: tfij
x idfi
16.11.10 Index Suche 37
38. Lucene Formel zur Berechnung
der Such Ergebnisse
Coord(q,d)= tfiq, für ein Begriff I in then query q
queryNorm(q)= Wiq x t.getBoost()
t.getBoost() ist der Boost factor, der für den Query definiert ist
norm(t,d) enthält länge und boost für jedes Field
16.11.10 Index Suche 38
39. Case Study: Solr
Ein Open source enterprise search server
Basiert auf Lucene
Komponenten:
SolrDocument
Solr analysis
Solr QueryParser Z.B.:Query= {!func}sum(n,5)
Wesentliche Merkmale: highlighting,faceting, caching.
16.11.10 39
40. Case Study: Solr
Quelle: http://www.typo3-solr.com/en/what-is-solr/
16.11.10 40