フレーズ検索機能は、テキスト検索データに統合されています。タイプ tsquery
。 テキスト検索演算子@@
表示するのはtsvector
です 左側にtsquery
右の方へ。そしてtsvector
JSONドキュメントだけでなく、任意の文字タイプから構築できます。
関連:
json
を変換できます またはjsonb
専用のいずれかを使用して、テキスト検索ベクターにドキュメントを送信します機能
:
to_tsvector()
json(b)_to_tsvector()
これらには値のみが含まれることに注意してください キーではなく、JSONドキュメントから 。通常、それが必要です。基本的な例:
SELECT to_tsvector(jsonb '{"foo":"jump quickly"}')
@@ to_tsquery('jump <-> quick:*');
プレフィックス一致のデモンストレーション それにいる間、フレーズ検索の上に。参照:
または 、tsvector
を作成するだけです。 text
から キー名も含むJSONドキュメントの表現:
SELECT to_tsvector((jsonb '{"foo-fighter":"jump quickly"}')::text)
@@ to_tsquery('foo <-> fight:*');
より大きなtsvector
を生成します 、明らかに。
両方にインデックスを付けることができます(これがテキスト検索の要点です)。インデックスのみがリレーショナルテーブルにバインドされます。 (そして、式にインデックスを付ける
ことができます。 !)
式自体は、あなたが示唆しているようにテーブルにバインドされるのではなく、任意の値に適用できます。