Vom dokument parser zum lucene index

Preview:

DESCRIPTION

 

Citation preview

Vom Dokument-Parser zum Lucene Index.

Josiane Gamgo

Maerz 2009

Vorbereitung der Index-Suche 2

Agenda

Indizierungsprozess: Übersicht

Dokument-Parser

Das Lucene Dokument

Indizierungstechniken

Die Lucene Index Datenstruktur

Vorbereitung der Index-Suche 3

Indizierungsprozess: Übersicht

ParserInput Lucene Dokument

Analyzer

Inverted IndexIndex

Vorbereitung der Index-Suche 4

Dokument-Parser

Arbeitsweise

Dokumentenhandler

Beispiel einen PDF Parser: PDFBOX

Adaptierbarkeit

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

Vorbereitung der Index-Suche 6

Arbeitsweise

InputStreamInterface DocumentHandler

Lucene Dokument

ParserInterface DocumentHandler

extends

Lucene Dokument

Inside the Documenthandler

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;

}

ParseDocument(InputStream)

PDF Dokument

MemorycosDoccosDoc ....

DecryptDocument(cosDoc)

PDFTextstripperPDFTextstripper

Text

Metadata

Document

LucenePDFDocument

Vorbereitung der Index-Suche 9

Adaptierbarkeit

classHandlercollector

ParserGrammatik

Class Lparser extends Handlercollector{}

Vorbereitung der Index-Suche 10

Das Lucene Dokument

Aufbau

Datenstruktur

Index Erstellung mit mapReduce

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.

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

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

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

Vorbereitung der Index-Suche 15

Indizierungstechniken

Was ist IR(Information Retrieval)?

Indizierungstechniken in der IR

Lucene Indizierungstechnik

Vergleich

Vorbereitung der Index-Suche 16

Was ist IR?

Verlorene Informationen wiedergewinnen

Bedürfnis nach Informationen innerhalb von

großen Datenmenge erfüllen.

Vorbereitung der Index-Suche 17

Indizierungstechniken in der IR

Signatur Dateien

Suffix-Arrays

Invertierte Listen

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

Vorbereitung der Index-Suche 19

Suffix-Arrays

Suffixe eines Dokument speichern

Representation der Suffixe in eine Baum Struktur, in Lexicographischer Reihenfolge

Suche nach ”ra”

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

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

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)

Vorbereitung der Index-Suche 23

Die Lucene Index Datenstruktur

Lucene Index

Dokument

Feld

...

Term

...

...

...

Feld

.

...

Dokument

...

Vielen Dank für Ihre Aufmerksamkeit!

Recommended