Entonces tengo una jsonb
columna que tiene entradas como esta: https://pastebin.com/LxJ8rKk4
¿Hay alguna forma de implementar una búsqueda de texto completo en toda la columna jsonb?
Entonces tengo una jsonb
columna que tiene entradas como esta: https://pastebin.com/LxJ8rKk4
¿Hay alguna forma de implementar una búsqueda de texto completo en toda la columna jsonb?
Respuestas:
PostgreSQL 10 presenta la búsqueda de texto completo en JSONB
CREATE INDEX ON table
USING gin ( to_tsvector('english',jsondata) );
La nueva indexación de FTS en JSON funciona con la búsqueda de frases y omite tanto el marcado como las teclas de JSON.
Puede, aunque si eso es práctico no está tan 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))) ;
Y luego consultarlo con:
SELECT
the_data
FROM
t
WHERE
to_tsvector('English', the_data::text) @@ plainto_tsquery('English', 'Action') ;
Tenga en cuenta que esto también encontrará todas sus claves de objeto , no solo los valores . Y estarás limitado a cuánto texto
dbfiddle aquí