- Rust-basierte Postgres-Erweiterung zur Verbesserung der Full-Text-Suche
- Basierend auf dem BM25-Algorithmus, den moderne Suchmaschinen verwenden, um den Relevanz-Score von Suchergebnissen zu berechnen
- Die aktuelle
tsvector-basierte Suche von Postgres hat derzeit zwei Probleme
- Performance: Die Suche in großen Tabellen ist langsam
- Funktionsumfang: Unterstützt weder Fuzzy Search noch Relevanz-Tuning oder BM25-Relevanz-Scores
- Ziel ist es, die Lücke bei den Suchfunktionen zwischen Postgres und ElasticSearch zu schließen, damit kein Dienst wie ElasticSearch zusätzlich in den Daten-Stack aufgenommen werden muss
- Funktionen von
pg_bm25
- 100 % Postgres-native, ohne externe Abhängigkeiten
- Basierend auf Tantivy, einer in Rust geschriebenen Alternative zu Apache Lucene
- Bei mehr als 1 Million Rows 20-mal schneller als die Standardfunktionen
tsquery/ts_rank von Postgres für Suche/Sortierung
- Unterstützt Fuzzy Search, Aggregationen, Highlighting und Relevanz-Tuning
- Relevanz-Scoring mit dem BM25-Algorithmus, den ElasticSearch verwendet
- Echtzeitsuche: Neue Daten sind sofort durchsuchbar, ohne manuelles Reindexing
3 Kommentare
Es scheint bisher nur Englisch zu unterstützen, und in der Dokumentation steht, dass an einem
chinese_compatible-Tokenizer gearbeitet wird.Zusätzlich ist die Größe des Docker-Images ziemlich groß. Fast 8 GB — wenn man bedenkt, dass das unveränderte Postgres-Image nicht einmal 400 MB groß ist, fragt man sich, was sie da überhaupt alles obendraufgepackt haben ...
Klingt gut...!
Es wäre toll, wenn das bald auch von verwalteten DBMS wie RDS unterstützt würde!