27 Punkte von xguru 2023-10-11 | 3 Kommentare | Auf WhatsApp teilen
  • 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

 
secret3056 2023-10-13

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 ...

 
cosine20 2023-10-13

Klingt gut...!

 
wnswl 2023-10-11

Es wäre toll, wenn das bald auch von verwalteten DBMS wie RDS unterstützt würde!