Volltextsuche mit Swish-E
Finden im Sauseschritt
von Rolf Strathewerd
Erschienen im Linux-Magazin
2004/04
Eine Website mit einer Suchfunktion versehen ist Stand der Technik. Um aber die eigene Festplatte umfassend und mit all den Dateiformaten abseits von HTML zu durchsuchen, braucht es etwas Effizienteres als Grep oder einen einfachen Index: Swish-E.
Der Speicherplatz heutiger Festplatten ist zwar groß, dennoch gelingt es immer wieder, sie mit allerlei Dateien vollzustopfen. Selbst die ordentlichste Verzeichnisstruktur hilft wenig, wenn man einen bestimmten Text, ein altes Skript oder ein spezielles Bild wiederfinden will. Mangels intelligenter Computer bleibt heute nur der Griff zur Volltextsuche. Zu den besten Ergebnissen führt das Simple Web Indexing System for Humans Enhanced, kurz Swish-E[1] genannt. To swish heißt so viel wie sausen - das passt im doppelten Sinne. Die Indizierung läuft recht flott und auch die Suche liefert ihre Ergebnisse ohne merkliche Verzögerung.
Swish-E wurde 1995 unter dem Namen Swish von Kevin Hughes als Webindizierer für ein kommerzielles Umfeld geschrieben. Zwei Jahre später fragte ihn die Universität Berkeley, ob sie Fehler im Code beheben und das Projekt weiterentwickeln könne. Daraus entstand das heutige Swish-E 2, das von einem kleinen Team gepflegt wird und mittlerweile den Rahmen eines einfachen Webindizierers sprengt.
Für Swish-E besteht die Welt nur aus Text, HTML und XML. Wird er ohne Optionen gestartet, interpretiert der Indizierer alle Dateien, auf die er stößt, als eines dieser Formate und schreibt einen Default-Index. Dazu startet das Programm im aktuellen Verzeichnis und arbeitet sich zu den darunter liegenden Verzeichnissen vor.
Index erstellen
Das ist nur selten das gewünschte Verhalten. Eine passende Konfigurationsdatei (Listing 1) bringt das Tool auf den rechten Pfad: Die Datei legt fest, welches Verzeichnis abzuarbeiten ist (»IndexDir«), wie die Indexdatei heißt (»IndexFile«) und auf welche Sorten von Dateien sich die Indizierung beschränken soll (»IndexOnly«). Das Kommando »swish-e -c localweb.conf« startet daraufhin die Indizierung. Gerade beim Testen ist es sinnvoll, die Kommandozeile noch um die Option »-v3« zu erweitern. Mit ihrer Hilfe zeigt Swish-E ausführlich, was es gerade analysiert.
Um im erzeugten Index zu suchen, genügt es, Swish-E mit etwas anderen Parametern aufzurufen. So fahndet etwa »swish-e -f localweb.index -w "Hallo"« im eben erstellen Index »localweb.index« nach dem Wort »Hallo«. Für komplexere Suchen stehen »*« als Wildcard sowie die logischen Operatoren »and«, »or« und »not« zur Verfügung.
Da die Welt nicht nur aus Text, HTML und XML besteht, kann Swish-E mit Filtern auch andere Formate verarbeiten. Diese Filter verwandeln den neuen Dateityp in eines der drei bekannten Formate. Das funktioniert zum Beispiel mit Jpeg und Open Office, aber auch mit Mailboxen und Datenbanken. Meist ist dafür nicht viel mehr erforderlich, als den Namen des Konvertierungsprogramms in die Konfigurationsdatei einzutragen, nur selten muss man ein kleines Shellskript verfassen.
01 # localweb.conf
02 IndexDir /srv/www/htdocs
03 IndexOnly .html
04 IndexFile ./localweb.index
|
Wie für die meisten verbreiteten Formate findet sich auch ein Programm, das PDF in schlichten Text umwandelt: »pdftotext«[2]. Damit Swish-E es benutzt, muss der Konverter in der Konfigurationsdatei eingetragen sein.
PDF-Dokumente indizieren
Das Schlüsselwort »IndexContents« (Listing 2) teilt dem Indizierer mit, dass er Dateien mit dem Suffix ».pdf« als Textdateien anzusehen hat. Da sie das nicht wirklich sind, verknüpft »FileFilter« das Suffix ».pdf« mit dem Programm »pdftotext«. Trifft Swish-E bei der Indizierung auf eine PDF-Datei, schickt es sie durch den Filter, der den entstandenen Text auf die Standardausgabe schreibt. Dort holt ihn Swish-E ab und verarbeitet ihn. Alle Filter für Fremdformate müssen das Ergebnis ihrer Umwandlungsarbeit an Stdout ausgeben.
Swish-E verfügt für die Textanalyse zwar über einen internen Parser, kann aber auch mit der »libxml2« arbeiten. Mit der Ergänzung »2« hinter den Formatangaben »TXT«, »HTML« oder »XML« benutzt der Indizierer immer Libxml2, bei einem Sternchen bleibt die Verwendung dieser Library optional und ohne jedes Anhängsel kommt immer der interne Parser zum Einsatz. In Listing 2 weist das Sternchen hinter »TXT« (Zeile 2) Swish-E dazu an, mit der Libxml2 zu arbeiten, falls sie vorhanden ist. Auch die Swish-E-Autoren empfehlen Libxml2 zu verwenden, da die internen Parser etwas magerer ausgestattet sind.
01 # PDF
02 IndexContents TXT* .pdf
03 FileFilter .pdf "/usr/bin/pdftotext" "'%p' -"
|
| Whitepaper |
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele
Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
|
The Role of Open Source in Data Integration
Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|