関数と演算子pg_trgmモジュールで提供される関数を表F-22に、演算子を表F-23に示します。2つの引数がどの程度似ているかを示す数値を返します。結果はゼロ(2つの文字列にまったく類似度がないことを示す)から1(2つの文字列が同一であることを示す)までの範囲です。与えられた文字列内のすべてのトライグラムからなる配列を返します。(実際これはデバッグ時を除いて役に立つことはほぼありません。%演算子で使用される現在の類似度閾値を返します。これは、例えば2つの単語それぞれでミススペルがあったとしても類似しているものとみなす、その2つの単語間の最低の類似度を設定します。%演算子で使用される現在の類似度閾値を設定します。閾値は0から1までの値でなければなりません(デフォルトは0.3です)。渡された値と同じ値が返ります。2つの引数がset_limitで設定された類似度閾値以上の類似度を持つ場合trueを返します。similarity()の値を返します。インデックスサポートpg_trgmモジュールは、テキスト列全体に非常に高速な類似度検索を行うためのインデックスを作成することができるように、GiSTおよびGINインデックス演算子クラスを提供します。これらのインデックス種類は上記類似度演算子をサポートし、さらにLIKE、ILIKE、~および~*問い合わせにおけるトライグラムを基にしたインデックス検索をサポートします。(これらのインデックスは等価性や単純な比較演算子をサポートしません。通常のB-treeインデックスも必要になるかもしれません。gin_trgm_ops);この段階で、テキスト列tに類似度検索で使用可能なインデックスがあります。典型的な問い合わせを以下に示します。t;これはwordに十分似たテキスト列の値をすべて、類似度の高い順番に返します。インデックスは非常に大規模なデータ群に対する高速操作を行うために使用されます。以下は上の問い合わせを変形させたものです。10;これはGINインデックスではなくGiSTインデックスにより非常に効率的に実装することができます。通常、類似度が高いものの中から少ない個数のみを必要とする場合、1番目の式よりも効率的です。9.1から、これらのインデックス種類はLIKEおよびILIKEにおけるインデックス検索をサポートします。'%foo%bar';インデックス検索は、検索文字列からトライグラムを抽出し、それらをインデックスから検索することによって動作します。検索文字列内のトライグラムが多ければ、よりインデックス検索が効率的になります。B-treeを基にした検索とは異なり、検索文字列の左側が固定されている必要はありません。9.3から、これらの種類のインデックスは正規表現一致(~および~*演算子)に対するインデックス検索もサポートします。'(foo|bar)';インデックス検索は、正規表現からトライグラムを抽出し、それらをインデックスから検索することで動作します。多くのトライグラムが正規表現から抽出される場合、インデックス検索はより効率的になります。B-treeを基にした検索と異なり、検索文字列は先頭一致である必要はありません。LIKEおよび正規表現検索の両方で、トライグラムが抽出されないパターンでは完全インデックススキャンより性能が落ちることに注意してください。GiSTまたはGINインデックスの選択は、他で説明されるGiSTとGINの相対的な性能特性に依存します。まとめとしては、GINインデックスはGiSTインデックスより検索が高速ですが、構築または更新は低速です。このためGINは静的なデータに、GiSTはよく更新されるデータに適しています。テキスト検索の統合トライグラム一致は全文テキストインデックスと一緒に使用する時、非常に有用なツールです。全文検索機構では直接一致しない、ミススペルがある入力単語の認識を行うために役に立ちます。第一段階は文書内で一意な単語からなる補助テーブルを生成することです。documents');ここでdocumentsは、検索対象のbodytextテキストフィールドを持つテーブルです。言語固有の設定を使用するのではなく、to_tsvector関数でsimple設定を使用する理由は、元の(語幹抽出されていない)単語のリストが欲しいためです。次にword列にトライグラムインデックスを作成します。gin_trgm_ops);これで、上の例に似たSELECT問い合わせを使用して、ユーザの検索語内でミススペルのある単語を提示できるようになります。有用な追加された試験は、選択された単語の長さがミススペルのある単語の長さとほぼ同じになることを要求するものです。wordsテーブルは別に生成された静的なテーブルですので、文書群の更新に合理的に追従できるよう定期的に再生成する必要があります。正確に最新状態を維持する必要性は通常ありません。Ltd.による後援です。postgres_fdw。