DOAG
SIG interMedia
Mannheim, 13.11.2001
Oracle TEXT
New Features
Barbara Steinhanses
Business Development Manger
interMedia, Text und Lite
Business Unit - Application Server
Oracle Deutschland GmbH
Agenda
Oracle TEXT - Indextypen
CONTEXT, 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 Portal
Oracle IFS
Oracle UltraSearch
Oracle Applications
und Grundlage einer Vielzahl von Partneranwendungen:
Pirobase / Pironet
@DAM / PictureSafe
NextGen / Multicom
Artesia
Pinetree
SailLabs
DC4
/ Digital Collections
DMS
/ Quark
Mediasurface
Bulldog
Rittershaus
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
DATASTORE
SECTION GROUP
STOPLIST
-
WORDLIST
FILTER
MEMORY
STORAGE
zulässige Präferenzen und Sonderspalten :
Multi-Stop List und Multi-Lexer
Sprache, Format und Characterset Spalten
Überblick - CONTEXT
•
Exakte Wort/Phrasensuche
Case-sentive Suche
Baseletter Indizierung
(z.B. Französisch, Spanisch, ...)
Alternative Schreibweisen (Deutsch, Dänisch, Schwedisch)
•
Logische Kombinationen
“and”, “or”, “not”, ”equivalence”
•
Wildcard-Suche
•
Erweiterungen :
Fuzzy matching
Soundex
Kompositasuche
•
(unterschiedliche Sprachen)
(Deutsch und Niederländisch)
Multilinguale Stammsuche
•
Spanisch, Französisch, Deutsch, Niederländisch,
Italienisch, Englisch
Überblick - CONTEXT
• Near - Operator
mit 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
Oracle interMedia
Der Text Index
CREATE INDEX text_index
ON articles(text)
INDEXTYPE is context;
strukturiert
SELECT pubdate, author, title
FROM articles
WHERE pubdate BETWEEN ‘01-APR-98’ AND ‘10-APR-98’
AND CONTAINS (text,‘Oracle AND ABOUT (Internet)’) > 0
Volltext
suche
Themen
suche
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 Feldern
und 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 Group
Multi-Stop List und Multi-Lexer
Sprache, 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. CTXCAT
Funktionalität
CONTEXT
asynchron
CTXCAT
synchron
CTX_DDL.sync_index
als Teil der Transaktion
auf der Basistabelle
Operator
CONTAINS
CATSEARCH
Abfragesprache
Sehr umfangreich:
Begrenzt:
Indexpflege
Boolesche Operatoren, Phrasensuche, Themensuche, Ähnlichkeitssuche, phonetische Suche,
Kompositasuche, Wildcard +
Doppel-Trunkierung, Prefix ...
Phrasensuche, Boolesche
Operatoren
keine Wildcard-Suche in 8.1.7
eingeschränkt in 9.0.1
CONTEXT vs. CTXCAT
Abfrage-Operatoren
CONTEXT
AbfrageSyntax
Funktionalität
A&B
A|B
A~B
AB
(A B) & C
(A & B) | C
accum, within, fuzzy,
stem, wildcard,
thesaurus, near, etc.
CTXCAT
AB
A|B
+A -B
"A B"
"A B" C
(A B) | C
AND, OR,
AND-NOT,
PHRASE
CTXCAT - Beispiel
CREATE TABLE EMP
(
EMPNO
number(4)
NOT NULL,
ENAME
varchar2(10),
HIREDATE date,
skills
varchar2(100)
);
CTXCAT - Beispiel
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 emp
where catsearch (skills,' “oracle lite“ ' , NULL ) > 0;
ENAME
---------SMITH
SKILL
------------------------INTERMEDIA, TEXT, ORACLE LITE
CTXCAT - Index Set
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
Gemische Abfragen mit Index
Sets
Erstellung 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 DokumentenKlassifizierung, 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
Überblick - CTXRULE
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
Vorgehensweise:
Dokumenten-Klassifizierung
1. Anlegen einer Tabelle,
in der die Regeln für die DokumentenKlassifizierung 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 ' );
Überblick - CTXRULE
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
Vorgehensweise:
Dokumenten-Klassifizierung
4. … nun sollen eingehende Dokumente,
die in der Tabelle NEWS gespeichert werden,
automatisch über den MATCHES Operator
klassifiziert werden
SQL > desc NEWS
newsid
autor
quelle
artikel
number
varchar2(30)
varchar2(30)
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
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
XML Suche (Version 8.1.7)
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
ORACLE 9i - XML TYPE
Neuer Oracle 9i Server-Datentyp
Speichern von XML Dokumenten in der DB
implementiert als CLOB
prü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
XPATH Operator
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 Beispiel
Mozart 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 Wildcards
Mozart 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 Operatoren
Mozart 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 Operator
Suche 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
… zusätzliche neue
Funktionalitäten ….
Themen in unterschiedlichen
Sprachen
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 sein
Thesaurus muss entsprechend geladen sein
Stopwortliste kann der Knowledge Base hinzu
compiliert werden
Ist keine Knowledge Base für die Sprache vorhanden
werden Themen aus dem entsprechenden Thesaurus abgeleitet
User Dictionary für die Komposita Indizierung
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
Format-Spalte - IGNORE
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.context
PARAMETERS ( 'FORMAT COLUMN descr_type' );
Local Partitioned TEXT Indexes
Local Partitioned Text Indexes können auf Tabellen angelegt werden,
die RANGE partitioniert sind
maximale 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’);
Neue und aktualisierte Prozeduren
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:
begin
ctx_ddl.sync_index(’BSE_INDEX’, ’2M’, ’P2’);
end;
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“
Q U E S T I O N S
A N S W E R S