pg_trgm
トライグラムで文字列の類似度を測るPostgreSQLの拡張機能。実用上より重要なのは、LIKE '%something%' にインデックスが効くようになる点である。
トライグラムとは連続する3文字のことで、「coffee」はいくつかのトライグラムに分解される。2つの文字列の類似度は、共通するトライグラムの割合で定義される。これにより「ほぼ同じ単語」を安価に近似でき、タイプミス、語尾の違い、文字の入れ替わりにも対応できる。実用面での利点はインデックスのサポートだ。トライグラムに対するGINインデックスがあれば、前後両方にワイルドカードを付けた検索でも、テーブル全体を読まずにインデックスを使える。通常はこれが不可能である。正規表現にも同じことが当てはまる。多くのアプリケーションでは、これで十分であり、別個の検索エンジンは不要になる。% 演算子の閾値は pg_trgm.similarity_threshold で設定する。