Volltextsuche mit Oracle
Findet Memo
Ein Archiv für Texte und andere Dokumente in Office-Formaten ist mit Oracle relativ einfach zu realisieren: Die Datenbank stellt dafür einen ganzen Werkzeugkasten mächtiger Funktionen bereit.
Ein Archiv für Texte und andere Dokumente in Office-Formaten ist mit Oracle relativ einfach zu realisieren: Die Datenbank stellt dafür einen ganzen Werkzeugkasten mächtiger Funktionen bereit.
Während Geschäftszahlen vielerorts seit Jahrzehnten mit Hilfe von Business-Software analysiert und verwaltet werden, blieben Texte lange außerhalb der Reichweite solcher Applikationen. Erst seit ein paar Jahren geraten zentrale, rechnergestützte Archive für Dokumente aller Art - Korrespondenz, Rechnungen, Berichte, E-Mails oder Notizen - stärker in den Blickpunkt. Schlagworte dafür sind etwa DMS (Document Management System) oder ECM (Enterprise Content Management). Derartige Anwendungen präsentieren ihre Dienste oft über Webportale und integrieren Workflow-Komponenten.
Wer auf solche Erweiterungen verzichten kann, außerdem bereits eine Oracle-Datenbank verwendet und ein wenig Kapazität für Skripting und SQL-Entwicklung frei hat, kommt aber schnell und kostengünstig auch mit einem Eigenbau zum Ziel. Denn Oracle bietet, was nicht jedem geläufig ist, ein Paket leistungsstarker Funktionen für die Suche nach Texten in allen üblichen Office-Formaten - damit hat man das halbe Textarchiv schon in der Tasche.
Dieses Feature steht seit den frühen 8er Versionen auf der Liste, wurde allerdings von Version zu Version umbenannt: Erst hieß es Context (bis 8.1.5), dann Intermedia Text (bis 8.1.7), und schließlich Oracle Text for Oracle 8i, was sich inzwischen zur aktuellen Schreibweise Oracle Text verkürzt hat. Gemeint ist in jedem Fall ein Mechanismus, der das Indizieren von Texten und die Suche über diesen Index erlaubt. Die Metadaten der Texte - etwa Angaben zu Autor, Quelle, Titel, Entstehungszeit und so weiter - speichert die Datenbank in normalen Tabellenfeldern.
Je nach Größe finden die Texte selbst entweder in Textfeldern Platz oder werden in so genannten LOBs (Large Objects) abgelegt. Diese wiederum können Bestandteil einer Tabelle sein (Datentyp BLOB, Binary Large Object; Maximalgröße 4 GByte) oder im Filesystem abgebildet werden. In diesem Fall enthält die Datenbank einen Verweis auf den Speicherort (Datentyp BFILE). Eine Datenquelle dieser Klasse nennt sich im Oracle-Text-Jargon Direct Datastore.
Alternativ können die Texte aber auch gewöhnliche Files (File Datastore) oder über das Inter- oder Intranet erreichbar sein (URL Datastore). Sie dürfen sogar auf Wunsch von einer Funktion geliefert werden, die der Anwender selber beisteuert (User Datastore).
Der Datenstrom, den Oracle aus einer dieser Quellen liest, wird dabei zunächst gefiltert. Passende Filter gibt es für mehr als 150 Datenformate, angefangen von Ascii-Text über PDF bis Word oder Excel. Zusätzliche Filter bieten mehrere Dritthersteller an. Den nächsten Arbeitsschritt übernimmt ein so genannter Sectioner, der in HTML- und XML-Dokumenten durch Tags strukturierte Abschnitte erkennt, nach denen zu suchen ebenfalls möglich ist.
Unstrukturierte Texte zerlegt der nachfolgende Lexer in kleine Einheiten (Tokens). Dabei berücksichtigt er die Eigenarten verschiedener Sprachen (bis hin zu Japanisch oder Koreanisch). Bestimmte Tokens lassen sich über konfigurierbare Stopp-Listen ausschließen. Am Ende stehen einzelne Wörter, aus denen ein inverser Index aufgebaut wird, wobei jedem Wort auch eine Liste seiner Fundstellen zugeordnet ist (siehe Abbildung 1).
Abbildung 1: So entsteht ein Oracle-Index für Text. Die Daten wandern aus einer der möglichen Quellen durch eine konfigurierbare Verarbeitungskette und werden am Ende wortweise im Index erfasst.
Zusätzlich zur Volltextsuche bietet Oracle die Suche nach Themen an (per Default allerdings nur in den Sprachen Englisch und Französisch). Dafür wird eine hierarchische Liste von Kategorien herangezogen, die es in Grenzen gestattet abzufragen, wovon der Text handelt. Ebenso möglich ist schließlich die direkte Klassifizierung von Texten. So könnten beispielsweise eingehende Nachrichten sortiert werden - eine Reihe spezieller Abfragen würde sie dann automatisch Ressorts wie Sport, Politik, Lokales oder Kultur zuordnen.
Alle Rezensionen aus dem Linux-Magazin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...