Отже, у мене є 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 тут