Eine einfache »Fuzzy«-Search mit PostgreSQL und Kysely
Wie man mit PostgreSQL-Basics eine einfache und robuste Suche implementiert
Chris Kahlefendt
06.06.2025
Einleitung
Wenn du Web-Applikationen baust, wirst du früher oder später eine Suchtfunktion bauen müssen. Egal ob es um employees
, products
oder orders
geht, deine Nutzer erwarten, dass sie schnell finden, was sie suchen.
Der erste Impuls eine Suchefunktionalität einzubauen, ist oft, eine Search-Engine wie Elasticsearch einzusetzen. Für viele Projekte ist das allerdings ziemlich überdimensioniert und bedeutet einen weiteren Dienst, der dauerhaft betreiben werden muss.
Was kann man also tun? Wenn du ohnehin PostgreSQL einsetzt, hast du Glück: Getreu dem Motto „Just use Postgres“ können wir auf die Basics von PostgreSQL zurückgreifen.
In diesem Beitrag zeige ich, wie man mit den integrierten Pattern-Matching-Funktionen und Trigram-Matching von Postgres eine sehr solide Suche bauen kann.
Ich arbeite viel mit TypeScript und Node.js, und bin mittlerweile großer Fan des typsicheren Query-Builder Kysely. Mein Wunsch bei der Suche nach einer Lösung war es, dass sie komplett typsicher ist und sich einfach mit Kysely umsetzen lässt. Da ich mich sehr darüber gefreut hätte, dass mir jemand erklärt, wie eine simple Suche mit Postgres funktioniert und wie man es dann auch noch mit Kysely umsetzt, zeige ich hier immer beides nebeneinander.
Und damit das Ganze auch noch ein bisschen interaktiver ist, führen wir alle SQL-Queries mit PGLite direkt im Browser aus.