Text-Retrieval mit Oracle

Werbung
Text-Retrieval mit Oracle
Vortrag von
Andreas Mück & David Diestel
Oracle 8i interMedia
• “... a product designed to manage
multimedia Web content within
Oracle 8i.”
• Das Programmpacket unterteilt in
drei Bereiche.
Gliederung von Oracle 8i interMedia
Oracle 8i
interMedia
Oracle 8i
interMedia
Text
Oracle 8i
interMedia
Audio, Image,
and Video
Oracle 8i
interMedia
Locator
Oracle 8i interMedia Text
• versteht sich als Werkzeug zur
Erstellung von Applikationen zur
Anfrage auf Texte
• bietet Möglichkeiten
– zur Suche in
– zum Retrieval auf
– zur Ansicht von
Textdokumenten
Oracle 8i interMedia Text(2)
• zusätzlich für englischsprachige
Dokumente
– Begriffssuche
– Themenanalyse
• verwendet Standard-SQL und
PL/SQL
Erstellung einer Querry Application
4 Schritte
•
•
•
•
Laden der Dokumente
Indexieren der Dokumente
Suchanfragen stellen
gefundene Dokumente präsentieren
Laden von Dokumenten
• System erwartet, daß Dokumente in
eine Textspalte geladen werden
• Spaltentypen:
–
–
–
–
–
VARCHAR2
CLOB
BLOB
CHAR
BFILE
Laden von Dokumenten (2)
• LONG & LONG RAW für DB-Upgrade
Oracle7 auf Oracle8
• auch Speichern von Dokumenten im
lokalen Dateisystem oder Inter/Intranet u.a. möglich
– Eintrag von Dateipfaden oder URLs in
die Tabelle
Laden von Dokumenten (3)
• Unterstützung fast aller
Dokumentformate
• Laden von Dokumenten unter
Verwendung des SQL INSERT
Statements
Beipiel:
CREATE TABLE docs (id number primary key, text varchar2(80));
– erzeugt Tabelle mit 2 Spalten: id und text
Tabelle füllen mit INSERT:
insert into docs values(1, 'this is the text of the first document');
insert into docs values(12, 'this is the text of the second document');
Laden von Dokumenten (4)
• Laden von Dokumenten aus dem
Dateisystem mit
– SQL*Loader
– ctxload executable
– DBMS_LOB.LOADFROMFILE() PL/SQL
procedure to load LOBs from BFILEs
– Oracle Call Interface
Indexierung
• Indexierung erfolgt auf der
Dokumentenspalte
• spezieller Indextyp: ctxsys.context
• Tabelle muß PK besitzen (Doc-ID!?)
• Beispiel:
create index myindex on docs(text)
indextype is ctxsys.context;
Indexierung (2)
• Erzeugen des Index mit
CREATE INDEX, Bearbeiten mit
ALTER INDEX
• Definition von Parametern mit
–
–
–
–
CTX_DDL.CREATE_PREFERENCE
CTX_DDL.SET_ATTRIBUTE
CTX_DDL.CREATE_STOPLIST
CTX_DDL.CREATE_SECTION_GROUP
Indexierung (3)
• Datastore: Wie/Wo sind die Dokumente
gespeichert?
• Filter: Welche(s) „Importformat(e)“?
• Lexer: Sprachauswahl für Termextraktion
Vielsprachigkeit möglich
• Wordlist: Einstellungen für Stemming,
Fuzzy & Substring-Index
Indexierung (4)
• Storage: Parameter für die
Indexspeicherung z.B. tablespace
• Stop List: Stopwortliste
• Section Group: Definition von Sektionen
bzw. wie diese erkannt werden, benötigt
für WITHIN Anfragen
Anfragen
• SQL-, PL/SQL-Anfragen
• Verwendung des CONTAINSOperators z.B.:
SELECT SCORE(1), title from newsindex
WHERE CONTAINS(text, 'oracle', 1) > 0;
Anfragen(2)
• Mögliche Operatoren
– Word-Querys
– Boolsche Verknüpfung
– Near-Operator
– beliebige Wildcards
– WITHIN
– ABOUT-Querys (Themensuche)
– Thesaurus
Ranking
• „inverse Termfrequenz“:
Termfrequenz/Dokumentfrequenz
• Berechnet durch SCORE-Operator
Erzeugung der Ausgabe
• Ausgabe des Dokuments in
HTML/Text
• Highlighting möglich
Herunterladen