Volltextsuche für WordPress im Vergleich

19. April 2011

Dieses Blog wird mit WordPress betrieben. Und weil Suchlösungen das Hauptthema sind, sollte das Blog auch über eine vernünftige Suche verfügen. Leider ist die WordPress-Suche nicht sehr gut. WordPress lässt sich aber über Plugins einfach erweitern. Und daher ist es keine Überraschung dass es einige fertige Lösungen gibt. Verschiedene Optionen habe ich mal ausprobiert.

Suchlösungen die ich mir angesehen habe:

Standardsuche

Standard WordPress-Suche

WordPress benutzt eine MySQL-Datenbank um Einträge zu speichern. Wie bei Datenbank-basierte Webanwendungen üblich wird die Suche über eine SQL-Abfrage ausgeführt. Diese Methode liefert alle Blogeinträge die Suchwörter enthalten zurück. Die Resultate sind eine einfache Auflistung die nach Datum sortiert sind. MySQL bietet eine Volltext-Funktion, die aber nicht genutzt wird. Diese würde schon etwas bessere Resultate liefern. Dahinzu kommt leider dass auf der Suchresultatenseite die Textausschnitte nur mit den Anfang eines Blogeintrag gezeigt werden, anstatt den relevanten Ausschnitt. Für kleine Websites kann das ausreichend sein, aber hilft den Leser wenig um die Relevanz zu beurteilen.

Sphinx

Wordpress-Suche mit Sphinx

Sphinx ist eine Suchmaschine die hauptsächlich genutzt wird in Verbindung mit Datenbanken. Datenbanken dienen an erster Stelle zur korrekten und vollständigen Speicherung von Daten und sind nicht optimiert zum Suchen. Sphinx versucht die Nachteile von Datenbanken zu beheben. Es liest die Datenbank aus und indiziert die gespeicherten Daten. Vorteil ist dass einerseits damit die Datenbank entlastet wird, anderseits bringt es einige Textanalyse-Techniken mit die ein automatisches Ranking der Relevanz ermöglichen. Dies ist eine wesentliche Verbesserung zur Standardsuche. Außerdem zeigt das Plugin die Suchresultaten mit einen relevante Textausschnitt, was für den Betrachter einsichtlich macht warum ein Blogeintrag als Suchresultat erscheint.

Sphinx bietet in Prinzip auch die Möglichkeit mit Stammwörter wie Faust / Fäuste zu arbeiten. Auch sollten sogenannten Wildcards unterstützt werden, damit man nach Teilen von Wörter suchen kann. Aber das Plugin scheint das nicht zu unterstützen oder die Sphinx-Konfiguration war nicht korrekt. Standard unterstützt Sphinx Englisch und Russisch. Es könnte also sein dass für Deutsch die Konfiguration nicht gepasst hat.

Nachteil von Sphinx ist dass man es separat installieren muss. Und das wird nicht immer eine Option sein für kleinere Blogs.

Lucene

Wordpress-Suche mit Lucene

Die Apache Lucene-Lösung für WordPress setzt auf einer PHP Portierung auf aus dem Zend Framework. Lucene ist mittlerweile zum Standard in der Java-Welt geworden. Es bietet gute Indizierungs- und Abfrage-Möglichkeiten die man bei Bedarf weiter optimieren kann. Das Plugin brauch man nur zu installieren um danach die Indizierung zu starten. Es gibt eine bescheidene Auswahl an Einstellungen. Man kann den Titel und Content „boosten“, damit diese als wichtiger bzw. unwichtiger eingestuft werden. Auch bietet es die Möglichkeit Kommentare und Kategorien mit zu indizieren. An der Gestaltung der Suchresultate ändert das Plugin leider nichts und muss man sich mit der Standard-Darstellung zufrieden geben.

Apache Solr

Wordpress-Suche mit Solr

Apache Solr ist eine Suchserver die Lucene implementiert. Beide Projekte werden seit kurzem auch pararell weiterentwickelt. Die Grundfunktionalitäten sind gleich, aber Solr bietet extra Funktionalitäten wie:

  • Fassetierung
  • Text-Highlighting
  • Stammwörter

Das Plugin nutzt auch diese Funktionalitäten. Besonders die Fassetierung bietet eine echten Mehrwert über andere Lösungen wodurch man die Resultate weiter filtern kann. Auch die Sortierung nach Relevanz oder Datum ist eine sinnvolle Funktion.

Leider funktioniert das Plugin nicht richtig mit den neuen WordPress 3-er Versionen. Auch gibt es kleinere Fehler bei der Abbildung der Fasseten wenn man Lucene-Befehle nutzt. Das Plugin scheint nicht aktiv weiterentwickelt zu werden. Das ist Schade, weil ist viele Möglichkeiten bietet. Auch wie bei Sphinx ist ein Nachteil, dass man Solr separat installieren muss.

Fazit

Die getesteten Plugins liefern alle wesentlich bessere Suchresultaten als die Standardsuche. Aber nur eine vernünftige Technologie hinter der Suche einzusetzen, reicht nicht für eine gute Suche. Der Vergleich zeigt das es große Unterschiede in der Gestaltung der Suchresultatenseite gibt und ein wesentlicher Teil der Suche sein sollten. Das WP Search-Plugin kann man ohne Probleme einsetzen, aber bietet keine besser Suchresultatenseite. Sphinx ist eine gute Lösung wenn man es installieren kann. Das Solr-Plugin bietet einen guten Ansatz, aber man muss Hand anlegen um es korrekt zum Laufen zu bringen.

Die Texte zum Testen stammen von DigBib.Org.

Dieser Blogeintrag basiert auf meinem Vortrag für den Search Meetup Frankfurt.

1 Antworten zu “Volltextsuche für WordPress im Vergleich”

  1. Sehr schöner und kompakter Vergleich. Offenbar fehlt für WordPress (noch) ein modulares und leistungsfähiges Plugin, das mit wenig Aufwand zu installieren ist und (zum Beispiel) schon leistungsfähige Widgets für die Sidebar mitbringt. Auch eine konfigurierbare SERP-Darstellung ist aus meiner Sicht essentiell. Toll wäre ein Interface, das vordefinierte Queries gegen den Sucheserver als WP-Shortcodes verfügbar macht.

    An der Suche-Front sind bei WordPress meinem Gefühl nach noch einige Früchte zu ernten 😉