Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Architecture and implementation of Apache Lucene

1.701 visualizaciones

Publicado el

Thesis defense.

Publicado en: Tecnología
  • Sé el primero en comentar

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

×