Aufmacher

Recherche-Künstler

Drei Desktop-Suchmaschinen im Vergleich

01.03.2008 Mit der wachsenden Datenflut auf dem PC steigt der Bedarf, die Informationen in den Griff zu bekommen. Die Desktop-Suchmaschinen Beagle, Tracker und Strigi helfen dabei.

Google und Yahoo machen es seit Jahren vor: Großen Datenmengen ist nur mit Suchmaschinen beizukommen, in denen teures Know-how steckt. Sie müssen einerseits flexibel genug arbeiten, um erweiterte Suchanfragen effizient zu bearbeiten, andererseits sollen sie aber auch leicht zu bedienen sein, damit auch der ungeübte Benutzer damit nicht vor lauter Optionen den Überblick verliert. Auch nichtkommerzielle Projekte bieten Volltextsuchmaschinen, die es durchaus mit den Entwicklungen der Großen aufnehmen können.

Beagle

Novell entwickelt seit etwa 2004 eine Desktop-Suche namens Beagle. Das Programm entstand aus der Notwendigkeit heraus, Daten verschiedener Quellen zusammenzutragen und für den Anwender übersichtlich aufzubereiten. Die Anwendung trug ursprünglich den Namen Dashboard, weshalb unter anderem die Beagle-Mailingliste immer noch dashboard-hackers heißt. Die Anwendung scheiterte im ersten Anlauf jedoch daran, dass sie nicht in der Lage war, Abfragen schnell und effizient zu bearbeiten. Das in C# geschriebene Beagle [1] nutzt als Indexer die C#-Implementierung der Lucene-Engine [2] von Apache, was dem Problem Einhalt gebot.

Während für Gnome die grafische Oberfläche Beagle-search (Abbildung 1) die Arbeit vereinfacht, übernimmt in KDE eine GUI namens Kerry diese Aufgabe. Sie kommt unter anderem in OpenSuse und Kubuntu zum Einsatz. Aufgrund seines Alters stellt Beagle heute die ausgereifteste freie volltextbasierte Desktop-Suchmaschine dar. Mitte Dezember brachten die Entwickler die Version 0.3.1 heraus, die als Grundlage dieses Tests dient.

Abbildung 1

Abbildung 1: Beagles Suchdialog dient als zentrale Anlaufstelle für Suchanfragen. Auch Schlüsselwörter wie date unterstützt die Desktop-Suche.

Beagle unterstützt eine Vielzahl von Dateitypen. Seit der Version 0.3.0 enthält die Desktop-Suche ein auf Ajax basierendes Webinterface. Via http://localhost:4000/ geben Sie Suchanfragen an Beagle weiter und erhalten die Ergebnisse in aufbereiteter Form im Webbrowser zurück. Im Test stellte sich heraus, dass Beagle recht sparsam mit den Ressourcen umgeht, was früher nicht immer der Fall war. Besonders mit Mono 1.2.6 reduzierten die Entwickler den Speicherhunger nochmals erheblich.

Tracker

Tracker [3] verwendet statt Lucene entweder QDBM[4] oder SQLite[5]. Das Anfang 2006 von Jamie McCracken ins Leben gerufene Projekt ist komplett in C geschrieben und legt besonderen Wert auf geringen Speicherverbrauch und niedrige CPU-Auslastung. Als weiteres Plus generiert Tracker im Vergleich zu Beagle den Suchindex etwa fünf Mal schneller.

Für Tracker existieren sowohl für Gnome als auch für KDE mehrere Frontends [6]. Tracker selbst besitzt weniger Abhängigkeiten als Novells Desktop-Suche Beagle. Wegen des noch recht geringen Alters gibt sich die Anwendung aber noch nicht so ausgereift wie der Konkurrent. Seit Version 7.10 setzt Ubuntu Tracker als Standard-Desktopsuche ein. Dieser Entscheidung ging jedoch eine hitzige Debatte über das Für und Wider voraus – zuvor setzte Ubuntu auf Beagle.

Zum Test verwendeten wir die Mitte Dezember erschienene Version 0.6.4. Ebenso wie bei Beagle greifen Sie mit Hilfe eines Desktop-Applets für Gnome auf Tracker zu, womit die Installation eines Frontends unter Gnome wegfällt. Tracker erlaubt sowohl das Einstellen des Ressourcenverbrauchs (Abbildung 2) als auch der Indizierungsgeschwindigkeit.

Abbildung 2

Abbildung 2: Das Dialogfenster "Einstellungen" erlaubt Ihnen unter anderem, den Ressourcenverbrauch festzulegen.

Strigi

Strigi [7] setzt ebenfalls auf den C++-Port der Lucene-Engine, kann aber auch mit anderen Backends umgehen, wie etwa mit SQLite oder Hyper Estraier. Das in C++ geschriebene Programm unterstützt bei weitem nicht so viele Dateitypen wie Beagle oder Tracker. Bedenklich stimmt der verschwenderische Umgang von Strigi mit den Systemressourcen, obwohl auf der Homepage des Projektes eigentlich das Gegenteil steht.

Im Test setzten wir Version 0.5.7 ein, die der Autor Ende Oktober vorstellte. Leider gelang es nicht, eine Version aus dem SVN-Repository sinnvoll zu nutzen, da der Snapshot beim Indizieren des öfteren mit einem CLucene-Ausnahmefehler abstürzte.

Strigi dient als Standard-Desktopsuche für KDE 4.0, was angesichts des hohen Ressourcenverbrauchs eher verwundert. Diese Strategie sollten die KDE-Entwickler besser nochmals überdenken. Zum Testen von Suchanfragen verwendeten wir den Qt4-basierenden strigiclient (Abbildung 3).

Abbildung 3

Abbildung 3: Der Strigi-Client ist sehr rudimentär gehalten und umständlich zu bedienen. Er zeigt neben den indizierten Dateien und Wörtern auch die Indexgröße an.

Auf die Plätze …

Die drei Kandidaten ließen wir auf ein Home-Verzeichnis los, das etwa 80 000 Dateien beziehungsweise Ordner enthielt. Bewertet wurden dabei:

  • die Zeit, welche die einzelnen Programme zum Indizieren benötigten,
  • der Ressourcenverbrauch und
  • die Trefferquote bei der anschließenden Suche nach Stichwörtern.

Als Testrechner diente ein IBM Thinkpad T41 mit einem 1,4 GHz schnellen Pentium-Mobile-M-Prozessor (Centrino) und 1,25 GByte Arbeitsspeicher. Ubuntu Gutsy (7.10) stellte das Referenzsystem. Aus Gründen der Chancengleichheit und um eine genauere Messung zu ermöglichen lief jeweils nur ein Suchdienst. Beagle compilierten wir mit Mono 1.2.5.1, da eine neuere Version noch nicht als Paket bereit stand. Strigi verwendete die Lucene-Engine, Tracker nutzte SQLite als Backend.

… fertig, los!

Beagle benötigte zum Erstellen des Index rund sieben Stunden (siehe auch Kasten "Beagle beschleunigen"). Dies erscheint zunächst enorm. Allerdings erlaubt das Programm während des Indizierens ein normales Arbeiten: Die CPU war zu keiner Zeit über 10 Prozent ausgelastet. An Arbeitsspeicher beanspruchte der Beagle-Daemon um die 40 MByte, der Beagle-Helper knapp 30 MByte. Mehr als 70 MByte konnten wir zu keinem Zeitpunkt messen.

Interessant dabei ist die Vorgehensweise: Zunächst indizierte Beagle die E-Mails, erst später alle übrigen Dateien. Der Protokolldatei, die Sie unter ~/.beagle/Log/current-Beagle finden, entnehmen Sie, was der Dämon in der Vergangenheit erledigte. Der erzeugte Index belegte auf der Festplatte 297 MByte.

Beagle beschleunigen

Beagle hält sich beim Erzeugen des Index eher zurück, weswegen er dafür länger braucht als die Konkurrenz. Falls die Prozedur beschleunigen möchten, exportieren Sie die Umgebungsvariable: export BEAGLE_EXERCISE_THE_DOG=1. Allerdings müssen Sie damit rechnen, dass Beagle dann wesentlich mehr Ressourcen benötigt.

Tracker starteten wir im normalen Modus: Weder den RAM-Verbrauch noch die Indizierungsgeschwindigkeit drosselten wir in den Einstellungen. Das Programm erledigte die Aufgabe in dieser Konfiguration wesentlich flinker als Beagle und war bereits nach 80 Minuten fertig. Die CPU lastete der Dämon durchschnittlich zu 25 Prozent aus, der Speicherverbrauch stieg im Verlauf von 12 bis auf knapp 40 MByte. Nach einem Neustart des Dämons pendelte er sich wieder bei 12 MByte ein, was unter Umständen auf Speicherlecks deutet. Tracker indizierte rund eine Stunde lang Dateien, optimierte den Index im Anschluss für weitere zehn Minuten und verbrachte die restliche Zeit mit dem Indizieren der E-Mails. Nach Abschluss umfasste der Index 299 MByte.

Der Strigi-Dämon arbeitete beinahe so schnell wie Tracker: Er benötigte etwas mehr als 90 Minuten. Der Ressourcenverbrauch war, wie bereits angedeutet, allerdings um einiges höher als bei den beiden Mitstreitern: Nicht selten stieg die CPU-Last auf über 90 % und ließ den Lüfter des Laptops laut aufheulen. Bei der Belegung des Arbeitsspeichers bewegte sich Strigi ungefähr gleichauf mit der Konkurrenz: Während der Indexerzeugung stieg der Verbrauch von anfangs etwa 28 MByte auf schließlich durchschnittlich 34 MByte. Im Leerlauf benötigte Strigi immer noch 32 MByte – etwa so viel wie Beagle.

Einen echten Ausreißer erlaubt sich das Programm allerdings bei der Belegung des Festplattenplatzes. Mit knapp 760 MByte setzte sich Strigi an die "Spitze" aller Testkandidaten. Der Index wuchs bei einem erneuten Start zusätzlich auf über das Doppelte. Der recht laxe Umgang mit den Ressourcen spricht daher nicht gerade für Strigi. Umso verwunderlicher erscheint, dass KDE 4 auf die Speicherschleuder setzt, soll die neue Major-Version des Desktops doch das alte Vorurteil des "Ressourcenmonsters" ausräumen. Hier sollte man allerdings der Fairness halber anmerken ist, dass auch Googles Desktop-Suche nicht gerade sorgsam mit dem Arbeitsspeicher umgeht: Bei der Indexerzeugung, die wesentlich länger als bei Beagle dauert, belegen alle beteiligten Prozesse zusammen über 80 MByte.

Die Tabelle "Ergebnisse der Indizierung" enthält alle ermittelten Werte der Desktop-Suchprogramme, darunter auch die indizierten Dateien, E-Mails und Instant-Messaging-Konversationen.

Ergebnisse der Indizierung

Programm Indizierungszeit CPU-Last (Durchschnitt) RAM-Verbrauch (Indizierung) RAM-Verbrauch (Idle) Festplattenbelegung Indizierte Dateien Indizierte E-Mails Indizierte Konversationen
Beagle 420 Minuten <= 10% 40 MByte (beagled) + 30 MByte (beagled-helper) 35 MByte (beagled) + 25 MByte (beagled-helper) 297 MByte 71634 104808 1446
Tracker 80 Minuten 10% – 50% 37 MByte 37 MByte (12 MByte nach Neustart) 299 MByte 70648 111449 1446
Strigi 90 Minuten 20% – 90% 20 – 38 MByte 35 MByte 758 MByte nicht ermittelbar nicht ermittelbar nicht verfügbar

Wer suchet, der findet

Für den Anwender zählen in erster Linie die Suchergebnisse der Programme. Durch das Verwenden von nicht weniger als 28 Schlüsselwörtern ermöglicht Beagle, Suchanfragen zu verfeinern. Eine Übersicht erhalten Sie mit dem Befehl beagle-query --keywords oder im Beagle-Wiki unter [8].

Für Tracker scheint es ähnliche Schlüsselwörter zu geben: Zum Beispiel fördert txt:linux nur Textdateien zu Tage. Jedoch ist das Feature im Tracker-Frontend bei weitem nicht so durchgängig implementiert wie bei Beagle. Nicht selten kommt es daher zu sogenannten "false positives", also Treffern, die eigentlich keine sind.

Außerdem scheint das Tracker-Frontend lange nicht so mächtig auszufallen wie das Äquivalent tracker-search in einem Befehlsfenster. Durch tracker-search -s Emails gnome (siehe Abbildung 4) grenzen Sie die Suchanfrage auf E-Mails ein, was mit dem Frontend nicht gelang. tracker-search --help gibt gültige Schlüsselwörter aus (die bei Tracker "Dienste" heißen). Die Option -l Anzahl limitiert die Anzahl auf eine bestimmte Zahl von Treffer.

Abbildung 4

Abbildung 4: Mit dem Konsolenprogramm tracker-search stellen Sie Anfragen detaillierter, als es mit dem Tracker-Frontend möglich ist.

Das Strigi-Frontend zeigt die Suchergebnisse sehr unübersichtlich, weswegen es sich für den produktiven Einsatz weniger eignet. Die Genauigkeit der Ergebnisse ist somit sehr schwer zu ermitteln. Es bleibt zu hoffen, dass es bald einen besseren Ersatz gibt. Die Tatsache, dass Strigi einen integralen Bestandteil von KDE 4.0 bildet und es auch eine Deskbar-Applet-Anbindung gibt, trösten etwas über die Schwächen hinweg.

Logische Operatoren und mehr

Im Test stellte sich heraus, dass Beagle mit logischen Operatoren am besten umgeht. OR und AND sind die wichtigsten und am öftesten verwendeten Vertreter. Mit dem Minuszeichen schließen Sie Begriffe aus der Suche aus. Zwar dauern solche Suchanfragen dann in einigen Fällen länger, liefern aber eine präzisere Trefferausgabe. Tracker und Strigi ignorieren die Operatoren in den meisten Fällen und liefern nur ungenaue Resultate.

Insgesamt fielen die Ergebnisse bei allen drei getesteten Programmen recht unterschiedlich aus, da jeder Kandidat die Treffer anders gewichtet. Nur durch eine feinkörnige Suche kommen Sie unter Umständen zum selben Ergebnis. Die Tabelle "Suchhilfen" zeigt einen Überblick über die wichtigsten Features.

Suchhilfen

Programm Logische Operatoren Wörter ausschließen Datumsanfragen Suche nach Dateierweiterungen URI-Suche Schlüsselwörter
Beagle Ja Ja Ja Ja Ja Ja
Tracker Nein Nein Nein Ja(*) Ja(*) Ja(*)
Strigi Nein Ja Nein Nein(--) Nein Ja
(*) eingeschränkt, (--) Programmabsturz

Da über Strigi keinerlei Informationen zur Verfügung stehen und im Test alle Versuche fehlschlugen, Features zu überprüfen, nahmen wir an, dass einige davon (noch) nicht implementiert sind. Auch die Mailingliste beziehungsweise Homepage von Strigi lieferte keine Angaben dazu.

Geschwindigkeit

Freilich zählt nicht nur die Treffergenauigkeit, sondern auch die Geschwindigkeit, in der die Programme Suchanfragen beantworten: Kein Anwender wartet gerne mehr als zehn Sekunden auf ein Ergebnis.

Beagle benötigte, abhängig von der Komplexität der Eingabe, zwischen zwei und sieben Sekunden je Suche. Es fällt auf, dass der Daemon speziell bei logischen Operatoren mehr Zeit benötigt. Sehr komplexe Suchanfragen, wie date:2000-2007 -linuxmagazin gnome OR kde -desktop, die in der Praxis eher selten vorkommen, brachten den Suchhund richtig ins Schwitzen und forderten über eine Minute geduldiges Warten. Hier bietet Beagle noch reichlich Platz für Optimierungen. Die CPU-Auslastung während der Suche schwankte zwischen 10 und 80 Prozent.

Tracker arbeitet im Vergleich dazu schneller: Abhängig von der Länge beziehungsweise Komplexität der Suchanfrage erledigte das Programm die Aufgabe innerhalb von zwei bis maximal fünf Sekunden. Die CPU belastet Tracker in den meisten Fällen nur gering, wobei aber Ausreißer nach oben in Richtung der 80-Prozent-Marke vorkamen. Alles in allem geht Tracker hier aber sorgsamer mit der CPU und dem Arbeitsspeicher um als es Beagle tut.

Bei einfachen Anfragen glänzt Strigi: Zwischen einer und drei Sekunden dauerte es, bis das Ergebnis erschien. Auch bei komplexeren Anfragen machte die Desktopsuche eine recht gute Figur. Allerdings ging dies manchmal auf Kosten der CPU, die dann zu knapp 90 Prozent ausgelastet war. Der Speicherverbrauch pendelte sich bei knapp 40 MByte ein.Die Tabelle "Tempo und Ressourcenverbrauch" fasst alle gewonnenen Ergebnisse zusammen.

Tempo und Ressourcenverbrauch

Programm Einfache Anfrage Komplexe Anfrage CPU-Auslastung Speicherverbrauch
Beagle 2 – 4 Sekunden 4 – 7 Sekunden 10% – 80% 47 MByte (beagled) + 25 MByte (beagled-helper)
Tracker 2 – 3 Sekunden 3 – 5 Sekunden < 10% 18 MByte
Strigi 1 – 3 Sekunden 4 – 6 Sekunden siehe Text 38 MByte

Fazit

Beagle ist nach wie vor das Maß aller Dinge, geht es um exakte Treffer bei Suchanfragen. Die neueste Version macht mit exzessiven Speicherverbrauch und einer unangenehmen CPU-Auslastung Schluss. Wer möchte, dem bietet Beagle die Möglichkeit, auf Kosten des Ressourcenverbrauchs das Indizieren zu beschleunigen.

Tracker glänzt durch das schnellste Indizieren in unserem Vergleichstest. In nur 80 Minuten indiziert die Desktopsuche über 70 000 Dateien und mehr als 110 000 E-Mails – allerdings zum Preis einer relativ hohen CPU-Auslastung. Beim Speicherverbrauch zeigt sich das Programm sparsamer als Beagle oder Strigi. Genügend Arbeit gibt es jedoch im Bereich des Frontends, das kaum detaillierte Suchanfragen ermöglicht. Die Trefferquote kommt aus diesem Grund bei weitem nicht an die von Beagle heran.

Mehr zu tun gibt es ohne Zweifel bei Strigi: Der extrem hohe Ressourcenverbrauch während der Indexerzeugung sowie der extreme Umfang des Index (beinahe drei Mal so groß wie bei der Konkurrenz), sprechen für einen dringenden Handlungsbedarf – besonders hinsichtlich KDE 4. Besitzern älterer Rechner raten wir ab, Strigi einzusetzen.

Glossar

C#

Eine von Microsoft entwickelte High-Level-Sprache und Teil der .NET-Strategie. Mit Mono gibt es auch eine Alternativ-Implementierung, die unter Linux funktioniert.

Lucene

Eine durchgängig in Java geschriebene, leistungsfähige Suchengine. Es existieren unter anderem Sprachanbindungen zu C, Perl, Ruby und C#. Lucene kommt in vielen Programme zum Einsatz, darunter auch einigen kommerziellen wie Scalix.

Ajax

Asynchronous Javascript and XML. Der Begriff bezeichnet ein Konzept zur asynchronen Datenübertragung von Webinhalten zwischen einem Client (Browser) und einem Server. Dabei werden nur die notwendigen Änderungen übertragen, nicht der gesamte Inhalt.

QDBM

Eine Bibliothek zum Verwalten von Datenbanken [6]. Im Gegensatz zu SQL-Datenbanken gibt es keinerlei Tabellen, sondern nur Schlüssel/Wert-Paare.

SQLite

Eine kleine, aber sehr performante SQL-Datenbank [7], die unter anderem in der neuen Version von Firefox für die Lesezeichenverwaltung eingesetzt wird.

Tip a friend    Druckansicht beenden Bookmark and Share
Kommentare