560 likes | 709 Views
Textdatenbanken. Jana Bulik 98I 15. November 2001. Textdatenbanken - Überblick. Laden von Texten / Dokumenten Indexieren und Indexwartung Anfragen und Anfrageoperatoren Highlighting und Präsentation von Ergebnisdokumenten Vergleich Oracle InterMedia Text mit SQL/MM Full Text.
E N D
Textdatenbanken Jana Bulik 98I 15. November 2001
Textdatenbanken - Überblick • Laden von Texten / Dokumenten • Indexieren und Indexwartung • Anfragen und Anfrageoperatoren • Highlighting und Präsentation von Ergebnisdokumenten • Vergleich Oracle InterMedia Text mit SQL/MM Full Text
1. Laden von Texten/Dokumenten • Datastored Objekte • SQL – Insertanweisung • ctxload
1. Laden von Texten/Dokumenten 1.1 Datastored Objekte - DIRECT_DATASTORE - DETAIL_DATASTORE - FILE_DATASTORE - URL_DATASTORE - USER_DATASTORE
1. Laden von Texten/Dokumenten DIRECT_DATASTORE • besitzt keine Attribute • Speicherung der Daten intern in Textspalten • einzelne Zeile wird als einzelnes Dokument angezeigt
1. Laden von Texten/Dokumenten DETAIL_DATASTORE • Datenspeicherung wie bei DIRECT_DATASTORE • Dokument besteht aus mind. einer Zeile • Attribute: • binary • detail_table • detail_key • detail_lineno • detail_text
1. Laden von Texten/Dokumenten FILE_DATASTORE • Datenspeicherung extern in den Daten des Betriebssystems • Path – Attribut gibt an, wo externes Textfile gespeichert ist
1. Laden von Texten/Dokumenten URL_DATASTORE • Datenspeicherung extern im Internet bzw. Intranet • Attribute: • Timeout • Maxthreads • Urlsize • Maxurls • Maxdocsize • http_proxy und ftp_proxy • No_proxy
1. Laden von Texten/Dokumenten USER_DATASTORE • Wird benutzt, um zusätzliche Informationen dem Text hinzuzufügen • Attribut: • Procedure
1. Laden von Texten/Dokumenten 1.2 SQL – Insertanweisung • einfachste Möglichkeit: Anlegen und Füllen einer Tabelle mit zwei Spalten Anlegen der Tabelle: CREATE TABLE tabellenname (id number primary key, text varchar2 (80)); Füllen der Tabelle: INSERT INTO tabellenname values (1, ‘Text Dokument 1’); INSERT INTO tabellenname values (2, ‘Text Dokument 2’);
1. Laden von Texten/Dokumenten 1.1 ctxload - Laden von Texten - Thesaurus Import und Export - Dokument Update/Export
1. Laden von Texten/Dokumenten Laden von Texten • wird zum Laden von Texten aus einer Datei benutzt • Text wird in eine LONG oder LONG RAW Spalte einer Tabelle gespeichert • Bei Import unstrukturierter Daten muss entsprechendes Headerfile vorhanden sein
1. Laden von Texten/Dokumenten Thesaurus Import und Export • wird zum Laden von Thesaurusdaten aus einem ASCII File in die interMedia Text Thesaurus Tabelle benutzt • Ctxload kann zum Importieren und Exportieren von Files benutzt werden
1. Laden von Texten/Dokumenten Dokument Update/Export • ctxload utility unterstützt: • Das Exportieren von Datenbankspalten in Dateien • Das Aktualisieren von Datenbankspalten aus Dateien
2. Indexieren und Indexwartung • Filterobjekte • Lexer Objekte • Wortlistenobjekte (Wordlist Objects) • Speicherobjekte (Storage Objects)
2. Indexieren und Indexwartung 2.1 Filterobjekte • sollen festlegen, wie Texte für Indizierung gefiltert werden • Oracle speichert formatierte Dokumente in Originalform • Benutzt Filter, um Text oder HTML – Code zu erzeugen • Diese temporären Texte werden dann von Oracle indiziert
2. Indexieren und Indexwartung Verschiedene Filterobjekte: • NULL_FILTER • INSO_FILTER • USER_FILTER • CHARSET_FILTER
2. Indexieren und Indexwartung 2.2 Lexer Objekte • Werden verwendet, um die Sprache eines Textes festzustellen • Objekte: • BASIC_LEXER • CHINESE_VGRAM_LEXER • JAPANESE_VGRAM_LEXER • KOREAN_LEXER
2. Indexieren und Indexwartung BASIC_LEXER: • Wird für Englisch und westeuropäische Sprachen verwendet • Wird benutzt, um aus Texten einzelne Zeichen zu extrahieren
2. Indexieren und Indexwartung BASIC_LEXER: (Attribute) • continuation • numgroup • numjoin • skipjoin • mixed_case • alternate_case
2. Indexieren und Indexwartung 2.3 Wortlistenobjekte (Wordlist Objects) • Werden verwendet, um erweiterte Anfrageoperationen zu ermöglichen • Verwendetes Objekt: BASIC_WORDLIST • Die benutzte Sprache muss dabei mit angeben werden • Sprachen: NULL, ENGLISH, DUTCH, FRENCH, GERMAN, ITALIAN und SPANISH • Bei Angabe von NULL wird der Operator "$" ignoriert
2. Indexieren und Indexwartung Beispiele: • fuzzy_match: gibt an welche Routinen eingesetzt werden • fuzzy_score: gibt das untere Ergebnislimit an • fuzzy_numresults: gibt die max. zu erwartete Anzahl der Anfrageergebnisse an
2. Indexieren und Indexwartung 2.4 Speicherobjekte (Storage Objects) • gibt Einstellungsparameter und Tabellengröße einer Tabelle an • Diese Tabellen sind mit einem Textindex verbunden • Objekt: BASIC_STORAGE
2. Indexieren und Indexwartung Beispiele: • i_table_clause: Indextabelle, bei Tabellenerstellung • k_table_clause: Schlüsselworttabelle, bei Tabellenerstellung • r_table_clause: rowid – Table, bei Tabellenerstellung • n_table_clause: "negative list" – Tabelle, bei Tabellenerstellung
3. Anfragen und Anfrageoperatoren • Wort - Anfragen • About – Anfragen • Gemischte Anfragen • Operator Prioritäten • Spezielle Zeichen in Anfragen
3. Anfragen und Anfrageoperatoren 3.1 Wort – Anfragen • wird benutzt, wenn man nach einem bestimmten Wort oder Wortgruppe sucht • Es werden die log. Operatoren AND und OR, sowie strukturierte Prädikate benutzt • Es ist möglich mit count(*), CTX_QUERY.COUNT oder CTX_QUERY.EXPLAIN die Trefferanzahl zu ermitteln
3. Anfragen und Anfrageoperatoren Beispiel: CTX_QUERY.COUNT_HITS • gibt Anzahl der Treffer zurück • 2 verschiedene Modi: • Exact Mode • Estimate mode
3. Anfragen und Anfrageoperatoren Beispiel: CTX_QUERY.COUNT_HITS COUNT_HITS( index_name IN VARCHAR2, text_query IN VARCHAR2, exact IN BOOLEAN DEFAULT TRUE) RETURN NUMBER;
3. Anfragen und Anfrageoperatoren 3.2 About – Anfragen • zählen die Dokumente, die die Kriterien der gestellten Anfrage erfüllen • Themenkomponente des Indexes kann benutzt werden (nur in englischer Sprache möglich)
3. Anfragen und Anfrageoperatoren Beispiel: ABOUT (Text) • Text kann einzelnes Wort, Wortgruppe, Satz oder Aneinanderreihung beliebiger Wörter sein
3. Anfragen und Anfrageoperatoren Beispiel: • Einzelnes Wort: 'about (dog)' • Wortgruppe: 'about (cats and dogs)' • beliebige Wörter: 'about (cat dog house)' - es werden alle Dokumente zurückgegeben, die diese Wörter enthalten - ein Dokument wird höher bewertet, wenn es alle Wörter enthält
3. Anfragen und Anfrageoperatoren 3.3 Gemischte Anfragen • Vermischung beider Anfrageformen (Wort – Anfrage, About – Anfrage) • Benutzung der Operatoren AND und OR • Beispiel: ABOUT und WORT Anfrage ’ about (Hunde) und Katze’ ABOUT Anfrage mit anderer ABOUT Anfrage ’ about (Hunde) not about (Dackel)
3. Anfragen und Anfrageoperatoren 3.4 Operator Prioritäten • Komponenten einer Abfrage werden in bestimmter Reihenfolge abgearbeitet • Reihenfolge wird von Priorität des Operators bestimmt • Textanfrageoperatoren werden in zwei verschiedene Gruppen eingeteilt
EQUIVALENCE (=) NEAR (;) WEIGHT (*), threshold (>) MINUS (-) NOT (~) WITHIN AND (&) OR (|) ACCUMULATE (,) Wildcard Characters ABOUT STEM ($) FUZZY (?) SOUNDEX (!) 3. Anfragen und Anfrageoperatoren Gruppe 2: (Operat. u. Zeichen) Gruppe 1: (Operatoren)
3. Anfragen und Anfrageoperatoren • Aufzählreihenfolge entspricht der Priorität • Höchste Priorität wird zuerst abgearbeitet • Abarbeitung von links nach rechts
3. Anfragen und Anfrageoperatoren 3.4 Spezielle Zeichen in Anfragen • Wildcard Zeichen • Gruppierende Zeichen • Escape Zeichen
3. Anfragen und Anfrageoperatoren • Wildcard Zeichen % an dieser Stelle kann ein beliebiges anderes Zeichen stehen (auch mehrmals) Bsp.: 'haus%' – Findet alle Wörter, die mit Haus beginnen _ an dieser Stelle kann irgendein einzelnes Zeichen stehen Bsp.: '_ing' - Findet alle Wörter, die auf ing enden, aber nur mit 4 Buchstaben geschrieben werden.
3. Anfragen und Anfrageoperatoren • Gruppierende Zeichen () runde Klammern dienen zum Gruppieren von Operatoren und Termen [] dienen auch zum Gruppieren, wie die runden Klammern, aber verhindern das Eindringen von Expansionsoperatoren (z.B. FUZZY oder STEM)
3. Anfragen und Anfrageoperatoren • Escape Zeichen {} Kennzeichnung eines Strings aus Zeichen und Symbolen als Escape – Sequenz Bsp.: 'AT\&T' oder '{AT&T}' \ Kennzeichnung eines einzelnen Zeichens als Escape – Sequenz Bsp.: 'high\-voltage' oder '{high-voltage}'
4. Highlighting und Präsentation von Ergebnisdokumenten • Für Benutzer interessant, in welchen Dokumenten sich die Treffer befinden • Günstig: Einsicht in die gefundenen Dokumente • Nach gestellter Anfrage werden dem Benutzer alle Dokumente angezeigt, die die Anfrage erfüllen. Benutzer wählt dann das anzuzeigende Dokument aus.
4. Highlighting und Präsentation von Ergebnisdokumenten • Mit Hilfe von interMedia Text können gefundene Texte unterschiedlich dargestellt werden • Z.B.: Unterstreichung der Suchwörter
4. Highlighting und Präsentation von Ergebnisdokumenten • Beispiel: CTX_DOC.FILTER Syntax: CTX_DOC.FILTER( index_name IN VARCHAR2, textkey IN VARCHAR2, restab IN VARCHAR2, query_id IN VARCHAR2 DEFAULT 0, plaintext IN BOOLEAN DEFAULT FALSE);
4. Highlighting und Präsentation von Ergebnisdokumenten • Beispiel: CTX_DOC.MARKUP Syntax: CTX_DOC.MARKUP ( index_name IN VARCHAR2, textkey IN VARCHAR2, text_query IN VARCHAR2, restab IN VARCHAR2, query_id IN VARCHAR2 DEFAULT 0, plaintext IN BOOLEAN DEFAULT FALSE, tagset IN VARCHAR2 DEFAULT 'TEXT_DEFAULT', starttag IN VARCHAR2 DEFAULT NULL, endtag IN VARCHAR2 DEFAULT NULL, prevtag IN VARCHAR2 DEFAULT NULL, nexttag IN VARCHAR2 DEFAULT NULL);
5. Vergleich Oracle interMedia Text mit SQL/MM Full Text • "normale" Suchanfragen mit 'like' nicht mehr leistungsfähig genug • Oracle interMedia Text unterstützt neue Suchmechanismen - Diese neuen Suchmechanismen sind im Standard von Orcale interMedia Text vorgesehen