Sphinx Suchengine

Relevante Daten in einem Dickicht von tausend und aber tausend Datensätzen zu finden ist sicher nicht die einfachste Aufgabe. Jeder, der schon einmal versucht hat eine eigene Suchengine zu implementieren wird sicher neidvoll auf die Ergebnisse von professionellen Suchmaschinen wie google.de geschaut haben.

Nun gibt es aber auch eine OpenSource-Engine, die sehr gute Ergebnisse auch bei sehr großen Datenmengen bietet.

Nachdem ich bereits seit einiger Zeit mit dem Gedanken gespielt habe die Engine einmal auszuprobieren, hab ich nun endlich einen ersten Eindruck gewinnen können. Demnächst werde ich mich noch intensiver damit beschäftigen.

Die Installation ist auf einem Unix-System denkbar einfach.
Den Quellcode von der offiziellen Download-Seite herunterladen und entpacken.

Dann kann mit den Standard-Make-Tools die Engine kompiliert werden:

./configure
make
sudo make install

Ohne Angabe eines Prefixes kann wird alles nach /usr/local installiert. Unter /usr/local/etc befindet sich dann eine Beispielhafte konfigurationsdatei, die erst einmal kopiert werden sollte:

cp sphinx.conf.dist sphinx.conf

Nachdem dann in der Datei alle Einträge entsprechend den eigenen Bedürfnissen angepasst wurden, kann man zum testen das Beispiel-Dump einspielen:

mysql -u test -p < /usr/local/etc/example.sql

Damit die Daten später sehr schnell gefunden werden, müssen sie natürlich noch indiziert werden. Folgender Aufruf erledigt das:

/usr/local/bin/indexer --all

Nun kann man die Test-Daten bereits abfragen.

 /usr/local/bin/search test

Die Suche läuft später dann als eigener Deamon-Prozess und kann u.a. von PHP über eine eigene API eingebunden werden.

Wie sich die Suche bei größeren Datenmengen verhält und wie die Anbindung an PHP von statten geht werde ich demnächst hier im Blog berichten.

These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Technorati
  • MisterWong
  • del.icio.us
  • Digg
  • BlinkList
  • Furl