Back to posts

Volltextsuche

Ha! Dank Eurer Hilfe konnte ich heute in einer Nacht-Nebel-Nebenher-Aktion eine Kiste anmieten, die jetzt die Volltextsuche übernimmt. Ich hab das noch nicht durchgearbeitet, aber ein Teil der Websuche und der API laufen bereits darüber.

Wie kommt's? Gestern Abend viel mir (und anderen) auf, dass die Seite nicht mehr recht antworten wollte. Fehlermeldungen, wenn überhaupt. Ein Blick auf die Datenbank ergab das Drama:

Jemand hatte nach "Das Podcast Ding" gesucht. 

Und? Tja... das hat die Volltextsuche der MariaDB umgebracht. 10(!) Minuten dauerte der Query und der Grund liegt auf der Hand... es ist das Wort "Podcast". Wenn ich in allen Episoden (knapp 2,5Mio) nach dem Wort Podcast suche, dann ist das ne Menge Mist, der da läuft. Mit der eher gering dimensionierten Datenbankkiste war das nicht zu machen.

Sicher. Mehr Eisen, die Datenbank noch tunen und die Queries polieren. Aber im Ernst: In der Größenordnung will man das nicht auf einer SQL-Datenbank machen. Deshalb: Elasticsearch!

Ich hatte vor ein paar Wochen schon ein paar Erfahrungen damit gesammelt, ohne wirklich zu wissen, was ich da tue. Das hat sich nicht grundlegend geändert, aber die Ergebnisse sind jetzt schon großartig.

Die ES-Instanz wird aktuell noch nicht für alle Suchanfragen oder Anwendungsfälle genutzt, ich bin mir auch nicht sicher, ob das sinnvoll ist. Aber für alle echten "unscharfen" Queries (Suchfeld auf der Webseite, Suche in der API nach einem Begriff) ist das eingeschaltet. Die Geschwindigkeit ist enorm. Was vorher teils über 20s brauchte, ist jetzt in unter einer Sekunde da. 

Es wird sicher noch einen Haufen unrunder Stellen geben, aber das musste jetzt schnell gehen. 

Vielen Dank Ihr Lieben, das könnt Ihr Euch auf die Fahnen schreiben :)

lg

Christian