6 puan yazan GN⁺ 2023-07-13 | 1 yorum | WhatsApp'ta paylaş
  • PostgreSQL, kendi arama motorunuzu oluşturmak için bileşenler sunar
  • Başlıca bileşenler tsvector ve tsquery veri türleri, eşleşme operatörü @@, eşleşme sonuçlarını sıralama fonksiyonları ve GIN indeks türüdür
  • tsvector, normalize edilmiş sözcük dağarcığını ve özgün metindeki konumlarını saklar
  • tsquery, normalize edilmiş sorguyu temsil eder ve mantıksal operatörler kullanarak birden fazla terimi birleştirebilir
  • GIN indeks türü, tsvector üzerinde verimli sorgulama için kullanılır
  • ts_rank ve ts_rank_cd, terim sıklığını ve yakınlığı dikkate alan sıralama fonksiyonlarıdır
  • İlgililik ayarıyla arama sonuçları belirli ölçütlere göre özelleştirilebilir
  • Sayı, tarih ve tam değer artırıcıları sıralama puanına eklenebilir
  • Sütun ağırlıkları atanarak arama sonuçlarında belirli terimler önceliklendirilebilir
  • Başlık sütununda setweight kullanmak, "jedi" kelimesini içeren film başlıklarının sıralamasını yükseltir
  • PostgreSQL doğrudan bulanık aramayı veya yazım hatası toleransını desteklemez, ancak benzerlik ya da Levenshtein mesafesi kullanılarak uygulanabilir
  • Kullanıcıların arama kapsamını daraltmasına yardımcı olan fasetli arama, kategori tanımları veya algoritmalar kullanılarak PostgreSQL'de uygulanabilir
  • Makale, Elasticsearch ile ayrıntılı karşılaştırmanın 2. bölümde yapılacağını belirterek sona eriyor

1 yorum

 
GN⁺ 2023-07-13
Hacker News görüşleri
  • PostgreSQL ile Elasticsearch'ü karşılaştıran ikinci bölümü merakla bekliyorum.
  • CRUD ve arama için PostgreSQL ile Elasticsearch'ü senkronize etme çabasını hafife aldım.
  • Arama motorlarının hızlı arama hızına ihtiyacı vardır. Bu yalnızca teoride önemli olan bir şey değildir.
  • Temel CS algoritmaları ve donanım kullanımıyla temel bir veritabanı ve arama motoru kolayca oluşturulabilir.
  • Aramanın öznel niteliği en büyük zorluktur.
  • Postgres, ilgili içeriği bulmak için embedding'ler aracılığıyla pgvector ile birleştirilebilir.
  • Postgres içi arama CPU yükü açısından ağırdır ve işlem güncellemelerine öncelik verilmelidir.
  • ES ve Solr kümeleri, yeniden indeksleme sırasında yüksek CPU kullanımıyla çalışır.
  • Arama, özyinelemeli join'ler ve vektörler için PG uzantıları yan projeler için eğlenceli ve basittir.
  • SQLite da gelişmiş indeksleme ve kök bulma özellikleri sunar.
  • İş mantığını veritabanına soyutluyor, ancak bunun trade-off'larından bahsedilmemiş.
  • Belirli yer imlerine eklenmiş siteler için özel bir arama motoru çalıştırmayı düşünüyorum.
  • Postgres/Elasticsearch ile ticari bir çözüm arasında seçim yapmanın gerekip gerekmediğini merak ediyorum.
  • "Gelişmiş" kelimesi olumlu bir gösterge olarak kabul edilir.