# Volltextrecherche

Eine Volltextrecherche (oftmals auch Volltextsuche) ist das Auffinden von Wörtern bzw. Wortgruppen in einer Vielzahl gleicher oder verschiedenartiger Dateien auf einem Computer, einem Server und/oder im Internet. Die Suchbereiche – meist handelt es sich um Texte – werden zuvor mit entsprechenden programminternen oder -unabhängigen Index-Werkzeugen indiziert.
Zur Informationsgewinnung und dem Auffinden aus bekannten wie auch nicht bekannten (aber auf den Medien vorhandenen) Dokumenten wird die Volltextrecherche in Verbindung mit einer Volltextindexierung zunehmend genutzt (siehe auch Google). Die Volltextrecherche dient dem Auffinden, Entdecken und Extrahieren unbekannter, nicht trivialer und wichtiger Informationen aus großen Mengen von unstrukturierten Texten/Dateien und ist somit auch ein wichtiger Teilbereich des Text Mining. Sie ist eine Sofortlösung für eine konkrete Fragestellung, wenn Systeme wie Dokumentenmanagement und Data-Mining nicht zur Verfügung stehen.
Im Kontext von Datenbanken bedeutet Volltextsuche, dass zusätzlich zu einer sonst etwa genutzten SQL-Abfrage, die eine Kenntnis der Feldstruktur voraussetzt, auch feldunabhängig gesucht werden kann.

## Geschichte

Die Volltextsuche ist in der Mitte der 1970er-Jahre aufgekommen. Traditionell werden Systeme eingesetzt, in denen ein Mensch Schlüsselbegriffe in den später aufzufindenden Text oder in Meta-Dateien aufnehmen musste (intellektuelle Ordnungssysteme). Bei Datenbanken wurden bestimmte Felder mit einem Index belegt, der schneller durchsucht werden konnte. Bei Bedarf wurde das Datenbankmodell entsprechend angepasst. Diese Verfahren waren jedoch für viele Bereiche größtenteils nicht mehr durchführbar, da solche kosten- und zeitintensiven Arbeiten eher schlecht für größere Datenbestände funktionieren. Unter anderem ist die Suchmaschine Yahoo in der Mitte der 1990er-Jahre mit einem solchen Ansatz gescheitert. In der Mitte der 1970er wurden allerdings neue Sucharten neben der klassischen Wortsuche wie Phrasensuche oder Platzhaltersuche sowie Rankingverfahren eingeführt, um den steigenden Anforderungen gerecht zu werden.
Eine weitere Möglichkeit erschloss sich bei relationalen Datenbanken mit der Einführung von Feldtypen wie Typ=Memo (bei Microsoft Access), Typ=BLOB (MySQL) oder varchar (bei anderen SQL-Datenbanken), die in der Lage sind, längere Texte aufzunehmen. Hier kann die häufig ohnehin stattfindende Indizierung der Tabellen einer Datenbank zusammen mit der Platzhaltersuche für entsprechende SQL-Abfragen genutzt werden, wenn die jeweiligen Dokumente in solchen Datenbankfeldern gespeichert vorliegen.
Das Problem war dabei, dass SQL-Abfragen eine Kenntnis der entsprechenden Syntax voraussetzt, was jedoch nur wenigen Spezialisten vorbehalten war. Daher wurden Retrievalsysteme entwickelt, die mit einer entsprechenden Anleitung für einen größeren Nutzerkreis geeignet waren.
Mit dem technischen Fortschritt in der Informationstechnologie und der Zunahme der Verarbeitungsgeschwindigkeit wurde es möglich, die Volltextrecherche auf eine größere Anzahl und auch umfangreichere Dateien anzuwenden. Zusätzlich begann man damit, aus dem gesamten Originaltext zum Zwecke des späteren schnellen Wiederauffindens so aufzubereiten, dass jedes Dokument, das nur mindestens ein Wort der Suchanfrage enthält, aufgefunden werden kann. Hierzu dient die Volltextindexierung zum Beispiel als Invertierte Datei. Allerdings werden dadurch diejenigen Dokumente nicht gefunden, die zwar zum gesuchten Themenkomplex passen, aber andere Wörter z. B. Synonyme benutzen. Dieses Problem wird heutzutage mittels Ontologien bearbeitet.

## Sucharten

Je nach verwendetem System gibt es u. a. folgende Suchmöglichkeiten:
* Suche nach einem bestimmten Wort, mit oder ohne Berücksichtigung von Groß- und Kleinschreibung
* Phrasensuche, zum Beispiel "Mit Wikipedia kann man"
* Boolesche Operatoren: "und/oder/nicht"
* Umfeldsuche: Wörter oder Phrasen die "n" Wörter voneinander entfernt sind (bei PDF-Index kleiner als 3 Seiten)
* Platzhaltersuche:
** für einzelne Buchstaben "?" wie Ma?er = Mayer/Maier/Mauer...
** für beliebig viele Buchstaben "*"
** innerhalb von Datenbanktabellen mit SQL "SELECT text FROM tabelle WHERE text LIKE '%suchbegriff%'"
* Unscharfe bzw. fehlertolerante Suche, Fuzzy-Suche
* Thesaurus-/Synonym-Suche
* Natürlichsprachliche Suche mit Relevanzsortierung: "Finde alle IT-Artikel in Wikipedia"
* Kombination mit den vorgenannten Möglichkeiten
* Makro-Suche: Eine Möglichkeit mit vordefinierten Makros wiederkehrende Suchabfragen durchzuführen