メインコンテンツへスキップ
vsql_trgm は PostgreSQL の pg_trgm の移植です。文字列を 3 文字の断片に分け、2 つの文字列がどれだけの断片を共有しているかで採点するため、綴りを間違えた検索語でも目的の行が見つかります。LIKE では厳しすぎ、全文検索では粗すぎるときに使用します。

インストール

インストールスクリプト、Docker イメージ、またはリリース tarball で VillageSQL をインストールした場合、vsql_trgm.veb はすでにサーバーの lib/veb/ ディレクトリにあります。1 つのステートメントでサーバーにインストールします。
インストールされたことを確認します。
自分でビルドするには、リポジトリのビルド手順に従ってください。

追加される機能

3 つの関数ファミリーを追加します。通常のファミリーは 2 つの文字列全体を比較します。word ファミリーは 2 番目の文字列の中で最もよく一致する部分文字列を見つけます。strict word ファミリーは同じことを単語の境界に揃えて行います。各ファミリーには独自のデフォルトのしきい値があります。

例

小さな名前テーブルを作ります。
誰も入力していない綴りで検索し、返ってきたものをランク付けします。
Peter Brown は共有するトライグラムが少なすぎて 0.3 に届かないため、決して現れません。何が比較されているかを見るには、トライグラムそのものを要求します。
パディングのスペースは意図的なものです。これにより、文字列の先頭と末尾がスコアに寄与します。
vsql_trgm はセッション状態を保持しないため、PostgreSQL の set_limit() に相当するものはここにはありません。代わりに、望むしきい値を trgm_similar_threshold() に渡してください。また、類似度フィルターはすべての行を読み取るため、大きなテーブルに対して実行する前に計測してください。

関連項目