Bagaimana saya bisa menggunakan pencarian teks lengkap pada kolom jsonb dengan Postgres?

Jawaban:

15

PostgreSQL 10+

PostgreSQL 10 memperkenalkan Pencarian Teks Lengkap di JSONB

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

Pengindeksan FTS baru di JSON berfungsi dengan pencarian frase dan melompati markup JSON dan kunci.

Evan Carroll
sumber
3

Anda bisa, meskipun itu praktis tidak begitu jelas:

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

Dan kemudian kueri dengan:

SELECT
    the_data
FROM
    t
WHERE
    to_tsvector('English', the_data::text) @@ plainto_tsquery('English', 'Action') ;

Perhatikan bahwa ini juga akan menemukan semua kunci objek Anda , bukan hanya nilainya . Dan Anda akan terbatas pada seberapa banyak teks

Aku di sini

joanolo
sumber