Vom Dokument-Parser
  zum Lucene Index.

    Josiane Gamgo


     Maerz 2009
Agenda

   Indizierungsprozess: Übersicht
   Dokument-Parser
   Das Lucene Dokument
   Indizierungstechniken
   Die Lucene Index Datenstruktur


                    Vorbereitung der Index-Suche   2
Indizierungsprozess: Übersicht


Input   Parser                 Lucene                  Analyzer
                              Dokument




            Index                               Inverted Index




                 Vorbereitung der Index-Suche                     3
Dokument-Parser

   Arbeitsweise
   Dokumentenhandler
   Beispiel einen PDF Parser: PDFBOX
   Adaptierbarkeit




                      Vorbereitung der Index-Suche   4
Arbeitsweise

   Interface DocumentHandler implementieren
   Neue Instanz der Parser erzeugen
   Neue Instanz von org.apache.lucene.document.Document
   Zu parsende Dokument öffnen
   Attribute und Werte zu Lucene Dokument einfügen
   Geparste Dokument schließen



                       Vorbereitung der Index-Suche   5
Arbeitsweise
                    extends
                                Interface
 Parser                                                                 Lucene Dokument
                                DocumentHandler


       Inside
the Documenthandler




                                                             Lucene Dokument
                          Interface
      InputStream         DocumentHandler




                              Vorbereitung der Index-Suche                          6
Dokumentenhandler

   Die Klasse DocumentHandler()
Public class parserTyp implements DocumentHandler{...}
public interface DokumentHandler {
/** * Erzeugt ein Lucene Dokument aus ein InputStream * */
Document getDocument(InputStream is)
throw DocumentHandlerException;
}




                               Vorbereitung der Index-Suche   7
PDF Dokument                                 LucenePDFDocument



   ParseDocument
    (InputStream)                                 Document




cosDoc
         ....   cosDoc
                         Memory
                                                      Text


 DecryptDocument
                           PDFTextstripper
                            PDFTextstripper
     (cosDoc)

                                                    Metadata
Adaptierbarkeit

    class                                           Parser
Handlercollector                                  Grammatik




                        Class Lparser
                   extends Handlercollector{}




                   Vorbereitung der Index-Suche               9
Das Lucene Dokument

   Aufbau
   Datenstruktur
   Index Erstellung mit mapReduce




                    Vorbereitung der Index-Suche   10
Aufbau
   Zu jedem zu parsende Datei eine
    org.apache.lucene.document.Document                Instanz.
private Document doc;


   Mit DokumentHandler: Text Inhalte extrahieren und
    Instanz von Lucene Dokument erstellen.
   Beispiel: Erstellung von Lucene Dokument mit SAX.



                        Vorbereitung der Index-Suche              11
Datenstruktur

   LuceneHTMLDokument

              Factory-Methode                  indexed   tokenized   stored
           Field.Text(String, String)             x          x          x
          Field.Text(String, Reader)                x        x
         Field.KeyWord(String,date)                 x                  x
        Field.UnIndexed(String, String)                                x
         Field.Unstored(String,String)              x        x




                          Vorbereitung der Index-Suche                        12
Datenstruktur

   LucenePDFDocument
     Field     indexed tokenized stored                        Bemerkung
      Url                           x                     Url lokal oder im Netz
    modified      x                                      für Indexupdate wichtig
      uid         x                                    für inkrementelle Indizierung
    content       x           x                           Der eigentliche Inhalt
    Summary                                  x           Die ersten 500 Zeichen




                        Vorbereitung der Index-Suche                               13
Index Erstellung mit MapReduce
                           master

               A-f       G-p        Q-z                  Inverter      A-f
      Parser

               A-f       G-p        Q-z
      Parser                                             Inverter
                                                                       G-p
                            ...
...    ...

                                                         Inverter
      Parser   A-f       G-p        Q-z                                Q-z

      Map
      Phase                                             Reduce Phase
                     Segment Files



                                                                       Disk

                         Vorbereitung der Index-Suche                         14
Indizierungstechniken
   Was ist IR(Information Retrieval)?
   Indizierungstechniken in der IR
   Lucene Indizierungstechnik
   Vergleich




                    Vorbereitung der Index-Suche   15
Was ist IR?

   Verlorene Informationen wiedergewinnen
   Bedürfnis nach Informationen innerhalb von
    großen Datenmenge erfüllen.




                   Vorbereitung der Index-Suche   16
Indizierungstechniken in der IR

   Signatur Dateien
   Suffix-Arrays
   Invertierte Listen




                         Vorbereitung der Index-Suche   17
Signatur Dateien

   Zerlegung der                           block1              block2
                                   Heute ist Montag    Rosenmontag in Bayern
    Dokumente in
    ungefähr die gleiche
    größe.
                                           h(block1)           h(block2)
   Erstellung einer                          001                 010

    Signatur Datei mittels
    Hashfunktion.
                                   Suche nach: Montag AND Rosenmontag
   Anfrage = Boolesche                            001 + 010 = 011
    UND oder ODER
    Verknüpfung
                     Vorbereitung der Index-Suche                              18
Suffix-Arrays

   Suffixe eines
    Dokument speichern
   Representation der
    Suffixe in eine Baum
    Struktur, in
    Lexicographischer
    Reihenfolge
   Suche nach ”ra”


                    Vorbereitung der Index-Suche   19
Invertierte Listen

   Zerlegung des Dokument in Terms
   Zuordnung von Dokument Indexterm zu
    Dokument-IDs.
   Sortierung der Paare (Terms , DokumentIDs)
   Terme in Index Dateien speichern



                    Vorbereitung der Index-Suche   20
Lucene Indizierungstechnik
    Terms        Dokument Id
                                                 Terms        Frequenz   Posting List
     Der             3
  Erhöhung           3                            Der            1            3
      im             2                         Erhöhung          1            3
      im             3                             im            2            2         3
     Juli            2                            Juli           2            2         3
     Juli            3                           Neue            1            1
    Neue             1                           steigt          1            1
    steigt           1                          Umsatz           2            2         3
   Umsatz            2                       Umsatzprognose      1            1
   Umsatz            3
Umsatzprognose       1



                               Vorbereitung der Index-Suche                                 21
Vergleich


                        Invertierte Listen Signatur-Dateien Suffix-Arrays   Lucene Invertierte Index
 Boolesches Retrieval           ja                 ja              ja                 ja
Algebraisches Retrieval         ja               nein            nein                 ja
    Fuzzy Retrieval             ja               nein            nein                 ja
         Größe               O(n0.85)            O(n)            O(n)               O(n0.85)
                                  0.8
     Anfragedauer            O(n )               O(n)         O(logn)               O(n0.8)
     Kompression            sehr gut              gut             gut              sehr gut




                                       Vorbereitung der Index-Suche                               22
Die Lucene Index Datenstruktur

       Lucene Index

            Dokument
                ...

             Feld
                ...
                        Term    .
                        ...
                      ...

              Feld
                      ...


             Dokument

                ...

                  Vorbereitung der Index-Suche   23
Vielen Dank für Ihre Aufmerksamkeit!

Weitere ähnliche Inhalte

PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
Architecture and implementation of Apache Lucene
PDF
Lucene Solr talk at Java User Group Karlsruhe
PDF
E books
PPT
Lucece Indexing
PDF
Apache Solr/Lucene Internals by Anatoliy Sokolenko
PDF
Architecture and Implementation of Apache Lucene: Marter's Thesis
PDF
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
2024 Trend Updates: What Really Works In SEO & Content Marketing
Architecture and implementation of Apache Lucene
Lucene Solr talk at Java User Group Karlsruhe
E books
Lucece Indexing
Apache Solr/Lucene Internals by Anatoliy Sokolenko
Architecture and Implementation of Apache Lucene: Marter's Thesis
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
Anzeige

Vom dokument parser zum lucene index

  • 1. Vom Dokument-Parser zum Lucene Index. Josiane Gamgo Maerz 2009
  • 2. Agenda  Indizierungsprozess: Übersicht  Dokument-Parser  Das Lucene Dokument  Indizierungstechniken  Die Lucene Index Datenstruktur Vorbereitung der Index-Suche 2
  • 3. Indizierungsprozess: Übersicht Input Parser Lucene Analyzer Dokument Index Inverted Index Vorbereitung der Index-Suche 3
  • 4. Dokument-Parser  Arbeitsweise  Dokumentenhandler  Beispiel einen PDF Parser: PDFBOX  Adaptierbarkeit Vorbereitung der Index-Suche 4
  • 5. Arbeitsweise  Interface DocumentHandler implementieren  Neue Instanz der Parser erzeugen  Neue Instanz von org.apache.lucene.document.Document  Zu parsende Dokument öffnen  Attribute und Werte zu Lucene Dokument einfügen  Geparste Dokument schließen Vorbereitung der Index-Suche 5
  • 6. Arbeitsweise extends Interface Parser Lucene Dokument DocumentHandler Inside the Documenthandler Lucene Dokument Interface InputStream DocumentHandler Vorbereitung der Index-Suche 6
  • 7. Dokumentenhandler  Die Klasse DocumentHandler() Public class parserTyp implements DocumentHandler{...} public interface DokumentHandler { /** * Erzeugt ein Lucene Dokument aus ein InputStream * */ Document getDocument(InputStream is) throw DocumentHandlerException; } Vorbereitung der Index-Suche 7
  • 8. PDF Dokument LucenePDFDocument ParseDocument (InputStream) Document cosDoc .... cosDoc Memory Text DecryptDocument PDFTextstripper PDFTextstripper (cosDoc) Metadata
  • 9. Adaptierbarkeit class Parser Handlercollector Grammatik Class Lparser extends Handlercollector{} Vorbereitung der Index-Suche 9
  • 10. Das Lucene Dokument  Aufbau  Datenstruktur  Index Erstellung mit mapReduce Vorbereitung der Index-Suche 10
  • 11. Aufbau  Zu jedem zu parsende Datei eine org.apache.lucene.document.Document Instanz. private Document doc;  Mit DokumentHandler: Text Inhalte extrahieren und Instanz von Lucene Dokument erstellen.  Beispiel: Erstellung von Lucene Dokument mit SAX. Vorbereitung der Index-Suche 11
  • 12. Datenstruktur  LuceneHTMLDokument Factory-Methode indexed tokenized stored Field.Text(String, String) x x x Field.Text(String, Reader) x x Field.KeyWord(String,date) x x Field.UnIndexed(String, String) x Field.Unstored(String,String) x x Vorbereitung der Index-Suche 12
  • 13. Datenstruktur  LucenePDFDocument Field indexed tokenized stored Bemerkung Url x Url lokal oder im Netz modified x für Indexupdate wichtig uid x für inkrementelle Indizierung content x x Der eigentliche Inhalt Summary x Die ersten 500 Zeichen Vorbereitung der Index-Suche 13
  • 14. Index Erstellung mit MapReduce master A-f G-p Q-z Inverter A-f Parser A-f G-p Q-z Parser Inverter G-p ... ... ... Inverter Parser A-f G-p Q-z Q-z Map Phase Reduce Phase Segment Files Disk Vorbereitung der Index-Suche 14
  • 15. Indizierungstechniken  Was ist IR(Information Retrieval)?  Indizierungstechniken in der IR  Lucene Indizierungstechnik  Vergleich Vorbereitung der Index-Suche 15
  • 16. Was ist IR?  Verlorene Informationen wiedergewinnen  Bedürfnis nach Informationen innerhalb von großen Datenmenge erfüllen. Vorbereitung der Index-Suche 16
  • 17. Indizierungstechniken in der IR  Signatur Dateien  Suffix-Arrays  Invertierte Listen Vorbereitung der Index-Suche 17
  • 18. Signatur Dateien  Zerlegung der block1 block2 Heute ist Montag Rosenmontag in Bayern Dokumente in ungefähr die gleiche größe. h(block1) h(block2)  Erstellung einer 001 010 Signatur Datei mittels Hashfunktion. Suche nach: Montag AND Rosenmontag  Anfrage = Boolesche 001 + 010 = 011 UND oder ODER Verknüpfung Vorbereitung der Index-Suche 18
  • 19. Suffix-Arrays  Suffixe eines Dokument speichern  Representation der Suffixe in eine Baum Struktur, in Lexicographischer Reihenfolge  Suche nach ”ra” Vorbereitung der Index-Suche 19
  • 20. Invertierte Listen  Zerlegung des Dokument in Terms  Zuordnung von Dokument Indexterm zu Dokument-IDs.  Sortierung der Paare (Terms , DokumentIDs)  Terme in Index Dateien speichern Vorbereitung der Index-Suche 20
  • 21. Lucene Indizierungstechnik Terms Dokument Id Terms Frequenz Posting List Der 3 Erhöhung 3 Der 1 3 im 2 Erhöhung 1 3 im 3 im 2 2 3 Juli 2 Juli 2 2 3 Juli 3 Neue 1 1 Neue 1 steigt 1 1 steigt 1 Umsatz 2 2 3 Umsatz 2 Umsatzprognose 1 1 Umsatz 3 Umsatzprognose 1 Vorbereitung der Index-Suche 21
  • 22. Vergleich Invertierte Listen Signatur-Dateien Suffix-Arrays Lucene Invertierte Index Boolesches Retrieval ja ja ja ja Algebraisches Retrieval ja nein nein ja Fuzzy Retrieval ja nein nein ja Größe O(n0.85) O(n) O(n) O(n0.85) 0.8 Anfragedauer O(n ) O(n) O(logn) O(n0.8) Kompression sehr gut gut gut sehr gut Vorbereitung der Index-Suche 22
  • 23. Die Lucene Index Datenstruktur Lucene Index Dokument ... Feld ... Term . ... ... Feld ... Dokument ... Vorbereitung der Index-Suche 23
  • 24. Vielen Dank für Ihre Aufmerksamkeit!