sql >> データベース >  >> RDS >> PostgreSQL

フレーズ検索演算子<->は、JSONBドキュメントで機能しますか、それともリレーショナルテーブルでのみ機能しますか?

    フレーズ検索機能は、テキスト検索データに統合されています。タイプ 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を生成します 、明らかに。

    両方にインデックスを付けることができます(これがテキスト検索の要点です)。インデックスのみがリレーショナルテーブルにバインドされます。 (そして、式にインデックスを付ける ことができます。 !)
    式自体は、あなたが示唆しているようにテーブルにバインドされるのではなく、任意の値に適用できます。




    1. `in`句にすべての値を持つ列のみでクエリを結合します

    2. 遅延または待機ステートメント

    3. 接続プール用にHibernate、Spring、Apache dbcpを構成するにはどうすればよいですか?

    4. 私のgroupbyが失敗している理由がわかりません