pg_trgmの類似度算出関数

pg_trgmの類似度算出関数

正規化テキスト型 ntext を全文検索系と連携させてみようと思い、pg_trgmを調べてみたらpg_trgmにも類似度算出を行うっぽい similarity関数があったのね・・・。
もしかすると、この関数をうまく使うとpg_trgm検索でもスコアっぽいものが生成できるのかしらん(スニペットはともかくとして)。
もともとpg_trgmを調べたのは、自前でLIKEを組み込むのが面倒だったので、pg_trgmでLIKE相当が代替できるならLIKE実装をやめよう、と思っていたのが発端だったが・・・

気になるのはこの一文かな。

トリグラム一致に基づくASCII英数字の類似度の決定に関する関数と演算子も提供します。

元々pg_trgmを中間一致検索に使用する場合に、「KEEPONLYALNUM オプションを OFF にしてモジュールをリビルド」する必要がある(Let's postgres テキスト検索の方法とインデックスより)のだけど、このオプションをOFFにすれば、類似度算出関数も、非ASCII文字に対して正しく動作するようになるのかな?後で検証してみよう。

ntextとの組み合わせ

ntextに自前で組み込んだ 類似度算出関数との挙動の違いを確認しなくちゃいけないな。
しかも、これを使って僅かなスペルミスがあっても検索できるようにできると書いてある。その方式も含めてもうちょっと調査して、ntextと全文検索系のより良い連携方法を考えてみなくては・・・。

ntext型を作る前にもうちょっと調べておくべきだった・・・orz