6 ポイント 投稿者 GN⁺ 2023-07-13 | 1件のコメント | WhatsAppで共有
  • PostgreSQL は独自の検索エンジンを構築するための構成要素を提供
  • 主要な構成要素は tsvector および tsquery データ型、一致演算子 @@、一致結果のランキング関数、そして GIN インデックス型
  • tsvector は正規化された語彙と元のテキスト内での位置を保存
  • tsquery は正規化されたクエリを表し、論理演算子を使って複数の用語を組み合わせられる
  • GIN インデックス型は tsvector を効率的にクエリするために使われる
  • ts_rankts_rank_cd は、用語頻度と近接性を考慮するランキング関数
  • 関連性の調整によって、特定の基準に応じて検索結果をカスタマイズできる
  • 数値、日付、正確な値のブースターをランキングスコアに追加できる
  • 列に重みを割り当てることで、検索結果で特定の用語を優先できる
  • タイトル列に setweight を使うと、jedi という単語を含む映画タイトルの順位が向上する
  • PostgreSQL は直接的にはあいまい検索やタイプミス許容をサポートしていないが、類似性や Levenshtein 距離を用いて実装できる
  • ユーザーが検索範囲を絞り込むのに役立つファセット検索は、カテゴリー定義またはアルゴリズムを用いて PostgreSQL で実装できる
  • この記事は、Elasticsearch との詳細な比較を第2部で扱うと述べて締めくくられている

1件のコメント

 
GN⁺ 2023-07-13
Hacker Newsの意見
  • PostgreSQLとElasticsearchを比較する第2部への期待
  • CRUDと検索のためにPostgreSQLとElasticsearchを同期する労力を過小評価していました。
  • 検索エンジンには高速な検索速度が必要です。これは単に理論上だけ重要なことではありません。
  • 基本的なCSアルゴリズムとハードウェアの活用により、基本的なデータベースと検索エンジンを簡単に作成できます。
  • 検索の主観的な性質が最大の課題です。
  • Postgresは、埋め込みを通じて関連コンテンツを見つけるためにpgvectorと組み合わせることができます。
  • Postgresの内部検索はCPU負荷が高く、トランザクション更新が優先されるべきです。
  • ESとSolrのクラスターは、再インデックス作成中に高いCPU使用率で動作します。
  • 検索、再帰結合、ベクトルのためのPG拡張は、サイドプロジェクトには楽しくてシンプルです。
  • SQLiteも高度なインデックス作成とステミング機能を提供します。
  • ビジネスロジックをデータベースに抽象化していますが、トレードオフには触れられていません。
  • 特定のブックマークしたサイト向けにカスタム検索エンジンを動かすことを検討しています。
  • Postgres/Elasticsearchまたは商用ソリューションを選ぶべきかについて興味があります。
  • 「高度」という言葉は肯定的な指標と見なされます.