Quindi ho una jsonb
colonna che ha voci come questa: https://pastebin.com/LxJ8rKk4
Esiste un modo per implementare una ricerca full-text sull'intera colonna jsonb?
Quindi ho una jsonb
colonna che ha voci come questa: https://pastebin.com/LxJ8rKk4
Esiste un modo per implementare una ricerca full-text sull'intera colonna jsonb?
Risposte:
PostgreSQL 10 introduce la ricerca full-text su JSONB
CREATE INDEX ON table
USING gin ( to_tsvector('english',jsondata) );
Il nuovo indicizzazione FTS su JSON funziona con la ricerca di frasi e salta sia il markup JSON che le chiavi.
Puoi, anche se ciò che è pratico non è così chiaro:
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))) ;
E poi interrogalo con:
SELECT
the_data
FROM
t
WHERE
to_tsvector('English', the_data::text) @@ plainto_tsquery('English', 'Action') ;
Nota che questo troverà anche tutte le chiavi dell'oggetto , non solo i valori . E sarai limitato a quanto testo
dbfiddle qui