pg_trgm
PostgreSQL-Erweiterung, die Ähnlichkeit zwischen Strings über Trigramme misst und – wichtiger noch – LIKE '%irgendwas%' indexierbar macht.
Ein Trigramm besteht aus drei aufeinanderfolgenden Zeichen; das Wort „Kaffee" zerfällt in eine Handvoll davon, und die Ähnlichkeit zweier Strings wird definiert als der Anteil ihrer gemeinsamen Trigramme. Das liefert eine billige Annäherung an „ungefähr dasselbe Wort", die mit Tippfehlern, Endungen und vertauschten Buchstaben zurechtkommt. Der eigentliche praktische Gewinn ist aber die Indexunterstützung: Ein GIN-Index über Trigrammen erlaubt es, eine Suche mit Platzhaltern an beiden Enden über den Index statt über einen vollständigen Tabellenscan zu beantworten, was sonst unmöglich wäre. Dasselbe gilt für reguläre Ausdrücke. Für viele Anwendungen reicht das völlig aus und macht eine separate Suchmaschine überflüssig. Der Schwellenwert für den Operator % wird über pg_trgm.similarity_threshold eingestellt.