Mam więc jsonb
kolumnę, która ma takie wpisy: https://pastebin.com/LxJ8rKk4
Czy jest jakiś sposób na wdrożenie wyszukiwania pełnotekstowego w całej kolumnie jsonb?
Mam więc jsonb
kolumnę, która ma takie wpisy: https://pastebin.com/LxJ8rKk4
Czy jest jakiś sposób na wdrożenie wyszukiwania pełnotekstowego w całej kolumnie jsonb?
Odpowiedzi:
PostgreSQL 10 wprowadza wyszukiwanie pełnotekstowe w JSONB
CREATE INDEX ON table
USING gin ( to_tsvector('english',jsondata) );
Nowe indeksowanie FTS w JSON działa z wyszukiwaniem fraz i pomija zarówno znaczniki JSON, jak i klucze.
Możesz, choć nie jest to takie jasne:
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))) ;
Następnie przeprowadź zapytanie za pomocą:
SELECT
the_data
FROM
t
WHERE
to_tsvector('English', the_data::text) @@ plainto_tsquery('English', 'Action') ;
Zauważ, że znajdzie to również wszystkie klucze obiektu , nie tylko wartości . I będziesz ograniczony do ilości tekstu
dbfiddle tutaj