Toolbox: Desktop-Suche mit Recoll

Recoll ist darauf spezialisiert, Dokumente aller Art auf dem Linux-Desktop aufzustöbern. Eine grafische Oberfläche erleichtert dabei den Bau komplexer Suchanfragen mit regulären Ausdrücken und verknüpften Suchoperatoren.

In Pocket speichern vorlesen Druckansicht 18 Kommentare lesen
Lesezeit: 10 Min.
Von
  • David Wolski
Inhaltsverzeichnis

Die Volltextsuche Recoll in Aktion, hier die Version 1.16 unter Ubuntu 12.04.

Sowohl Gnome als auch KDE bieten Ansätze für eine umfassende Desktop-Suche: Bei der Gnome Shell pflegt das Zeitgeist-Framework ein Journal der zuletzt geöffneten Dokumente und Orte; KDE setzt auf Strigi, das als Indexdienst die KDE-Anwendungen um eine Suchfunktion bereichert. Bei beiden Ansätzen geht es aber mehr um den Aufbau eines semantischen Desktops, der Dateien, Speicherorte und Netzwerkadressen anhand ihrer Metainformationen organisiert. Eine gezielte Volltextsuche nach Inhalten, etwa in zahlreichen Textdokumenten ist hier Nebensache. Außerdem fehlen noch geeignete Suchwerkzeuge, um den Index von Zeitgeist und Strigi einfach zu durchsuchen.

Diese Lücke füllt Recoll, das als solides Suchwerkzeug gute Dienste leistet. Dank Volltextsuche und regulären Ausdrücken kann Recoll auch in umfangreichen Datenbeständen die gesuchten Dokumente ausfindig machen. Recoll arbeitet mit einem Index und muss zunächst eine Datenbank mit den verfügbaren Informationen anlegen. Diese holt es sich direkt aus Textdokumenten oder extrahiert sie mit Hilfe externer Hilfsprogramme – so kann Recoll auch mit PDF, Postscript, RTF, LibreOffice/OpenOffice- und MS-Word-Dokumenten umgehen. Zusätzlich gibt es Unterstützung für komprimierte Dateien und Mailbox-Ordner.

Desktop-Suche Recoll (5 Bilder)

Index aufbauen

Recoll-Index: Bevor es mit der Suche los gehen kann, muss ein Index erstellt werden.

Auf einen Indexdienst, der permanent im Hintergrund läuft, verzichtet Recoll. Die Anwender entscheiden selbst, wann sie den Index aktualisieren wollen. Optional steht ein Daemon bereit, der Änderungen in den indexierten Verzeichnissen überwachen kann. Das Programm steht unter der GPL 2 und kann auf fast sieben Jahre aktive Entwicklung zurückblicken. Die in Qt erstelle grafische Oberfläche von Recoll lässt sich mit jedem Desktop verwenden.

Während Recoll Dokumente in den Index schreibt oder Suchbefehle entgegen nimmt, arbeitet im Hintergrund eine weitere Komponente, die sich Recoll von einem anderen Projekt geliehen hat: Die Datenbank-Engine Xapian ist für Datenbank und Suchläufe zuständig, die von Recoll lediglich übergeben werden.

Xapian kann gefundene Dokumente anhand ihrer Relevanz ordnen. Die Suche nach Platzhaltern, Sätzen und Wörtern in einen vorgegebenen Abstand zueinander liefert detaillierte Ergebnisse, auch wenn die Begriffe nicht zusammenhängend im Dokument vorkommen. Für die Indexierung und Suche nach Wörtern unabhängig von ihrer grammatikalischen Form unterstützt Xapian einen Wortstamm-Index. Eine Suche nach "Fußballer" findet so beispielsweise auch "Fußball". Der Wortstamm-Index muss nach den Regeln der gewünschten Sprachen gesondert erstellt werden. Regeln für Englisch, Deutsch, Französisch, Italienisch, Spanisch und andere europäische Sprachen bringt Xapian bereits mit.

Seinen Index sichert Xapian im Zeichensatz UTF-8 und ist damit für Dokumente in vielen Sprachen gerüstet. Die Suchfunktionen und Konfigurationsmöglichkeiten für den Index stellt Recoll über eine grafische Oberfläche bereit. Dank Xapian bietet Recoll derzeit die mächtigsten Suchfunktionen für den Linux-Desktop.

Linux-Distributionen wie Debian, Fedora und Ubuntu bringen Recoll in den Standard-Paketquellen mit, sodass es sich mit dem jeweiligen Paketmanager schnell installieren lässt. Für OpenSuse ist Recoll im Repository KDE:Extra des Build Service verfügbar, das noch manuell hinzugefügt werden muss. Der Paketname lautet bei allen Distributionen schlicht "recoll".

Bei der Installation von Recoll über apt gibt das Tool empfohlene Zusatzpakete an, die Hilfsprogramme nachrüsten.

Nicht überall steht dabei eine aktuelle Version zur Verfügung: Während Ubuntu 12.04 das recht frische Recoll 1.17 zur Installation anbietet, ist bei Debian 6 noch die zwei Jahre alte Version 1.13 mit von der Partie. Debian Wheezy und Sid enthalten allerdings ebenfalls Recoll 1.17. Beim Einrichten über den Paketmanager wird nur das Programm selbst installiert, eventuell zusätzlich benötigten Hilfsprogramme, beispielsweise um Text aus bestimmten Dateitypen zu holen, müssen manuell nachinstalliert werden. Für PDF-Dokumente ist beispielsweise das Tool pdftotext erforderlich, für RTF das Tool unrtf und für Doc-Dateien das bewährte Antiword. Welche Hilfsprogramme fehlen, kann Recoll über einen Menüpunkt anzeigen.

Das Feld „Start-Verzeichnisse“ gibt an, welche Ordner im Index landen.

Beim ersten Start beschwert sich Recoll über eine fehlende Datenbank mit durchsuchbarem Index. Zunächst sollte man aber unter "Voreinstellungen / Indizierungskonfiguration" konfigurieren, was im Index landen soll. Per Voreinstellung interessiert sich Recoll für das gesamte Home-Verzeichnis mit seinen Unterverzeichnissen. Unter "Globale Parameter" im Feld "Start-Verzeichnisse" kann man die durchsuchten Ordner aber auch auf eine Liste von Pfaden einschränken. Alternativ kann das Eingabefeld "Ausgelassene Pfade" darunter auch gezielt Verzeichnisse von der Indexierung ausschließen. In den Einstellungen werden auch die gewünschten Sprachen für den Wortstamm-Index festgelegt; für Deutsch stehen hier zwei Regelsätze namens "german" und "german2" bereit.

Die Xapian-Datenbank kann recht groß werden und nimmt etwa genauso viel Platz ein, wie die Originaldokumente selbst. Wenn komprimierte Dateien und Mailbox-Verzeichnisse in den Index mit aufgenommen werden, kann der Platzbedarf sogar noch höher sein. Auf der Partition des Home-Verzeichnisses sollte daher noch ausreichend Platz frei sein. Zur Not lässt sich die Datenbank aber auch über "Database directory name" auf einer anderen Partition unterbringen. Abschließend startet der Menüpunkt "Datei / Update Index" den Indexierungsvorgang.

Als Suchwerkzeug präsentiert Recoll ein schlichtes Eingabefeld, daneben ein Auswahlfeld mit einigen selbsterklärenden Suchoptionen wie "irgendein Ausdruck", "alle Begriffe" oder "Dateiname". Ungünstig ins Deutsche übersetzt ist die Option "Suchsprache", die im Original "Query language" heißt. Dahinter verbirgt sich nichts anderes als ein Parser für manuell eingegebene Parameter und Operatoren, um komplexe Suchabfragen zu bauen: Der Operator "OR" stellt eine Oder-Beziehung zwischen zwei Begriffen her, ein Minuszeichen vor einem Begriff findet nur Dokumente, in denen der Begriff nicht auftaucht. Zudem gibt es eine Reihe von Schlüsselwörtern, um Metadaten wie Autor, Titel, Empfänger, Dateiname oder Dateierweiterung abzufragen. Beispielsweise zeigt die Suche

author:"franz kafka" prozess

nur Dokumente mit dem Begriff "prozess" an, wenn diese laut Metadaten von Franz Kafka stammen. Weitere Modifikatoren können eine Suche weiter beeinflussen. Folgt auf die Suchbegriffe in Anführungszeichen ein "p" (proximity), dann müssen die Begriffe nicht in der angegebenen Reihenfolge auftreten, sondern lediglich nahe beieinander stehen:

"Wörter in beliebiger Reihenfolge"p

Ein angehängtes "o" gibt an, dass zwischen den gesuchten Begriffen weitere Wörter vorkommen dürfen. Standardmäßig liegt deren Anzahl bei zehn, mit einem Integer-Wert lässt sich aber auch eine andere Anzahl an das "o" anhängen. Eine vollständige Beschreibung sowie Syntaxbeispiele liefert das englischsprachige Online-Handbuch von Recoll.

Komplexe Suchabfragen lassen sich in Recoll auch über einen Dialog zusammensetzen.

Wer nicht gern Handbücher wälzt, kann komplexe Suchabfragen auch mit Hilfe der Oberfläche unter "Werkzeuge / Erweiterte Suche" zusammensetzen. Mehrere Felder helfen dabei, Kriterien zu verknüpfen und dabei auf das Arsenal logischer Operatoren zurückzugreifen. Die Suche lässt sich auf einen bestimmten Dateityp sowie einzelne Verzeichnisse einschränken. Nach einem Klick auf „Suche starten“ kann der Dialog getrost geschlossen werden, denn Recoll erinnert sich zwischen Suchläufen an die hier vorgenommenen Eingaben.

Die korrekte Syntax der zusammengestellten Abfrage zeigt der Menüpunkt "Werkzeuge / Show Query Details". Für das Testen von Platzhaltern und regulären Ausdrücken hält Recoll über "Werkzeuge / Ausdruck Explorer" ein Tool bereit, das nach einem Klick auf "Vervollständigen" gleich eine Liste passender Treffer zum eingegebenen Begriff anzeigt.

Eine Suche lässt sich auch auf der Konsole starten. In der Shell liefert der Parameter "-t" eine minimale Version der Suchergebnisse. Um mit Recoll im Index beispielsweise nach den drei Begriffen "dalvik debug monitor" zu suchen, dient der Befehl:

recoll -t -q "dalvik debug monitor"

Dabei sind alle drei Begriffe mit AND verknüpft, da dies die Standardeinstellung von Recoll ist. Soll das Tool nach dem exakten Ausdruck suchen, müssen die Anführungszeichen in Escape-Sequenzen gesetzt sein, damit die Shell sie an recoll weiterreicht:

recoll -t -q \"dalvik debug monitor\"

Wie in der grafischen Oberfläche können Modifikatoren die Suchmethode beeinflussen. Eine komplette Liste der Parameter gibt der Befehl recoll -h aus.

Der Index muss von Zeit zu Zeit aktualisiert werden, wenn neue Dokumente hinzugekommen sind oder vorhandene gelöscht wurden. In der grafischen Oberfläche lässt sich sich Aktualisierung über den Menüpunkt "Datei / Update Index" anstoßen. Die Aktualisierung arbeitet inkrementell und liest nur neue und geänderte Dokumente neu ein. Unabhängig von der Oberfläche erledigt das der Befehl recollindex. Mit dem Parameter "-z" verwirft Recoll den bestehenden Index und baut diesen ganz neu auf. Der Shell-Befehl hat den Vorteil, dass er auch als Cron-Job eingerichtet und damit automatisch zu bestimmten Zeiten ausgeführt werden kann. Den Editor für Cron öffnet der Befehl crontab -e, wo der Eintrag

30 3 * * * /usr/bin/recollindex 

Für den automatischen Start des Daemons in der Session-Verwaltung bringt Recoll ein passendes Script mit.

recollindex beispielsweise jeden Tag um 3:30 Uhr ausführt. Ab Version 1.17 bietet Recoll im Menü "Voreinstellungen / Indexing schedule" das Einrichten als Cron-Job an.

Alternativ lässt sich der Index mit einem Daemon aktualisieren. Der Befehl

recollindex -m

startet einen Hintergrundprozess mit dem Nice-Wert 19, also niedriger Priorität. Änderungen am Dateisystem erfährt der Indexer dann über inotify und hält so den Index automatisch auf dem neuesten Stand. In diesem Modus lässt sich recollindex auch automatisch über das Session-Management der verwendeten Desktop-Umgebung einrichten. Ein passendes Start-Script liefern die Entwickler unter /usr/share/recoll/examples/rclmon.sh gleich mit. Damit der Indexer zusammen mit dem Desktop startet, kann man den Befehl

/usr/share/recoll/examples/rclmon.sh start

in den Autostart einbinden, unter Unity und Gnome über das Tool gnome-session-properties ("Startprogramme").

Recoll ist eines der mächtigsten Suchwerkzeuge unter Linux, das zudem eine erfreulich ausführliche Dokumentation mitbringt, die auch entlegene Winkel gut ausleuchtet. Recoll arbeitet schnell und präsentiert zuverlässig Ergebnisse, allerdings zu einem gewissen Preis: Die verwendete Xapian-Datenbank wird recht schnell zu einem großen Brocken, da diese auf Geschwindigkeit und nicht geringen Platzbedarf optimiert ist. Mit seiner grafischen Oberfläche spielt Recoll auch ohne lange Einarbeitungszeit seine Stärken bei komplexen Suchabfragen aus. Leider fehlt eine durchgehende Übersetzung aller Menüpunkte. (lmd) (lmd)