Architecture andimplementation of  Apache Lucene Kolloquium zur Masterarbeit      Josiane Gamgo       November 2010
Agenda      Motivation      Apache Lucene      Konzepte      Überblick über die Komponenten      Lucene Dokument      Indi...
Motivation Bedarf an einer effizienten Suchmaschine für Kunden Mehr Wissen über Lucene Mangel an wissenschaftlicher Arbeit...
Apache Lucene  Erfunden 1998 von Doug Cutting  2001 von Apache von Sourceforge übernommen und           wird bis heute “Ap...
Konzepte    Lucene-Dokument    Analyzer    Indizierung    QueryParser    Indexsuche16.11.10              5
Überblick über die Komponenten16.11.10                         6
Lucene Dokument:           Architektur Übersicht16.11.10          Lucene Dokument   7
Feld: Eigenschaften16.11.10      Lucene Dokument   8
Boost factor  Gibt mehr Bedeutung zu einem Feld oder einer  Abfrage           fcal.setBoost((float) 0.75);           q.set...
Daten Struktur: Beispiel16.11.10      Lucene Dokument   10
Erstellung eines Lucene-Dokuments      Das DocumentHandler Interface      Ein Dokumenten Parser. Z.B. : PDFBOx, SAX      E...
Implementierung des           DocumentHandlers interface16.11.10             Lucene Dokument    12
Implementierung des           DocumentHandlers Interface           public class PdfHandler implements DocumentHandler{    ...
Indizierung: Komponenten                    Übersicht16.11.10                              14
Analyzer: Die Strategie des                  IndexWriters16.11.10              Indizierung        15
Analyzer: Die Strategie des                  IndexWriters16.11.10              Indizierung        16
TokenStream decorator pattern16.11.10      Indizierung       17
Tokenizer16.11.10    Indizierung   18
Tokenizer: Beispiel16.11.10        Indizierung   19
TokenFilter16.11.10      Indizierung   20
TokenFilter Beispiel: PorterStemFilter                        (condition)S1-> S2                        Condition =       ...
Erstellung eines Index      Beispiel: Erstellung eines Index für zwei pdf      Dateien:16.11.10                   Indizier...
Erstellung eines Index                                                        terms(sorted)   DocIds          Extracted an...
Erstellung eines Index       Terms Dictionary   Posting lists                                             Terms Dictionary...
Indizierungsalgorithmen: IR Versus              Lucene       Indizierungsalgorithmen in Information Retrieval(IR)         ...
Lucene Indizierungsalgorithmus           Quelle:http://lucene.sourceforge.net/talks/pisa16.11.10                          ...
Lucene Indizierungsalgorithmus16.11.10       Indizierung       27
Index Optimierung  Lucene benutzte Puffer kontrollieren:           MergeFactor           minMergeDocs           maxMergeDo...
Index Datentypen16.11.10     Indizierung   29
Indexsuche: Komponenten16.11.10                  30
Lucene Abfrage Sprache              (Query Language)  Hat eine Grammatik:      Query ::=(clause)*      Clause ::=[“+”,”-”]...
Lucene Query:           Beispiel „web AND search“16.11.10             Index Suche       32
Benutzung der Index für Die Suche16.11.10      Index Suche       33
Index Search Algorithmus           Quelle: http://lucene.sourceforge.net/papers/riao97.ps16.11.10                         ...
Lucene Retrieval Modell   Ist eine Kombination von Boolean Model und   Vector space model       Boolean Model: Beispiel qu...
Lucene Retrieval Modell    Vector space model           Erfunden 1945 by Gerard Salton           Prinzip: Gegeben sei ein ...
Begriff Gewichtung: tfij - idfi   Die Begriffe, die als Such Ergebnisse dargestellt werden,   sollten höhere Begriff frequ...
Lucene Formel zur Berechnung          der Such Ergebnisse   Coord(q,d)= tfiq, für ein Begriff I in then query q   queryNor...
Case Study: Solr   Ein Open source enterprise search server   Basiert auf Lucene   Komponenten:       SolrDocument       S...
Case Study: Solr    Quelle: http://www.typo3-solr.com/en/what-is-solr/16.11.10                                            ...
Danke für Ihre Aufmerksamkeit !16.11.10                                     41
Upcoming SlideShare
Loading in …5
×

Architecture and implementation of Apache Lucene

1,588 views

Published on

Thesis defense.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,588
On SlideShare
0
From Embeds
0
Number of Embeds
37
Actions
Shares
0
Downloads
28
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Architecture and implementation of Apache Lucene

  1. 1. Architecture andimplementation of Apache Lucene Kolloquium zur Masterarbeit Josiane Gamgo November 2010
  2. 2. Agenda Motivation Apache Lucene Konzepte Überblick über die Komponenten Lucene Dokument Indizierung Index-Suche Case study: Solr16.11.10 2
  3. 3. Motivation Bedarf an einer effizienten Suchmaschine für Kunden Mehr Wissen über Lucene Mangel an wissenschaftlicher Arbeit über die interne Struktur von Apache Lucene16.11.10 3
  4. 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 Retrieval16.11.10 4
  5. 5. Konzepte Lucene-Dokument Analyzer Indizierung QueryParser Indexsuche16.11.10 5
  6. 6. Überblick über die Komponenten16.11.10 6
  7. 7. Lucene Dokument: Architektur Übersicht16.11.10 Lucene Dokument 7
  8. 8. Feld: Eigenschaften16.11.10 Lucene Dokument 8
  9. 9. Boost factor Gibt mehr Bedeutung zu einem Feld oder einer Abfrage fcal.setBoost((float) 0.75); q.setBoost((float)0.5);16.11.10 Lucene Dokument 9
  10. 10. Daten Struktur: Beispiel16.11.10 Lucene Dokument 10
  11. 11. Erstellung eines Lucene-Dokuments Das DocumentHandler Interface Ein Dokumenten Parser. Z.B. : PDFBOx, SAX Eine Implementierung des DocumentHandlers Interface16.11.10 Lucene Dokument 11
  12. 12. Implementierung des DocumentHandlers interface16.11.10 Lucene Dokument 12
  13. 13. Implementierung des DocumentHandlers Interface public class PdfHandler implements DocumentHandler{ public Document getDocument(File originalFile) throws DocumentHandlerException { try { pdfdoc = PDDocument.load(originalFile);//load original document into a PDDocument 1 ... PDFTextStripper stripper = new PDFTextStripper(); StringWriter writer = new StringWriter(); 2 stripper.writeText(pdfdoc, writer); Calendar cal = metadata.getCreationDate(); PdfContents =writer.getBuffer().toString(); PDDocumentInformation metadata = pdfdoc.getDocumentInformation(); 3 Calendar cal = metadata.getCreationDate(); ... fcal = new Field("date of creation",String.valueOf(cal.get(Calendar.DAY_OF_WEEK)),Field.Store.YES,Field.Index.ANALYZED); 4 fcal.setOmitNorms(true); fcal.setBoost((float) 0.75); ... doc.add(new Field("contents",PdfContents,Field.Store.NO,Field.Index.ANALYZED,Field.TermVector.YES)); doc.add(new Field("path",originalFile.getAbsolutePath(),Field.Store.YES,Field.Index.ANALYZED)); doc.add(new Field("filename",originalFile.getName(),Field.Store.YES,Field.Index.ANALYZED)); doc.add(fcal); ...16.11.10 Lucene Dokument 13
  14. 14. Indizierung: Komponenten Übersicht16.11.10 14
  15. 15. Analyzer: Die Strategie des IndexWriters16.11.10 Indizierung 15
  16. 16. Analyzer: Die Strategie des IndexWriters16.11.10 Indizierung 16
  17. 17. TokenStream decorator pattern16.11.10 Indizierung 17
  18. 18. Tokenizer16.11.10 Indizierung 18
  19. 19. Tokenizer: Beispiel16.11.10 Indizierung 19
  20. 20. TokenFilter16.11.10 Indizierung 20
  21. 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 → inform16.11.10 Indizierung 21
  22. 22. Erstellung eines Index Beispiel: Erstellung eines Index für zwei pdf Dateien:16.11.10 Indizierung 22
  23. 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 216.11.10 Indizierung 23
  24. 24. Erstellung eines Index Terms Dictionary Posting lists Terms Dictionary Posting lists (term,tfq) ( stemmed terms,tfq)all 1 1 all 1 1assumption 1 1 assumpt 1 1engines 1 2 engin 1 2information 2 1,2 inform 2 1,2literature 1 1 literatur 1 1motivated 1 1need 1 1 motiv 1 1search 2 2 need 1 1searches 1 1 search 3 1,2shares 1 1 share 1 1spider 1 2 spider 2 2spiders 1 2 us 1 2uses 1 2 web 2 1,2web 2 1,2 16.11.10 Indizierung 24
  25. 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
  26. 26. Lucene Indizierungsalgorithmus Quelle:http://lucene.sourceforge.net/talks/pisa16.11.10 Indizierung 26
  27. 27. Lucene Indizierungsalgorithmus16.11.10 Indizierung 27
  28. 28. Index Optimierung Lucene benutzte Puffer kontrollieren: MergeFactor minMergeDocs maxMergeDocs Zuerst den Index in den Arbeitspeicher speichern IndexWriter.optimize() IndexWriter.MaxFieldLength16.11.10 Indizierung 28
  29. 29. Index Datentypen16.11.10 Indizierung 29
  30. 30. Indexsuche: Komponenten16.11.10 30
  31. 31. Lucene Abfrage Sprache (Query Language) Hat eine Grammatik: Query ::=(clause)* Clause ::=[“+”,”-”][<TERM>”:”](<TERM>| “(“Query”)”) Definiert die Syntax eines Lucene Query Token16.11.10 Index Suche 31
  32. 32. Lucene Query: Beispiel „web AND search“16.11.10 Index Suche 32
  33. 33. Benutzung der Index für Die Suche16.11.10 Index Suche 33
  34. 34. Index Search Algorithmus Quelle: http://lucene.sourceforge.net/papers/riao97.ps16.11.10 Index Suche 34
  35. 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. 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. 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 idfi16.11.10 Index Suche 37
  38. 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 Field16.11.10 Index Suche 38
  39. 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. 40. Case Study: Solr Quelle: http://www.typo3-solr.com/en/what-is-solr/16.11.10 40
  41. 41. Danke für Ihre Aufmerksamkeit !16.11.10 41

×