interMedia_TextNF_11_2001_SUBSET

Werbung
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
Herunterladen