したがって、次のjsonb
ようなエントリを持つ列があります:https : //pastebin.com/LxJ8rKk4
jsonb列全体に全文検索を実装する方法はありますか?
したがって、次のjsonb
ようなエントリを持つ列があります:https : //pastebin.com/LxJ8rKk4
jsonb列全体に全文検索を実装する方法はありますか?
回答:
PostgreSQL 10 がJSONBでの全文検索を導入
CREATE INDEX ON table
USING gin ( to_tsvector('english',jsondata) );
JSONの新しいFTSインデックスはフレーズ検索で機能し、JSONマークアップとキーの両方をスキップします。
できますが、それが実用的かどうかはそれほど明確ではありません。
CREATE TABLE t
(
id SERIAL PRIMARY KEY,
the_data jsonb
) ;
CREATE INDEX idx_t_the_data_full_text
ON t
USING gist ( (to_tsvector('English', the_data::text))) ;
そして、それをクエリします:
SELECT
the_data
FROM
t
WHERE
to_tsvector('English', the_data::text) @@ plainto_tsquery('English', 'Action') ;
これにより、値だけでなく、すべてのオブジェクトキーも検索されることに注意してください。そして、あなたはテキストの量に制限されます
ここ dbfiddle