Kategorien
Elasticsearch

Elasticsearch Completion Suggest zeigt nur Ergebnisse vom Anfang des Strings an

Wenn man ein Autocomplete mit Elasticsearch mit Realtime „Search-As-You-Type“ Funktionalität bauen will, bietet Elasticsearch ein sehr schnelles Completion Suggest an.

Das Problem ist, dass damit nur Ergebnisse erzielt werden können, die am Anfang des Strings liegen:

Ein Suche nach „Jackson“ findet nicht den Eintrag „Michael Jackson„. Oder eine Suche nach „Thiller Michael Jackson“ findet nicht „Michael Jackson Thriller„.

Die Lösung ist: Es ist schlichtweg nicht möglich mit dem Completion Suggest dies zu bewerkstelligen, da der Algorithmus dies nicht unterstützt.

Um trotzdem die passende Ergebnisse zu bekommen, habe ich  die Daten für das Autocomplete über denselben Query, wie für die Suchergebnisse generiert. Dies ist zwar Performance mäßig schlechter, aber die Ergebnisse des Autocomplete und der Suchergebnisse nach dem Abschicken stimmen auf jeden Fall überein und iritieren den User nicht.