- Rust tabanlı bir Postgres eklentisi olarak tam metin aramayı geliştirir
- Modern arama motorlarının kullandığı BM25 algoritmasını temel alır (arama sonuçlarının alaka puanını hesaplar)
- Postgres'in şu anda kullandığı
tsvector tabanlı aramada iki sorun var
- Performans: büyük ölçekli tablolarda arama yavaştır
- İşlevsellik: fuzzy search, alaka ince ayarı veya BM25 alaka puanı gibi işlemleri desteklemez
- Amaç, Postgres ile ElasticSearch'ün arama yetenekleri arasındaki boşluğu kapatarak veri yığınına ElasticSearch benzeri bir hizmet ekleme ihtiyacını ortadan kaldırmak
- pg_bm25'in özellikleri
- %100 Postgres native. Harici bağımlılık yok
- Rust tabanlı Apache Lucene alternatifi Tantivy üzerine kurulu
- 1 milyon satırın üzerinde, Postgres'in varsayılan arama/sıralama fonksiyonları
tsquery/ts_rank ile karşılaştırıldığında 20 kat daha hızlı
- Fuzzy search, aggregation, highlighting ve alaka ince ayarı desteği
- ElasticSearch'ün kullandığı BM25 algoritmasıyla alaka puanlaması
- Gerçek zamanlı arama: yeni veriler manuel yeniden indeksleme olmadan anında aranabilir
3 yorum
Görünüşe göre henüz yalnızca İngilizce destekleniyor; belgelerde de
chinese_compatibletokenizer üzerinde çalışıldığı yazıyor.Ayrıca Docker image boyutu da epey büyük. Neredeyse 8 GB; standart Postgres image’ının 400 MB bile etmediğini düşününce, bunun üstüne acaba ne koymuşlar diye merak ediyor insan...
Güzelmiş...!
Umarım yakında RDS gibi yönetilen DBMS'lerde de desteklenir!