Então, eu tenho uma jsonb
coluna que tem entradas como esta: https://pastebin.com/LxJ8rKk4
Existe alguma maneira de implementar uma pesquisa de texto completo em toda a coluna jsonb?
Então, eu tenho uma jsonb
coluna que tem entradas como esta: https://pastebin.com/LxJ8rKk4
Existe alguma maneira de implementar uma pesquisa de texto completo em toda a coluna jsonb?
Respostas:
O PostgreSQL 10 introduz a pesquisa de texto completo no JSONB
CREATE INDEX ON table
USING gin ( to_tsvector('english',jsondata) );
A nova indexação do FTS no JSON funciona com a pesquisa de frases e ignora a marcação e as chaves JSON.
Você pode, embora isso seja prático, não seja tão claro:
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, em seguida, consulte-o com:
SELECT
the_data
FROM
t
WHERE
to_tsvector('English', the_data::text) @@ plainto_tsquery('English', 'Action') ;
Observe que isso também encontrará todas as suas chaves de objeto , não apenas os valores . E você ficará limitado à quantidade de texto
dbfiddle aqui