web-dev-qa-db-ja.com

Postgresでjsonb列の全文検索を使用するにはどうすればよいですか?

だから私は次のようなエントリを持つjsonb列を持っています: https://Pastebin.com/LxJ8rKk4

Jsonb列全体に全文検索を実装する方法はありますか?

13
choco

PostgreSQL 10以降

PostgreSQL 10 JSONBでの全文検索を導入

CREATE INDEX ON table
   USING gin ( to_tsvector('english',jsondata) );

JSONの新しいFTSインデックスはフレーズ検索で機能し、JSONマークアップとキーの両方をスキップします。

15
Evan Carroll

できますが、それが現実的かどうかはそれほど明確ではありません。

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') ;

これはまたすべてのオブジェクトkeysを見つけることに注意してください。 values。そして、あなたはテキストの量に制限されます

dbfiddle ここ

3
joanolo