Fuzzy Search und "Meinten Sie?" in Apache Solr
In unserer Enterprise 2.0 Plattform setzen wir die Volltextsuchmaschine Apache Solr, die auf Basis der Such-Bibliothek Lucene arbeitet, mit Begeisterung ein. Dieser Beitrag soll beschreiben, wie dem Benutzer mit einfachen Mitteln bei Tippfehlern geholfen werden kann.
Spellchecker Komponente
Mit der SpellCheckComponent [1] teilt Solr Vorschläge zu den vom Benutzer abgesandten Suchtermen mit. Als Grundlage dieser Vorschläge kann ein Feld aus dem Such-Index herangezogen werden.
Die Konfiguration der Komponente ist bereits in der standardmäßigen schema.xml enthalten. So gilt es nur noch das Vorschläge-Verzeichnis aufzubauen. Solr erledigt dies automatisch, wenn der Parameter spellcheck.build=true an die Anfrage angehängt wird. Ein Beispiel wäre:
http://localhost:8983/solr/spell?q=test%20cotent&spellcheck=true&spellcheck.collate=true&spellcheck.build=true
Das muss selbstverständlich nicht bei jeder Abfrage gemacht werden.
Die eigentliche Suchabfrage sieht genau gleich - nur ohne den Parameter - aus. Bemerkenswert ist der Parameter spellcheck.collate=true, der nicht nur das falsch geschriebene Wort, sondern auch gleich die komplett korrigierte Suchabfrage zurück liefert. So liefert die SpellCheck-Abfrage nach "test cotent" als Vorschlag "test content" zurück.
Fuzzy Search
Ein weiteres Mittel, das Apache Solr (genauer gesagt: Apache Lucene) bietet, ist die "Fuzzy Search". "Fuzzy Search" steht für Suche mit einer gewissen Unschärfe.
Durch Anhängen einer Tilde an den eigentlichen Suchterm wird angegeben, dass der Suchterm mit Unschärfe betrachtet werden soll. Dies korrigiert zum Beispiel automatisch Tippfehler, liefert aber auch ähnliche Suchtreffer, die möglicherweise passen könnten, als Ergebnis zurück.
Während bei uns die Suche nach "exnsio" keinerlei Treffer hat, findet die Fuzzy Search nach "exnsio~" alle Dokumente, in denen "exensio" auftaucht.
Verwendung in unserer Enterprise 2.0 Plattform
Sowohl die SpellCheck-Komponente als auch die "Fuzzy Search" bieten eine einfache Möglichkeit, um den Benutzer bei der Suche zu unterstützen und eventuelle Tippfehler (sogar automatisch) zu korrigieren.
In unserer Enterprise 2.0 Plattform verwenden wir beide Möglichkeiten: Wir bieten dem Benutzer Vorschläge wie "Meinten Sie? ..." à la Google und führen gleichzeitig bei wenig Treffern eine Fuzzy Search zum eingegeben Suchterm aus, um dem Benutzer sofort passende Ergebnisse anzeigen zu können.