38
Verwaltung von Dokumenten mittels Oracle InterMedia Text

Verwaltung von Dokumenten mittels Oracle InterMedia Text

Embed Size (px)

Citation preview

Page 1: Verwaltung von Dokumenten mittels Oracle InterMedia Text

Verwaltung von Dokumenten mittels Oracle InterMedia Text

Page 2: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Einführung

Text ist überall: Dokumente, Web-Seiten, Manuals, Reports, E-Mail, Präsentationen

Speziallösungen nachteilig, besser Nutzung und Erweiterung relationaler DBMSs

Bestandteil von Oracle interMedia seit Version 8i seit Version 9i Oracle Text, Bestandteil des Servers Verarbeitung strukturierter Texte: Indizieren und Suchen Volltextsuche in Dokumenten innerhalb und außerhalb

der Datenbank Dokumente in ca. 150 verschiedenen Formaten

Page 3: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Architektur

Datastore Filter Sectioner LexerIndexingEngine

Wordlist

Stoplist

O/S File System

Internet

TokensTextMarked-up Text

Documents

Oracle TextIndex

Markup

Page 4: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Datastore Objekt

Speicherung der Texte in DB, File System oder URL

Speicherungs-Optionen– Datenbank als Character-Spalte bis zu 4KB oder

LOB (Large Objekt) bis zu 2GB– File System, erreichbar vom DB-Server– Web, erreichbar über URL, Remote-Zugriff auf

andere Server via HTTP oder FTP– benutzerdefiniert: zu indizierender Text ist Output

einer PL/SQL-Prozedur Index ist immer in der Datenbank

Page 5: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Filter Objekt

Filter für mehr als 150 Dateiformate, z.B. Microsoft Office, Adobe PDF, HTML, XML

Filter-Output ist HTML eigene Filter-Module möglich mögliche Objekte

– NULL_FILTER - ASCII-Filter (purer Text, keine Filterung)– INSO_FILTER - INSO-Filter für fomatierte Dokumente– USER_FILTER - benutzerdefinierter Filter– CHARSET_FILTER - Filter zum Konvertieren von Zeichen-

sätzen

Page 6: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Sectioner Objekt

identifiziert Abschnitte (Sections) für jede Text-Einheit Section Group Types

– NULL_SECTION_GROUP: nur Sätze und Abschnitte im Text– BASIC_SECTION_GROUP: für Textteile, die Start- und

Endtags der Form <A> ... </A> haben– HTML_SECTION_GROUP: Abschnitte in HTML-Dokumenten– XML_SECTION_GROUP: Dokumente mit XML-Tags– NEWS_SECTION_GROUP: Dokumente mit Newsgroup-

Format

Beispiel:<TITLE>XML Handbook</TITLE>

erlaubt Suche zwischen Tags mittels WITHIN-Operator

Page 7: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Lexer Objekt

Aufgabe:– separiert die Ausgabe des Sectioners in Wörter oder Token– in westlichen Sprachen: Aufsplitten des Textes in

ununterbrochene Zeichenketten

Beispiel:Aha! It‘s the 5:15 train, coming here now!

Aufteilung in Wörter ohne Interpunktion o.a. Symbole

“aha it s the 5 15 train coming here now“

Entfernung von Stop-Wörtern (deren Position im Index notiert)

“aha * * * 5 15 train coming * now“

Page 8: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Lexer Preferences

verschiedene Optionen, wie Text in Token aufgebrochen wird, z.B. Join Characters“it‘s“ indiziert als “its“ oder “it‘s“

Unterstützung vieler Sprachen (westl., chinesisch) Base Letter Conversion: ‘Normalisierung‘ von Zeichen

mit Akzent– z.B. acción matcht accion und acción

Alternate Spelling:alternative Schreibweisen für Wörter mit Umlauten

– z.B. “Muenchen“ = “München“, beide als “Muenchen“ indiziert Compound Word Processing: Verarbeitung zusammen-

gesetzter Wörter

Page 9: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Indexing Engine

erzeugt invertierten Index:– Liste von Wörtern mit Liste von Dokumenten, in

denen sie vorkommen

Stoplist: Angabe von Stop-Wörtern oder -Themen

drei Typen von Indexen:– Standard für Volltext-Suchen– Catalog für E-Business Katalog– Classification für Dokument-Klassifizierung

Page 10: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Index-Typen

CONTEXT (Query-Operator CONTAINS)– für traditionelles Volltext-Retrieval in Dokumenten und

Webseiten– großer Umfang von Such-Möglichkeiten

CTXCAT (Query-Operator CATSEARCH)– Indexieren kleiner Text-Fragmente wie Gegenstand, Preis,

Beschreibung CTXRULE (Query-Operator MATCHES)

– zum Schreiben einer Dokumentklassifizierungs-Applikation– Index auf einer Tabelle von Queries, jede Query hat

Klassifikation– einzelne Dokumente können klassifiziert werden mittels

MATCHES-Operator

Page 11: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Query-Operatoren

Keyword Searching– Suche nach Schlüsselwörtern (Keywords) im Dokument– Eingabe von ein oder mehr Keywords, die die Anfrage beschreiben

Context Queries– Suche nach Wörtern in einem gegebenen Kontext– Suche nach Text, der Wörter nahe beieinander enthält

Boolesche Operationen– Kombination von Keywords mit Booleschen Operationen

Linguistische Merkmale– Fuzzy und andere Techniken für natürliche Sprachverarbeitung

Pattern Matching– Suche nach Text, die Wörter beinhalten mit einem bestimmten

String

Page 12: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Query-Operatoren im Detail

ABOUT Erhöht die Anzahl relevanter Dokumente, die von der gleichen Query zurückgeliefert werden

AND Suche nach Dokumenten, die mindestens einen Treffer für jeden der Query-Terme

Broader Term

Erweitert eine Anfrage, um einen Term einzufügen, der in einem Thesaurus als breiterer Term definiert wurde

Fuzzy Erweitert Anfragen, um Wörter einzufügen, die ähnlich wie der spezifizierte Term buchstabiert werden

HASPATH Findet alle XML-Dokumente, die einen speziellen Section Path beinhalten

Page 13: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Query-Operatoren im Detail (2)

Narrow Term

Erweitert eine Anfrage, um alle Terme einzufügen, die im Thesaurus als engere Terme / auf einer niedrigeren Stufe definiert wurden

NEAR (;) Liefert einen Score, basierend auf der Nähe von zwei oder mehr Query-Termen

NOT (~) Suche nach Dokumenten, die einen bestimmten Query-Term nicht beinhalten

OR (|) Suche nach Dokumenten, die zumindest einen der angegebenen Query-Terme beinhalten

Preferred Term (PT)

Ersetzt einen Term in einer Query mit dem bevor-zugten Term, der im Thesaurus für den Term definiert ist

Page 14: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Query-Operatoren im Detail (3)

Related Term (RT)

Erweitert eine Anfrage, um alle verwandten Terme einzufügen, die im Thesaurus definiert sind

Soundex (!)

Erweitert Anfragen, um Wörter einzufügen, die einen ähnlichen Klang haben wie andere Wörter

Stem ($) Sucht nach Termen, die dieselbe linguistische Wurzel haben wie der Anfrageterm

SYNonym Erweitert eine Anfrage, um alle Terme einzufügen, die im Thesaurus als Synonyme für den spez. Term definiert wurden

Top Term (TT)

Ersetzt einen Term in einer Anfrage mit dem Top-Term, der für diesen Term in der Hierarchie des Thesaurus definiert wurde

Page 15: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Document Services

Highlighting– Hervorhebung der Wörter im Dokument, die zu einem Query-

Treffer beigetragen haben Markup

– Fortführung des Highlighting Service: produziert Text-Version vom Dokument mit matchenden Wörtern in Markup

Themen-Extraktion– “Theme“ beschreibt, wovon das Dokument handelt– somit Suche nach Dokumenten möglich, die von einem

bestimmten Gegenstand handeln, auch wenn dieser nicht explizit erwähnt

– Theme Queries liefern eine Hitliste von Dokumenten über den angefragten Gegenstand, zusammen mit einem Score, der anzeigt, wie stark Gegenstand im Dokument reflektiert wird

Page 16: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Arbeiten mit Oracle Text

1. Definition der Text-Datenbankstruktur

2. Laden / Einfügen von Dokumenten

3. Anlegen eines Dokumentenindex

4. Stellen von Anfragen (Retrieval-Operationen)

5. Dokumentenpräsentation

Page 17: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Kurzes Beispiel

Anlegen einer Tabelle:CREATE TABLE docs(id NUMBER PRIMARY KEY, text VARCHAR2(80));

Einfügen von DatenINSERT INTO docs VALUES (1,‘erstes Dokument‘);INSERT INTO docs VALUES (2,‘zweites Dokument‘);

Anlegen eines IndexCREATE INDEX doc_index ON docs(text) INDEXTYPE IS ctxsys.context;

AnfrageSELECT id FROM docs WHERE CONTAINS (text,‘erstes‘) > 0;

Page 18: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Laden von Dokumenten

Dokumente standardmäßig in Textfeld geladen Einbinden des Dateisystems bzw. das Einbinden von

URL‘s sind möglich Varianten zum Laden von Daten

– SQL INSERT Anweisung– ctxload executable– SQL*Loader– DBMS_LOB.LOADFROMFILE() PL/SQL Prozedur zum Laden

von LOBs aus BFILEs Datentypen von Textfeldern: VARCHAR2, CLOB,

BLOB, CHAR oder BFILE Dokumentenformale: HTML, PDF, MS Word, Plain

Text

Page 19: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Indizieren von Dokumenten

VoreinstellungenDatastore Wie sind die Dokumente gespeichert?

Filter Wie können die Dokumente in puren Text umgewandelt werden?

Lexer Welche Sprache soll verwendet werden?

Wordlist Wie sollen stem und fuzzy queries erweitert werden?

Storage Wie sollen die Indextabellen gespeichert werden?

Stop List Welche Wörter und Themen sollen nicht indiziert werden?

Section Group Sind Anfragen in den Abschnitten eines Dokuments möglich, und wie werden die Dokumentenabschnitte definiert?

Page 20: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Retrieval-Operationen

Nutzung neuer struktureller Einheiten– Wörter, Sätze, Abschnitte

Neue Operationen– Boolean Search (bedingt in Oracle umgesetzt)– Ranking– Conceptual Search

Neue Anfrage- und Bearbeitungsmöglichkeiten– Einzelwortsuche– Suche von Phrasen– inhaltsbasierte Suche– Stopwort-Verarbeitung– Filtermöglichkeiten– erweiterte Suche (fuzzy Search, Synonyms,...)

Page 21: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Retrieval Beispiele

Single Word SearchSELECT SCORE(1) titleFROM news WHERE CONTAINS(text,‘oracle‘,1) > 0;

Conceptual SearchSELECT SCORE(1) titleFROM news WHERE CONTAINS(text,‘about(politics)‘,1)>0;

Phrase SearchSELECT employee_name, SCORE(1)FROM employee_databaseWHERE CONTAINS (emp.resume,‘software developer‘) > 0;

Context Search– Suche nach Text im gleichen Satz– in Oracle nicht möglich

Page 22: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Retrieval Beispiele (Forts.)

Ranking– “RANK“ existiert nicht– nur mit Umweg über SCORE(xxx) und Sortieren

bewerkstelligbar

WHERE CONTAINS (..) > 0

ORDER BY NVL(SCORE(10),0)

Page 23: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Ausführliches Beispiel

DROP TABLE quick;CREATE TABLE quick( quick_id NUMBER PRIMARY KEY, text VARCHAR2(80));INSERT INTO quick VALUES (1,‘The cat sat on the mat‘); INSERT INTO quick VALUES (2,‘The quick brown fox jumps over the lazy dog‘);INSERT INTO quick VALUES (3,‘The dog barked like a dog‘);COMMIT; SELECT * FROM quick;EXECUTE ctx_ddl.drop_preference(‘odb08_datastore‘);EXECUTE ctx_ddl.drop_preference(‘odb08_lexer‘);EXECUTE ctx_ddl.drop_preference(‘odb08_wordlist‘);EXECUTE ctx_ddl.drop_stoplist(‘odb08_stoplist‘);EXECUTE ctx_ddl.create_preference(‘odb08_datastore‘, ‘DIRECT_DATASTORE‘);EXECUTE ctx_ddl.create_preference(‘odb08_lexer‘,‘BASIC_LEXER‘);

Page 24: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Ausführliches Beispiel (2)

EXECUTE ctx_ddl.set_attribute(‘odb08_lexer‘,‘INDEX_TEXT‘,‘YES‘);EXECUTE ctx_ddl.set_attribute(‘odb08_lexer‘,‘INDEX_THEMES‘, ‘NO‘);EXECUTE ctx_ddl.create_preference(‘odb08_wordlist‘, ‘BASIC_WORDLIST‘);EXECUTE ctx_ddl.set_attribute(‘odb08_wordlist‘,‘STEMMER‘, ‘ENGLISH‘);EXECUTE ctx_ddl.create_stoplist(‘odb08_stoplist‘);EXECUTE ctx_ddl.add_stopword(‘odb08_stoplist‘,‘and‘);DROP INDEX quick_text;CREATE INDEX quick_text ON quick(text) INDEXTYPE IS ctxsys.context PARAMETERS (‘datastore odb08_datastore lexer odb08_lexer filter CTXSYS.NULL_FILTER wordlist odb08_wordlist stoplist odb08_stoplist‘);COMMIT;

Page 25: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Ausführliches Beispiel (3)

COL text FORMAT a45COL s FORMAT 999SELECT text,SCORE(42)s FROM quickWHERE CONTAINS(text,‘dog‘,42) >= 0ORDER BY s DESC;

-- TEXT S-- ------------------------------------------- ----- The dog barked like a dog 7-- The quick brown fox jumps over the lazy dog 4-- The cat sat on the mat 0

Page 26: Verwaltung von Dokumenten mittels Oracle InterMedia Text

Speichern von XML in Oracle

Page 27: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Ansätze zum Speichern von XML

komplettes XML-Dokument in einer Tabellenspalte vom Typ CLOB (“authored XML“)

Aufteilung des XML-Dokuments in Teile und Speicherung in mehreren Spalten in einer oder mehreren Tabellen (“generated XML“) – vgl. Vorlesung über „XML + Datenbanken“

Kombination beider Ansätze (hybrider Ansatz)

Page 28: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Authored XML

name document(CLOB)

Shopping Cart <Shopping Cart>

<Item sku = “1234567“>

<Desc>Fun with XML</Desc>

<Qty>1</Qty>

<Discount>10</Discount>

</Item>

(...)

</ShoppingCart>

(...) (...)

Speichern der XML-Dokumente in einer Tabellenspalte

XMLDOCS

Page 29: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Generated XML

• nicht geeignet für XML-Dokumente mit komplexer Struktur• Alternative: Speicherung der XML-Elemente in mehreren Tabellen

Speichere jedes XML-Element in einer Tabellenspalte

SHOPPING_CART

id description quantity discount

1234 Fun with XML 1 10

3942 XML in Space 4 7

(...)

Page 30: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Arbeit mit CLOBs (PL/SQL)

declare theClob CLOB; theBFile BFILE;begin insert into xmldocs(filename,document) values (‘Sample.xml‘, empty_clob()) returning document into theClob; theBFile:=BFileName(‘XMLFILES‘,‘Sample.xml‘); dbms_lob.fileOpen (theBFile); dbms_lob.loadFromFile (dest_lob=>theClob,

src=>theBFile,amount=>dbms_lob.getLength(theBFile));

dbms_lob.fileClose(theBFile); commit;end;

Speicherung von XML Files mittels DBMS_LOB Package

BFILE mit Source File assoziiert, Logical Directory Object XMLFILES vorher in Datenbank anlegen, z.B.>CREATE DIRECTORY xmlfiles as ‘c:\work‘

Page 31: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Arbeit mit CLOBs (Java)

public class ReadCLOB { ... public static void main (String args[]{ DriverManager.registerDriver(new

oracle.jdbc.driver.OracleDriver()); Connection conn = DriverManager.getConnection( “jdbc:oracle:thin:@myComp:1521:ORCL“,“xuser“,“xuser“);

PreparedStatement p = conn.prepareStatement( “select doc from xmldocs where name = ?“);p.setString(1,args[0]);ResultSet rs = p.executeQuery();CLOB theCLOB = ((OracleResultSet)rs.getCLOB(1);// process the result, store document in a file...

}}

Page 32: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Überblick interMedia Services

Eigenschaften von interMediaText– Volltext-Retrieval in der Oracle-Datenbank und

externen Dateien– Thesaurus-basierte Suche– Themenanalyse von (englischen) Dokumenten– Highlighting von Treffern (Hervorhebungen im

Dokument)

Oracle interMedia bietet Services zum Management großer Textdokumente und Multimedia-Daten, wie Bilder, Audio und Video

Page 33: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Anwendungsentwicklung mit interMedia Text

2 Benutzer-Rollen:– CTXSYS: Eigentümer der interMedia Schema-Objekte– CTXAPP: Zugriff auf die Funktionen

Retrieval- und Speicherungsfunktionen:– Konvertieren von Texten mit Filtern– Sprachspezifisches Indizieren (“Lexer“)– Stammwortbasierte (stemming) und unscharfe Anfragen (fuzzy

logic) mittels Wordlist– Speicherung von Index-Tabellen– Anlegen von Stop-Word-Listen– Definition von Search Sections durch Section Groups

Setzen von Preferences

Page 34: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Text Retrieval mit interMedia Text

SQL-Erweiterungen für Text-Retrieval contains Operator in der where-Klausel einer

Anfrage: Suche nach Wort-Übereinstimmungen in einem Dokument

score- Operator: berechnet Relevanz eines Treffers (in einem Bereich 1..100)

within-Klausel: beschränkt die Anfrage auf Abschnitte (Sections) eines Dokuments– wichtig bei XML Sections

übliche logische SQL-Operatoren: and, or, not

Page 35: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Indizieren XML mit interMedia Text

Voraussetzung für tag-basierte Queries: Index auf den Anfragespalten

in SQL: CREATE INDEX erweitern um Klausel INDEXTYPE IS ctxsys.context

– erlaubt contains in where-Klausel Sectioner: Sammlung von XML-Tags, die indiziert

werden sollen– repräsentiert durch section group im CREATE INDEX-

Befehl / PARAMETERS Klausel– erlauben inhaltsbasiertes Retrieval, beschränkt auf spezifische

XML-Tags vordefinierte (für jedes Tag) vs. benutzerdefinierte

Sectioner

Page 36: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Beispiel: Arbeit mit interMedia Text (1)

create table ins_claim(id number (7) primary key, when date, doc clob);

Speicherung von XML-Dokumenten einer Versicherungsgesellschaft

Spalte doc ist indiziert mit auto_section_group:

create index doc_ix on ins_claim(doc)indextype is ctxsys.contextparameters (‘section group ctxsys.auto_section_group‘);

Page 37: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Beispiel: Arbeit mit interMedia Text (2)

The insured‘s <VEHICLE>car</VEHICLE>broke through the guard rail and plummeted into a ravine. The cause was determined to be <CAUSE>faulty brakes</CAUSE> Amazingly there were no casualties.

Beispiel-Dokument in der Spalte doc:

XML Section <cause> kann abgefragt werden:

select id, whenfrom ins_claimwhere contains (doc,‘brakes within cause‘) > 0;

ID WHEN DOC------- ------ -------1 12-OCT-00 The insured‘s <VEHICLE>car...

Page 38: Verwaltung von Dokumenten mittels Oracle InterMedia Text

© Prof. T. Kudraß, HTWK Leipzig

Beispiel: Arbeit mit interMedia Text (3)

ctx_ddl.create_section_group(‘my_section‘, ‘XML_SECTION_GROUP‘);

ctx_ddl.add_zone_section(‘my_section‘,‘cause‘,‘Cause‘);...ctx_ddl.add_attr_section(‘my_section‘,‘make‘,‘Make@Vehicle‘);...create index my_doc_ix on ins_claim(doc)indextype is ctxsys.contextparameters(‘section group my_section‘);

Mögliche Abfrage ist Suche nach Attributwerten: ... where contains (doc, ‘Audi within Make@Vehicle‘)Findet: <Vehicle Make=“Audi“>

section name tag name

Alternative zu vordefiniertem Auto-Sectioner:Definition eines eigenen Sectioners und Verwendung im Index