単純なケースは、ANY
を使用した単純なクエリで解決できます。 構築して~*
:
SELECT *
FROM tbl
WHERE col ~* ANY (string_to_array('The ships hung in the sky ... bricks don’t', ' '));
~*
大文字と小文字を区別しない正規表現一致演算子です。 ILIKE
の代わりにそれを使用します そのため、%
を埋めなくても、文字列に元の単語を使用できます。 ILIKE
の場合 。結果は同じです-特殊文字を含む単語を除いて:%_\
ILIKE
の場合 および!$()*+.:<=>?[\]^{|}-
正規表現パターンの場合。驚きを避けるために、どちらの方法でも特殊文字をエスケープする必要があるかもしれません。正規表現の関数は次のとおりです。
- 正規表現またはLIKEパターンのエスケープ関数
しかし、私はあなたが必要とするすべてになるだろうというしつこい疑問を持っています。私のコメントを参照してください。有用な単語ステミングを提供するには、自然言語に一致する辞書を使用した全文検索が必要だと思います...
関連:
- PostgreSQLのINとANY演算子
- PostgreSQLLIKEクエリのパフォーマンスのバリエーション
- PostgreSQLのLIKE、SIMILAR TO、または正規表現とのパターンマッチング