Sphinx Volltextsuche

Die Volltextsuche Sphinx erlaubt die Indizierung beliebiger Datenbestände. Dabei kommt sie nicht nur mit Millionen von Dokumenten zurecht, sondern liefert auch gute Resultate.

Zu den wichtigsten Bestandteilen von Webapplikationen oder Online-Angeboten gehört eine gute Suchmaschine. Doch wer nicht gerade Google für sich suchen lassen möchte, hat keine allzu einfache Aufgabe vor sich. Denn die wenigsten der freien Datenbanken bringen leistungsfähige Werkzeuge zur Volltextsuche mit. So unterliegt beispielsweise die Volltextsuche von MySQL, die eine der bekannteren ist, etlichen Restriktionen:

- Sie kann nur mit der Storage Engine MyISAM eingesetzt werden.
- Ein Volltext-Index kann nicht über mehrere Tabellen oder Datenbanken hinweg verwendet werden.
- Die verwendeten Algorithmen sind verhältnismässig primitiv.
- Sie ist langsam.

Sphinx (SQL Phrase Index) steht unter der GPL und läuft auf so ziemlich jedem unixoiden Betriebssystem, auf dem ein C++-Compiler wie g++ vorhanden ist. Windows wird ebenfalls unterstützt, unterliegt aber einigen Einschränkungen. Sphinx ist grundsätzlich ein relativ einfach aufgebautes Werkzeug. Es besteht aus einem Indexer, der sich um das Indizieren der Datenbestände kümmert, dem Daemon searchd, der die Suchanfragen beantwortet, und dem Kommandozeilenwerkzeug search, das einem eine einfache Möglichkeit bietet, um Suchanfragen an den Sphinx-Daemon zu stellen.

Der Funktionsumfang ist dabei durchaus beachtlich. Neben einer hohen Geschwindigkeit beim Indizieren (bis zu 10 Megabyte pro Sekunde) und beim Suchen verträgt Sphinx auch grosse Textmengen von Dutzenden Gigabytes, wobei die Suchalgorithmen so ausgelegt sind, dass sie auch bei verhältnismässig kurzen Texten wie Blog Postings gute Resultate und Gewichtungen liefern. Gefunden werden können nicht nur Datensätze, die sämtliche Suchbegriffe enthalten, sondern auch solche, die nur einen Teil der Suchbegriffe oder komplette Phrasen enthalten. Zusätzlich besteht die Möglichkeit, Suchbegriffe mit boolschen Operatoren oder einer Sphinx-eigenen Sprache zu verwenden, wobei letztere sogar sogenannte Proximity Searches erlaubt.

Dabei kann definiert werden, wie weit die gesuchten Begriffe in den Resultaten maximal auseinander liegen dürfen. Wer das Finden von Informationen noch einfacher machen will, kann dies mit Hilfe von frei definierbaren Listen von Stopwörtern, einer Eingrenzung der Wortlänge und Textanalysefunktionen wie Stemming erreichen. Stemming bringt Wörter in ihre Grundform, so dass bei der Suche nach «gelesen» auch Datensätze mit dem Wort «lesen» gefunden werden – allerdings werden diesbezüglich erst die Sprachen Englisch und Russisch unterstützt. Zudem können mit Hilfe von Soundex auch ähnlich klingende Wörter wie «Hahn» und «Bahn» gefunden werden, was eine vereinfachte Form von Googles Funktion «Meinten Sie» darstellt.

weiter lesen... http://www.infoweek.ch/archive/ar_single.cfm?ar_id=19227&ar_subid=3&sid=0

Download: http://www.sphinxsearch.com/