24
Vom Dokument-Parser zum Lucene Index. Josiane Gamgo Maerz 2009

Vom dokument parser zum lucene index

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Vom dokument parser zum lucene index

Vom Dokument-Parser zum Lucene Index.

Josiane Gamgo

Maerz 2009

Page 2: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 2

Agenda

Indizierungsprozess: Übersicht

Dokument-Parser

Das Lucene Dokument

Indizierungstechniken

Die Lucene Index Datenstruktur

Page 3: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 3

Indizierungsprozess: Übersicht

ParserInput Lucene Dokument

Analyzer

Inverted IndexIndex

Page 4: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 4

Dokument-Parser

Arbeitsweise

Dokumentenhandler

Beispiel einen PDF Parser: PDFBOX

Adaptierbarkeit

Page 5: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 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

Page 6: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 6

Arbeitsweise

InputStreamInterface DocumentHandler

Lucene Dokument

ParserInterface DocumentHandler

extends

Lucene Dokument

Inside the Documenthandler

Page 7: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 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;

}

Page 8: Vom dokument parser zum lucene index

ParseDocument(InputStream)

PDF Dokument

MemorycosDoccosDoc ....

DecryptDocument(cosDoc)

PDFTextstripperPDFTextstripper

Text

Metadata

Document

LucenePDFDocument

Page 9: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 9

Adaptierbarkeit

classHandlercollector

ParserGrammatik

Class Lparser extends Handlercollector{}

Page 10: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 10

Das Lucene Dokument

Aufbau

Datenstruktur

Index Erstellung mit mapReduce

Page 11: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 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.

Page 12: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 12

Datenstruktur

LuceneHTMLDokument

Factory-Methode indexed tokenized storedField.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

Page 13: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 13

Datenstruktur

LucenePDFDocument

Bemerkung

für Indexupdate wichtig

für inkrementelle Indizierung

Der eigentliche Inhalt

Die ersten 500 Zeichen

Field indexed tokenized storedUrl x Url lokal oder im Netz

modified x

uid x

content x x

Summary x

Page 14: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 14

Index Erstellung mit MapReduce

...

Parser

Parser

Parser

...

A-f G-p Q-z

A-f G-p Q-z

A-f G-p Q-z

...

InverterInverter

Inverter

Inverter

A-f

G-p

Q-z

master

...

MapPhase Segment Files Reduce Phase

Disk

Page 15: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 15

Indizierungstechniken

Was ist IR(Information Retrieval)?

Indizierungstechniken in der IR

Lucene Indizierungstechnik

Vergleich

Page 16: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 16

Was ist IR?

Verlorene Informationen wiedergewinnen

Bedürfnis nach Informationen innerhalb von

großen Datenmenge erfüllen.

Page 17: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 17

Indizierungstechniken in der IR

Signatur Dateien

Suffix-Arrays

Invertierte Listen

Page 18: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 18

Signatur Dateien

Zerlegung der Dokumente in ungefähr die gleiche größe.

Erstellung einer Signatur Datei mittels Hashfunktion.

Anfrage = Boolesche UND oder ODER Verknüpfung

block1 block2Heute ist Montag

001 010

001 + 010 = 011

Rosenmontag in Bayern

h(block1) h(block2)

Suche nach: Montag AND Rosenmontag

Page 19: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 19

Suffix-Arrays

Suffixe eines Dokument speichern

Representation der Suffixe in eine Baum Struktur, in Lexicographischer Reihenfolge

Suche nach ”ra”

Page 20: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 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

Page 21: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 21

Lucene IndizierungstechnikTermsDer 3

Erhöhung 3im 2im 3Juli 2Juli 3

Neue 1steigt 1

Umsatz 2Umsatz 3

Umsatzprognose 1

Dokument IdTerms Frequenz Posting ListDer 1 3

Erhöhung 1 3im 2 2 3Juli 2 2 3

Neue 1 1steigt 1 1

Umsatz 2 2 3Umsatzprognose 1 1

Page 22: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 22

Vergleich

Invertierte Listen Signatur-Dateien Suffix-Arrays Lucene Invertierte IndexBoolesches Retrieval ja ja ja ja

Algebraisches Retrieval ja nein nein jaja nein nein ja

GrößeAnfragedauerKompression sehr gut gut gut sehr gut

Fuzzy RetrievalO(n0.85) O(n) O(n) O(n0.85)O(n0.8) O(n) O(logn) O(n0.8)

Page 23: Vom dokument parser zum lucene index

Vorbereitung der Index-Suche 23

Die Lucene Index Datenstruktur

Lucene Index

Dokument

Feld

...

Term

...

...

...

Feld

.

...

Dokument

...

Page 24: Vom dokument parser zum lucene index

Vielen Dank für Ihre Aufmerksamkeit!