Ich habe also eine jsonb
Spalte mit Einträgen wie diesen: https://pastebin.com/LxJ8rKk4
Gibt es eine Möglichkeit, eine Volltextsuche für die gesamte jsonb-Spalte zu implementieren?
Ich habe also eine jsonb
Spalte mit Einträgen wie diesen: https://pastebin.com/LxJ8rKk4
Gibt es eine Möglichkeit, eine Volltextsuche für die gesamte jsonb-Spalte zu implementieren?
Antworten:
PostgreSQL 10 führt die Volltextsuche in JSONB ein
CREATE INDEX ON table
USING gin ( to_tsvector('english',jsondata) );
Die neue FTS-Indizierung in JSON funktioniert mit der Phrasensuche und überspringt sowohl das JSON-Markup als auch die Schlüssel.
Sie können, obwohl nicht so klar ist, ob das praktisch ist:
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))) ;
Und fragen Sie es dann ab mit:
SELECT
the_data
FROM
t
WHERE
to_tsvector('English', the_data::text) @@ plainto_tsquery('English', 'Action') ;
Beachten Sie, dass dies auch alle Ihre Objekte finden Schlüssel , nicht nur die Werte . Und Sie können nur so viel Text verwenden
dbfiddle hier