DOAG SIG interMedia Mannheim, 13.11.2001 Barbara Steinhanses Business Development Manger interMedia,...

Preview:

Citation preview

DOAG SIG interMedia

Mannheim, 13.11.2001

Barbara SteinhansesBusiness Development MangerinterMedia, Text und LiteBusiness Unit - Application ServerOracle Deutschland GmbH

Oracle TEXTNew Features

Agenda

Oracle TEXT - IndextypenCONTEXT, CTXCAT, CTXRULE

XML - Suchmöglichkeiten

und mehr ...

Der Context Index

Oracle8i Release 1 (8.1.5)

Überblick - CONTEXT

Zielsetzung:für die Indizierung auch sehr grosser Dokumentenmengen

- formatiert oder unformatiert- Speicherung in der Datenbank oder Extern

sehr umfangreiche Volltextrecherche-Funktionalität contains Operator Asynchrone Indexpflege Datastore Präferenz für besondere und komplexe Anforderungen

Überblick - CONTEXT Integration in eine Vielzahl von Oracle Produkten:

Oracle PortalOracle IFSOracle UltraSearchOracle Applications

und Grundlage einer Vielzahl von Partneranwendungen:

Pirobase / Pironet DC4 / Digital Collections@DAM / PictureSafe DMS / QuarkNextGen / Multicom MediasurfaceArtesia BulldogPinetree RittershausSailLabs NuGenesis … und viele andere

Und natürlich einer Vielzahl von Endkunden-Anwendungen:Spiegel, ASV, Agrevo-Aventis, Bayer Leverkusen, AOK, Sat1, Kirch, …..

Überblick - CONTEXT

Zulässige Datentypen für die TextSpalte: varchar2, char, long, (long raw), clob, blob, bfile, xmltype

zulässige Parameter bei der CONTEXT-Indexerstellung:– LEXER - WORDLIST– DATASTORE - FILTER– SECTION GROUP - MEMORY– STOPLIST - STORAGE

zulässige Präferenzen und Sonderspalten :Multi-Stop List und Multi-LexerSprache, Format und Characterset Spalten

Überblick - CONTEXT

• Exakte Wort/PhrasensucheCase-sentive SucheBaseletter Indizierung (z.B. Französisch, Spanisch, ...)Alternative Schreibweisen (Deutsch, Dänisch, Schwedisch)

• Logische Kombinationen “and”, “or”, “not”, ”equivalence”

• Wildcard-Suche • Erweiterungen :

Fuzzy matching (unterschiedliche Sprachen)Soundex Kompositasuche (Deutsch und Niederländisch)

• Multilinguale Stammsuche • Spanisch, Französisch, Deutsch, Niederländisch,

Italienisch, Englisch

• Near - Operatormit Distanzangabe und Reihenfolge

• Suche in Sektionen, Sätzen und Paragraphen• Score-bezogene Funktionen

accumulate, minus, weight• Operationen auf Ergebnislisten:

threshold• ISO 2788 konformer Thesaurus• Synonyme• Themensuche (für Englisch + Französisch verfügbar)• Unterstützung asiatischer Sprachen

Überblick - CONTEXT

CREATE INDEX text_index ON articles(text) INDEXTYPE is context;

Indizierung

Volltextsuche

SELECT pubdate, author, titleFROM articlesWHERE pubdate BETWEEN ‘01-APR-98’ AND ‘10-APR-98’AND CONTAINS (text,‘Oracle AND ABOUT (Internet)’) > 0

Themensuche

strukturiertAbfrage

Oracle interMedia Der Text Index

DIGAS

Der CTXCAT Index

Oracle8i Release 3 (8.1.7) Oracle9i Text Release 1 (9.0.1)

Überblick - CTXCAT

Zielsetzung:für die Indizierung kleiner Text-Fragmente ( ca. 5 Worte)

ggfs. mit zusätzlichen strukturierten Feldernund hohe Anforderungen an die Aktualität des Indexes

Einfache Volltextrecherche Eigene Abfragesyntax Synchrone Indexpflege Index_Sets

für die zusätzliche Indizierung von date, number Spalten

Überblick - CTXCAT Zulässige Datentypen für die TextSpalte:

varchar2, char

zulässige Parameter bei der CTXCAT-Indexerstellung:– INDEX SET– LEXER– MEMORY– STOPLIST– STORAGE– WORDLIST

z.Zt. nicht zulässige Parameter, Präferenzen und Sonderspalten :Datastore, Filter oder Section GroupMulti-Stop List und Multi-LexerSprache, Format und Characterset Spalten

Überblick - CTXCAT

z.Zt. Keine Unterstützung von :

– Document Services highlighting, markup, themes, gists

– Query Services explain, query feedback, browse words (Support hierfür ist in einem späteren Release vorgesehen.)

– Theme Indexing

Japanische Sprachunterstützung:Index-Erstellung unter Verwendung von Prefix-Indizierung

CONTEXT vs. CTXCATFunktionalität

CONTEXT CTXCATIndexpflege asynchron

CTX_DDL.sync_indexsynchron als Teil der Transaktion auf der Basistabelle

Operator CONTAINS CATSEARCH

Abfragesprache

Sehr umfangreich: Boolesche Operatoren, Phrasen-suche, Themensuche, Ähnlich-keitssuche, phonetische Suche, Kompositasuche, Wildcard + Doppel-Trunkierung, Prefix ...

Begrenzt: Phrasensuche, Boolesche Operatorenkeine Wildcard-Suche in 8.1.7 eingeschränkt in 9.0.1

CONTEXT vs. CTXCATAbfrage-Operatoren

AND, OR, AND-NOT, PHRASE

accum, within, fuzzy, stem, wildcard, thesaurus, near, etc.

Funktionalität

Abfrage-Syntax

CTXCATCONTEXT

A & BA | BA ~ BA B(A B) & C (A & B) | C

A B A | B +A -B "A B" "A B" C (A B) | C

CTXCAT - Beispiel

CREATE TABLE EMP(

EMPNO number(4) NOT NULL, ENAME varchar2(10), HIREDATE date,

skills varchar2(100));

INSERT INTO EMP VALUES

(7369, 'SMITH', TO_DATE('17-DEC-1980', 'DD-MON-YYYY'), ‘ intermedia, Text, Oracle Lite ');

commit;

CTXCAT - Beispiel

CREATE INDEX emp_skills ON emp(skills)

INDEXTYPE IS CTXSYS.CTXCAT PARAMETERS ('lexer ctxsys.basic_lexer

stoplist ctxsys.default_stoplist memory 10m');

CTXCAT - Beispiel

select ename, skills from empwhere catsearch (skills,' “oracle lite“ ' , NULL ) > 0;

ENAME SKILL---------- -------------------------SMITH INTERMEDIA, TEXT, ORACLE LITE

CTXCAT - Beispiel

Erhöhung der Performance bei gemischten Abfragen(d.h. in Kombination mit einem CTXCAT-Index

Sub-Indexes können auf eine oder mehrere strukturierte Spalten angelegt werden

vorherige Analyse der “typischen” Abfragen der Anwendung ist notwendig( Sub-Indexes sind den B-Tree Indexes ähnlich )

CTXCAT - Index Set

CTXCATGemische Abfragen mit

Index SetsErstellung des Index_Sets: exec ctx_ddl.create_index_set('emp_skills');

/* sub-index with hiredate */exec ctx_ddl.add_index('emp_skills','hiredate');

Erstellung des kombinierten Indexes: CREATE INDEX emp_skills ON emp(skills) INDEXTYPE IS CTXSYS.CTXCAT

PARAMETERS ('index set emp_skills');

Der CTXRULE Index

Oracle9i Text Release 1 (9.0.1)

Überblick - CTXRULE

Zielsetzung:für die Erstellung von Volltextsuch-basierten Routing-Systemen z.B. Push- Dienste oder eine query-basierte Dokumenten-Klassifizierung, etc.

Neuer Indextyp - verfügbar ab der Version 9.0.1

Klassifizierungsregeln auf der Grundlage von TEXT Queries Indiziert werden die, in einer Tabelle, gespeicherten Queries

Klassifiziert Dokumente nach dem Inhalt (anhand der Query), z.B. nach Ressorts wie Sport, Politik, Wirtschaft, …

MATCHES Operator weist die Dokumente anhand der definierten Regeln zu

für eine spätere Version geplant:Verschachtelung der Klassifikationsebenen, z.B.

– Musik klassische Musik moderne Musik

Überblick - CTXRULE

1. Anlegen einer Tabelle, in der die Regeln für die Dokumenten-

Klassifizierung gespeichert werden 2. Erstellen der Regeln / Queries 3. Anlegen des CXTRULE Indexes 4. Verwendung des MATCHES Operators,

um die Dokumente zu klassifizieren

Vorgehensweise: Dokumenten-Klassifizierung

1. Anlegen einer Tabelle, in der die Regeln für die Dokumenten-Klassifizierung gespeichert

werden

CREATE TABLE Abfrageregeln_1 ( queryid NUMBER PRIMARY KEY, kategorie VARCHAR2(30), query VARCHAR2(2000) );

Vorgehensweise: Dokumenten-Klassifizierung

2. Erstellen der Regeln / Queries

INSERT INTO Abfrageregeln_1 VALUES (1, 'Politik', ’Demokratische Partei OR Republikaner’ ); INSERT INTO Abfrageregeln_1 VALUES (2, ‘klassische Musik', ' (Mozart OR Bach) NOT (Pop OR {Moderne Musik} )’ );

Vorgehensweise: Dokumenten-Klassifizierung

Folgende TEXT Operatoren sind im Zusammenhang mit der MATCHES Funktionalität zulässig:

– ABOUT, AND, EQUIVALENCE, NEAR, NOT, OR, PHRASE, STEM, WITHIN

nicht zulässig sind:

– ACCUM, EQUIV, FUZZY, MINUS, SOUNDEX, THRESHOLD, WEIGHT, WILDCARD

Vorgehensweise: Dokumenten-Klassifizierung

3. Anlegen des CXTRULE Indexes

CREATE INDEX abfrageregeln_1 _idx ON abfrageregeln_1 (query) INDEXTYPE IS CTXSYS.CTXRULE PARAMETERS ( ’ lexer my_basic_lexer wordlist my_wordlist ' );

Vorgehensweise: Dokumenten-Klassifizierung

Zulässige Datenformate für die TextSpalte: Ascii, HTML, XML

zulässige Parameter bei der CTXRULE-Indexerstellung:– LEXER– MEMORY– STOPLIST– STORAGE– WORDLIST– SECTION GROUP

z.Zt. nicht zulässige Parameter, Präferenzen und Sonderspalten :Datastore, Filter

Überblick - CTXRULE

4. … nun sollen eingehende Dokumente, die in der Tabelle NEWS gespeichert werden, automatisch über den MATCHES Operator klassifiziert werden

SQL > desc NEWS

newsid numberautor varchar2(30)quelle varchar2(30)artikel clob

Vorgehensweise: Dokumenten-Klassifizierung

4. Die Klassifizierung der Dokumente kann z.B. über einen BEFORE INSERT TRIGGER erfolgen. Die ermittelten Kategorien werden in diesem Beispiel in einer separaten Tabelle news_klassifizierung gespeichert

Vorgehensweise: Dokumenten-Klassifizierung

BEGIN FOR c1 IN (select kategorie from abfrageregeln_1 where MATCHES (query, :new.article) > 0 ) LOOP

INSERT INTO news_klassifizierung (newsid, kategorie) VALUES (:new.newsid, c1.kategorie); END LOOP;END;

XML Indizierung

Nested Section - Suche <movie><title>Die Matrix</title></movie> <book><title>Einführung in die Matrix -

Algebra</title></book> select price from media where contains(desc, ‘matrix

within title within movie’)>0

Suche nach Attributwerten <book author=“Barbara Steinhanses”>Oracle

interMedia und DC4 </book> select title from books where contains(text, ‘Steinhanses within

book@author’)>0

XML Suche (Version 8.1.7)

Neuer Oracle 9i Server-DatentypSpeichern von XML Dokumenten in der DB

implementiert als CLOBprüft XML-Dokumente auf well-formed

durchsuchbar mit SQL mit XPATH Unterstützung Zugriff über SQL oder PL/SQL Funktionen wie getClobVal() Operationen wie Extract() und ExistsNode() Alle neuen SQL Funktionen liefern

XML Dokumente als XML_TYPE zurück Spalten vom Typ XML_TYPE können mit 9i TEXT indiziert

werden weitere Infos hierzu:

Oracle 9i New Features - Kapitel 2 zu XML Enhancements

ORACLE 9i - XML TYPE

2 neue XPATH Operatoren in 9i TEXT:– INPATH– HASPATH

Für beide Operatoren gilt: Suche nach XML-Dokumenten basiert auf:

– section paths – section path contents

Verwendung von CONTAINS Indizierung mit der PATH_SECTION_GROUP

XPATH Operator

INPATH Operatorähnlich dem WITHIN Operator, aber nicht Angabe eines einzelnen Sektionsnamens sondern Angabe eines Pfades(PATH)

ermöglicht die Volltext-Suche innerhalb– eines Elementes / Tag ( = Sektion)– eines XML-Pfades ( = Sektions-Pfad)– eines XML-Pfades, in dem Wildcards verwendet werden– eines Elementes mit Attributwerten

bitte beachten:XML Tags und Attriubutwerte sind CASE-SENSITIV

XPATH Operator

Einfaches INPATH BeispielMozart im top-level Element Musik:

SELECT id, doc_name FROM doc WHERE CONTAINS ( text , 'Mozart INPATH (Musik) ') > 0;

Mozart im XML-Pfad Musik/Oper:

Mozart INPATH (Musik/Oper)

Mozart im Element Musik mit dem Attribut Oper =Magische Flöte

Mozart INPATH (Musik[Oper="Magische Flöte"])

XPATH Operator

INPATH Examples with WildcardsMozart im Element Musik - auf beliebiger Ebene

Mozart INPATH (//Musik) Mozart im Element Oper mit einem höher geordeneten Element Musik

Mozart INPATH (music//opera) Mozart im Element Oper mit dem Grandparent Element Musik

Mozart INPATH (music/*/opera) Mozart Element Oper m. untersch. bezeichneten übergeordneten Knoten

Mozart INPATH (music/*/classical/*/*/opera)

XPATH Operator

INPATH Beispiele mit Booleschen OperatorenMozart im Element Musik ohne nachfolgendes Element Jazz Mozart INPATH (Musik[NOT(Jazz)])Mozart im Element Musik mit nachfolgenden Elementen Flöte UND Piano Mozart INPATH (Musik[Flöte AND Piano]) Mozart im Element Musik mit nachfolgenden Elementen Flöte ODER Piano Mozart INPATH (Musik[Flöte OR Piano])Mozart im Element Musik mit dem nachfolgenden Elementen Oper UND dem Attributwert Komponist = Bach Mozart INPATH (Musik[Oper AND @Komponist = "Bach"])

XPATH Operator

HASPATH OperatorSuche auf alle XML-Dokumente im angegebenen XML-Pfad

… HASPATH (Musik/Oper/Komponist) ...

Suche auf alle XML-Dokumente, die den spezifischen Wert im angegebenen XML-Pfad aufweisen

… HASPATH (Musik = “Mozart”) ...

Der Index MUSS mit der PATH_SECTION_GROUP erstellt werden

Verwendung von // und * Wildcards

XPATH Operator

… zusätzliche neue Funktionalitäten ….

Unterstützt werden in Oracle 9i Themen für alle single-byte Sprachen, deren Worte durch Leerzeichenen getrennt werden.

Themenanalyse mit Hilfe einer Knowledge Base

Knowledge Base basiert auf einem Thesaurus Verwendung des ABOUT Operators spezieller Themen-Index

Themen in unterschiedlichen Sprachen

Erstellung, bzw. Erweiterung der vorhandenen Knowledge Base (englisch, französisch) mit dem ctxkbtc compiler

NLS_LANG muss gesetzt seinThesaurus muss entsprechend geladen seinStopwortliste kann der Knowledge Base hinzu

compiliert werden

Ist keine Knowledge Base für die Sprache vorhanden

werden Themen aus dem entsprechenden Thesaurus abgeleitet

Themen in unterschiedlichen Sprachen

Beispieldatei für das Deutsche:

$ORACLE_HOME/ctx/data/del/drde.dct

Einträge für das deutsche Wort Hauptbahnhof Hauptbahnhof <tab>Haupt#Bahnhof Hauptbahnhofes<tab>Haupt#Bahnhof Hauptbahnhöfe <tab>Haupt#Bahnhof Hauptbahnhoefe<tab>Haupt#Bahnhof

User Dictionary für die Komposita Indizierung

In 9i Text gibt es für die Formatspalte einen neuen Wert : => IGNORE

IGNORE bedeutet, dass die Zeile nicht indiziert werden soll für Zeilen, die Daten enthalten, die nicht text-indiziert werden können, wie z.B. Bilder, Audios, Videos, ...

Beispiel: CREATE INDEX dokument_idx ON dokumente(description)INDEXTYPE IS ctxsys.contextPARAMETERS ( 'FORMAT COLUMN descr_type' );

Format-Spalte - IGNORE

Local Partitioned Text Indexes können auf Tabellen angelegt werden, die RANGE partitioniert sindmaximale Anzahl von Partitionen pro Index 9999

Beispiel:create table ptest (id number, text varchar2(80)) partition by range (id) (partition p1 values less than (200), partition p2 values less than (400), partition p3 values less than (700));

create index ptest_idx on ptest (text) indextype is ctxsys.context local parameters (‘filter ctxsys.inso_filter’);

Local Partitioned TEXT Indexes

CTX_DDL modifizierte Prozeduren:

SYNC_INDEX hat 2 neue Parameter : - für das Spezifizieren der Memory-Grösse - und für die Angabe von Partitionen

Beispiel:beginctx_ddl.sync_index(’BSE_INDEX’, ’2M’, ’P2’);end;

Neue und aktualisierte Prozeduren

Weiterführende Informationen

Oracle9i Text Reference, Oracle9i Text Application Developer’s Guide

Oracle8i Documentation Addendum Release 3 (8.1.7)

http://webiv.oraclecorp.com Note 119712.1 :„The InterMedia Text CTXCAT Indextype and How it Works“Note 136395.1 :„Using Oracle 9i Document Classification New Feature“Note 150307.1„Technical Overview: Oracle TEXT Version 9.0.1“

AQ&Q U E S T I O N SQ U E S T I O N SA N S W E R SA N S W E R S