SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
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

Ähnlich wie Vom dokument parser zum lucene index

Searchperience Indexierungspipeline
Searchperience   IndexierungspipelineSearchperience   Indexierungspipeline
Searchperience Indexierungspipeline
AOE
 
Dokumenten Clustering
Dokumenten ClusteringDokumenten Clustering
Dokumenten Clustering
Ramon Wartala
 
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen HochschulbibliothekenKickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
LydiaU
 
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenAMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
Björn Muschall
 

Ähnlich wie Vom dokument parser zum lucene index (8)

Das Solr System - Suche nicht nur auf Planet TYPO3
Das Solr System - Suche nicht nur auf Planet TYPO3Das Solr System - Suche nicht nur auf Planet TYPO3
Das Solr System - Suche nicht nur auf Planet TYPO3
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
 
SciflowWriter
SciflowWriterSciflowWriter
SciflowWriter
 
Searchperience Indexierungspipeline
Searchperience   IndexierungspipelineSearchperience   Indexierungspipeline
Searchperience Indexierungspipeline
 
Dokumenten Clustering
Dokumenten ClusteringDokumenten Clustering
Dokumenten Clustering
 
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen HochschulbibliothekenKickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
Kickoff Workshop zum Projekt amsl mit den sächsischen Hochschulbibliotheken
 
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenAMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
 
PyLucene@PyCon DE 2011
PyLucene@PyCon DE 2011PyLucene@PyCon DE 2011
PyLucene@PyCon DE 2011
 

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!