AlloyDB Omni は、GIN インデックスと GiST インデックスのサポートなど、すべての全文検索機能と機能をサポートしています。
全文検索の基本コンセプト
全文検索(FTS)を効果的に実装するには、PostgreSQL がテキストを処理して検索する方法を理解する必要があります。検索の単位であるドキュメントは、通常、テキスト列または行の列の組み合わせです。インデックス構築プロセスは、このドキュメントを解析して、単語(または語彙素、単語の基本形)を行に関連付けます。
このプロセスには、次の方法で未加工のテキストを検索可能な形式に変換する前処理パイプラインが含まれます。
- テキストをトークンに分割する。
- 一般的なストップワードを削除する。
- 単語を語幹に正規化すること。たとえば、「run」は「run」、「runs」、「running」、「ran」の語彙素です。
全文検索を使用するには、特殊なデータ型、演算子、さまざまなインデックス登録戦略(組み込みの PostgreSQL インデックスや高パフォーマンスの RUM インデックスなど)についても学習する必要があります。
PostgreSQL は、2 つの主要なデータ型と一致演算子を使用して FTS を管理します。
tsvector: 検索可能な形式のドキュメント(個別の語彙素の並べ替えられたリスト)を表します。tsquery: 検索キーワードを表します。これには、語彙素を組み合わせることができるブール演算子が含まれます。@@:tsvectorがtsqueryと一致するかどうかを確認し、言語を認識した検索を可能にします。
AlloyDB Omni は、組み込みの PostgreSQL がサポートする全文検索のすべてのインデックス タイプをサポートしています。インデックスの選択は、検索速度、インデックスのビルド時間、更新速度、必要な特定の検索機能(フレーズ検索や関連性ランキングなど)のバランスによって異なります。
AlloyDB Omni で RUM インデックスを作成して使用する方法については、AlloyDB for PostgreSQL で RUM インデックスを作成して管理するをご覧ください。
全文検索とセマンティック検索を組み合わせる
最も強力な検索実装では、RUM インデックスを使用した全文検索とベクトル検索を組み合わせることがよくあります。ハイブリッド検索を使用して、セマンティック理解と正確なキーワード マッチングの強みを統合し、異なる結果セットを統合して包括的なランキングを作成します。
たとえば、e コマース アプリケーションでは、まず RUM を使用した全文検索で「ランニング シューズ」などの特定のキーワードを含む商品を見つけ、ベクトル検索を使用して「長距離トレーニング用の快適な靴」などのユーザーのより詳細なクエリとの意味的類似性に基づいて結果を見つけることができます。次に、データベースは、Reciprocal Rank Fusion(RRF)アルゴリズムを使用して、両方の検索コンポーネントのランク付けされた結果を 1 つの統合リストに融合し、最終的なランキングを生成します。