Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Verwaltung von Dokumenten mittels Oracle InterMedia Text.

Ähnliche Präsentationen


Präsentation zum Thema: "Verwaltung von Dokumenten mittels Oracle InterMedia Text."—  Präsentation transkript:

1 Verwaltung von Dokumenten mittels Oracle InterMedia Text

2 © 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

3 © Prof. T. Kudraß, HTWK Leipzig Architektur DatastoreFilterSectionerLexer Indexing Engine Wordlist Stoplist O/S File System Internet TokensText Marked- up Text Documents Oracle Text Index Markup

4 © 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

5 © 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

6 © 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... haben – HTML_SECTION_GROUP: Abschnitte in HTML-Dokumenten – XML_SECTION_GROUP: Dokumente mit XML-Tags – NEWS_SECTION_GROUP: Dokumente mit Newsgroup- Format Beispiel: XML Handbook erlaubt Suche zwischen Tags mittels WITHIN-Operator

7 © 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! Its 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

8 © Prof. T. Kudraß, HTWK Leipzig Lexer Preferences verschiedene Optionen, wie Text in Token aufgebrochen wird, z.B. Join Characters its indiziert als its oder its 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

9 © 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

10 © 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

11 © 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

12 © Prof. T. Kudraß, HTWK Leipzig Query-Operatoren im Detail ABOUTErhöht die Anzahl relevanter Dokumente, die von der gleichen Query zurückgeliefert werden ANDSuche 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 FuzzyErweitert Anfragen, um Wörter einzufügen, die ähnlich wie der spezifizierte Term buchstabiert werden HASPATHFindet alle XML-Dokumente, die einen speziellen Section Path beinhalten

13 © 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

14 © 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 SYNonymErweitert 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

15 © 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

16 © 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

17 © Prof. T. Kudraß, HTWK Leipzig Kurzes Beispiel Anlegen einer Tabelle: CREATE TABLE docs (id NUMBER PRIMARY KEY, text VARCHAR2(80)); Einfügen von Daten INSERT INTO docs VALUES (1,erstes Dokument); INSERT INTO docs VALUES (2,zweites Dokument); Anlegen eines Index CREATE INDEX doc_index ON docs(text) INDEXTYPE IS ctxsys.context; Anfrage SELECT id FROM docs WHERE CONTAINS (text,erstes) > 0;

18 © Prof. T. Kudraß, HTWK Leipzig Laden von Dokumenten Dokumente standardmäßig in Textfeld geladen Einbinden des Dateisystems bzw. das Einbinden von URLs 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

19 © Prof. T. Kudraß, HTWK Leipzig Indizieren von Dokumenten Voreinstellungen DatastoreWie sind die Dokumente gespeichert? FilterWie können die Dokumente in puren Text umgewandelt werden? LexerWelche Sprache soll verwendet werden? WordlistWie sollen stem und fuzzy queries erweitert werden? StorageWie sollen die Indextabellen gespeichert werden? Stop ListWelche Wörter und Themen sollen nicht indiziert werden? Section GroupSind Anfragen in den Abschnitten eines Dokuments möglich, und wie werden die Dokumentenabschnitte definiert?

20 © 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,...)

21 © Prof. T. Kudraß, HTWK Leipzig Retrieval Beispiele Single Word Search SELECT SCORE(1) title FROM news WHERE CONTAINS(text,oracle,1) > 0; Conceptual Search SELECT SCORE(1) title FROM news WHERE CONTAINS(text,about(politics),1)>0; Phrase Search SELECT employee_name, SCORE(1) FROM employee_database WHERE CONTAINS (emp.resume,software developer) > 0; Context Search – Suche nach Text im gleichen Satz – in Oracle nicht möglich

22 © 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)

23 © Prof. T. Kudraß, HTWK Leipzig Ausführliches Beispiel DROP TABLE quick; CREATE TABLE quick ( quick_idNUMBER PRIMARY KEY, textVARCHAR2(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);

24 © 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;

25 © Prof. T. Kudraß, HTWK Leipzig Ausführliches Beispiel (3) COL text FORMAT a45 COL s FORMAT 999 SELECT text,SCORE(42)s FROM quick WHERE CONTAINS(text,dog,42) >= 0 ORDER 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

26 Speichern von XML in Oracle

27 © 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)

28 © Prof. T. Kudraß, HTWK Leipzig Authored XML namedocument(CLOB) Shopping Cart Fun with XML 1 10 (...) (...) Speichern der XML-Dokumente in einer Tabellenspalte XMLDOCS

29 © 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 iddescriptionquantitydiscount 1234Fun with XML110 3942XML in Space47 (...)

30 © 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

31 © 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... }

32 © 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

33 © 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

34 © 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

35 © 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

36 © 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.context parameters (section group ctxsys.auto_section_group);

37 © Prof. T. Kudraß, HTWK Leipzig Beispiel: Arbeit mit interMedia Text (2) The insureds car broke through the guard rail and plummeted into a ravine. The cause was determined to be faulty brakes Amazingly there were no casualties. Beispiel-Dokument in der Spalte doc : XML Section kann abgefragt werden: select id, when from ins_claim where contains (doc,brakes within cause) > 0; ID WHEN DOC ------- ------ ------- 1 12-OCT-00The insureds car...

38 © 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.context parameters(section group my_section); Mögliche Abfrage ist Suche nach Attributwerten:... where contains (doc, Audi within Make@Vehicle) Findet: section nametag name Alternative zu vordefiniertem Auto-Sectioner: Definition eines eigenen Sectioners und Verwendung im Index


Herunterladen ppt "Verwaltung von Dokumenten mittels Oracle InterMedia Text."

Ähnliche Präsentationen


Google-Anzeigen