Итак, у меня есть jsonb
столбец, в котором есть такие записи: https://pastebin.com/LxJ8rKk4
Есть ли способ реализовать полнотекстовый поиск по всему столбцу jsonb?
Итак, у меня есть jsonb
столбец, в котором есть такие записи: https://pastebin.com/LxJ8rKk4
Есть ли способ реализовать полнотекстовый поиск по всему столбцу jsonb?
Ответы:
PostgreSQL 10 представляет полнотекстовый поиск в JSONB
CREATE INDEX ON table
USING gin ( to_tsvector('english',jsondata) );
Новая индексация FTS для JSON работает с поиском по фразе и пропускает как JSON-разметку, так и ключи.
Можно, хотя и практично ли это не так понятно
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') ;
Обратите внимание, что это также найдет все ваши ключи объекта , а не только значения . И вы будете ограничены тем, сколько текста
dbfiddle здесь