doag sig intermedia mannheim, 13.11.2001 barbara steinhanses business development manger intermedia,...
TRANSCRIPT
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