Verbessern Sie Ihre On-Site-Suchfunktion mit Elasticsearch

Eine bessere Suchfunktion macht mehr Besucher zu zahlenden Kunden.

Beispiel einer Live-Suche in einem Online-Shop

Ausgangssituation

Viele große Internetportale und Online-Shops verfügen über eine Suchfunktion, mit der die Website bequem durchsucht werden kann. Der Besucher soll die Seite nicht verlassen müssen, sondern mit der integrierten Suchmaschine schnell die relevanten Dokumente (Texte, Artikel, Produkte, Downloads) finden. Dabei wird oft nur nach einem oder wenigen Stichworten gesucht, die beispielsweise in einer Überschrift oder einem Text enthalten sind.

Eine solche Volltextsuche wird zu Beginn oft direkt über eine Datenbank-Suche implementiert. Solange die Anzahl der Datenbank-Einträge verhältnismäßig klein ist (aber zu groß, als dass ein Besucher alle Einträge selbst durchsuchen würde), stellt dies kein Problem dar. Wird die Anzahl der Datensätze sehr groß, kann eine klassische, direkt in der dafür nicht optimierten Datenbank ausgeführte Volltextsuche schnell an die Grenzen des verwendeten Servers stoßen und nur sehr langsam Ergebnisse zurückliefern.

Ein weiterer Nachteil einer simpel programmierten Suche ist darüber hinaus, dass sie schon bei kleinen Vertippern keine Ergebnisse mehr findet. Fehlerhafte Eingaben entstehen beispielsweise auch, wenn Benutzer die genaue Schreibweise eines Eigennamen nicht kennen. Wenn die verwendete falsche Schreibweise nicht auch in der Datenbank hinterlegt ist, bleibt auch hier die Liste der Suchergebnisse leer.

  • Volltextsuche
    Bei der Volltextsuche sollen komplette Datensätze (zum Beispiel bei einem Online-Shop aus Überschrift, Kurz- und Detail-Beschreibung, Funktionen, Preis) nach einem einzelnen Begriff durchsucht werden.
  • Datenbanksuche
    Relationale Datenbanksysteme (zum Beispiel in MySQL, MSSQL, Oracle) sind für die sichere und konsistente Speicherung optimiert. Während eindeutige Abfragen problemlos möglich sind, sind beispielsweise Pattern Matching-Anfragen (LIKE) oft vergleichsweise langsam. Für solche und andere komplexe Anfragen bietet Elasticsearch performante Lösungen.
  • Performance-Probleme
    Wenn viele Datensätze durchsucht werden müssen und dabei jeder Eintrag einzeln analysiert werden muss, kann dies die Anzeige der Ergebnisse stark verzögern und belastet den verwendeten Server, sodass für andere Aufgaben und Benutzer weniger Leistung zur Verfügung steht. Durch den optimierten Einsatz von Elasticsearch kann der Server entlastet werden!
  • Tippfehler-Toleranz
    Besucher sind oft schnell frustriert, wenn sie auf einer Seite nicht finden, was sie suchen. Ein Tippfehler geschieht schnell und ist manchmal nur beim genauen Hinsehen zu erkennen. Umso besser, wenn trotzdem das gewünschte gefunden wird!
  • Fuzzy Search
    Fachbegriff für eine Ähnlichkeitssuche, bei der auch Falsch-Eingaben und die Verwendung von Plural-Formen (obwohl in einem Text nur die Singular-Form verwendet wird) zu den richtigen Ergebnissen führen.

Ziel

Eine intelligente Suchfunktion soll auch bei kleinen Eingabefehlern den Besucher auf das richtige Ziel lotsen. Gerade wenn die Zahl der zu durchsuchenden Dokumente sehr hoch ist, soll die Suche den Server wenig belasten und das Ergebnis möglichst schnell anzeigen.

Ein häufiges nebenläufiges Ziel ist die Erweiterung des omnipräsenten Suchfeldes um eine Live-Suche mit Auto-Vervollständigung, bei der schon während der Eingabe des Suchbegriffs die ersten Suchergebnisse angezeigt werden. Dies kann nur bei einer ausreichend performanten Suchfunktion funktionieren, da im Extremfall pro Zeichenanschlag eine neue Suchanfrage gestellt wird.

  • Live-Suche
    Noch während der Benutzer seinen Suchbegriff eingibt, werden schon Ergebnisse angezeigt. So erhält der Benutzer eine Rückmeldung, wie weit der Suchbegriff noch ergänzt werden muss. Die Vorschläge können auf dem indizierten Datenbestand oder auf vorherigen Suchvorgängen anderer Nutzer basieren.
  • Auto-Vervollständigung
    Wie bei der Live-Suche wird während der Eingabe diese analysiert und dem Benutzer ein sinnvoller Suchbegriff vorgeschlagen.
  • Suchvorschläge
    Beim Aktivieren des Suchfeldes erhält der Benutzer noch vor der Eingabe des ersten Zeichens Ideen, wonach er suchen kann. Diese können automatisch aus den häufigsten Suchen anderer Benutzer generiert oder redaktionell bestimmt werden.
  • Suchergebnisse sofort
    Die sofortige Anzeige von Suchergebnissen bei der Live-Suche vermittelt dem Benutzer einen guten ersten Eindruck über weitere Ergebnisse, die beim verwenden einer Detailsuche möglich sind.

Lösung

Wir empfehlen die Verwendung der Such-Software „Elasticsearch“; diese Freeware basiert auf der Bibliothek „Apache Lucene“. Elasticsearch ist für die Aufgabe optimiert, Dokumente schnell zu indizieren und Suchergebnisse auszugeben. Dabei werden auch komplizierte Suchmuster unterstützt.

Mit einer guten „unscharfen“ Suchfunktion werden dem Benutzer kleine Rechtschreibfehler verziehen, sodass er trotzdem zu einem sinnvollen Ergebnis geführt werden kann. Durch Bildung von „Facetten“ können Suchergebnisse bequem von Benutzer weiter beispielsweise auf Kategorien oder andere Dokumenten-Eigenschaften eingegrenzt werden, ohne dass dabei die Suchfunktion verlassen werden muss. Wer eine ortsabhängige Suche benötigt, ist mit Elasticsearch ebenfalls gut aufgehoben, da hiermit eine sehr genau und schnell arbeitende Umkreissuche implementiert werden kann.

Voraussetzung für eine effiziente Verwendung von Elasticsearch ist die saubere Vorbereitung der möglichen Suchanfragen und Anforderungen an die Suchfunktion und die sorgfältige, nachhaltige Konfiguration der Dokumentenstruktur in Elasticsearch. Anschließend gilt es, die vorhandenen Datensätze in die Suchmaschine zu übertragen und die Suchfunktion in der Internetseite zu implementieren.

Dank der hohen Geschwindigkeit von Elasticsearch ist es gut und sinnvoll möglich, eine Live-Suche einzurichten, sodass den Benutzern schon während sie den Suchbegriff in das Suchfeld eingeben, erste Ergebnisse angezeigt werden. Auch die Darstellung dieser Suche mit Auto-Vervollständigung bietet eine Vielzahl an Möglichkeiten, die Integration von Bildern in die aufklappende Liste der Ergebnisse ist nur eine Variante, die Attraktivität dieser Funktion zu steigern.

Eine intelligente Suchfunktion soll auch bei kleinen Eingabefehlern den Besucher auf das richtige Ziel lotsen. Gerade wenn die Zahl der zu durchsuchenden Dokumente sehr hoch ist, soll die Suche den Server wenig belasten und das Ergebnis möglichst schnell anzeigen.

  • Elasticsearch
    Elasticsearch ist eine Open Source-Such-Engine, welche in Echtzeit Suchvorgänge und Analysen durchführen kann.
  • Apache Lucene
    Apache Lucene ist eine Software-Bibliothek zur Volltextsuche und die Basis von Elasticsearch, aber auch Apache Nutch und Solr.
  • Such-Index
    Beim Indizieren von Dokumenten und Datensätzen werden die darin enthaltene Daten so aufbereitet, dass sie schnell durchsucht werden können. Dies geschieht nach vorher festgelegten Regeln, die sich an den benötigten Such-Schemata orientieren.
  • Unscharfe Suche
    Ein Suchalgorithmus für eine Ähnlichkeitssuche, damit auch (zum Beispiel durch Tippfehler) von den indizierten Wörtern leicht abweichende Suchbegriffe gefunden werden können. Eine solche Fuzzy Search wird beispielsweise durch die Nutzung von N-Grammen (Ngrams) ermöglicht.
  • Facetting
    Beispiel für Facetting Facettieren der Suchergebnisse bedeutet, diese anhand von Eigenschaften in unterschiedliche Kategorien einzuteilen, mit denen die Benutzer die Ergebnisse weiter verfeinern können. Beispiel hierfür sind eine Auswahl von Preisbereichen, verfügbaren Farben oder Größen.
  • Umkreissuche
    Mit einer Umkreissuche (auch Geo-Suche) werden die Ergebnisse auf solche eingeschränkt, die sich im Umkreis um einen (zum Beispiel über eine Postleitzahl) angegebenen Ort befinden. Auch die Sortierung nach der Entfernung wird damit ermöglicht.
  • Scoring
    Gerade bei einer unscharfen Suche passen einige Suchergebnisse besser als andere. Dies spiegelt sich in der von Elasticsearch vergebenen Punktzahl (engl. score) wieder, nach der die Ergebnisse häufig sortiert werden. Sollen bestimmte Dokumente bevorzugt, weiter oben in der Ergebnisliste angezeigt werden, lässt sich dies über einen individuell angepassten Score realisieren.

Ihr Partner für Elasticsearch

Wir unterstützen Sie dabei, die richtige Lösung für Ihre Such-Herausforderung zu finden und sie mit Elasticsearch zu verbessern. Sprechen Sie uns an, damit wir Ihre Anforderungen gemeinsam besprechen und professionell mit Elasticsearch umsetzen können!

 

+49 (0) 5334 / 9 77 97 80

Erfolgsstories

Das sagen unsere Kunden:
Torsten Schock
Torsten Schock
Geschäftsführer der Konzert-Kasse GmbH
& Co. KG

Elasticsearch für Konzertkasse.de

Als eine der führenden bundesweiten Ticketing-Plattformen wollen wir unseren Kunden ein möglichst breites Spektrum an Veranstaltungen anbieten. Der Katalogumfang wächst deshalb stetig, ebenso wie die Bedeutung einer nutzerfreundlichen und performanten Suchfunktion.

Neben der stark steigenden Datenmenge und den damit verbundenen Anforderungen an die Server-Infrastruktur, ist eine zentrale Herausforderung für uns die hohe Vielfalt der Inhalte. Künstlernamen verschiedenster Sprachherkünfte müssen auch mit Tippfehlern optimal gefunden werden. Damit unsere Kunden Veranstaltungen in ihrer Nähe finden, verwenden wir außerdem eine integrierte geographische Umkreissuche.

Mit der Einführung von Elasticsearch können wir diesen gestiegenen Anforderungen besser gerecht werden. Die Symbic hat unsere Bedürfnisse genau verstanden, schnell eine maßgeschneiderte Lösung implementiert und steht uns beim Betrieb der Server und der fortlaufenden Optimierung zur Seite.

www.konzertkasse.de