Làm cách nào tôi có thể sử dụng tìm kiếm toàn văn bản trên cột jsonb với Postgres?


Câu trả lời:



3

Bạn có thể, mặc dù điều đó thực tế không quá rõ ràng:

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))) ;

Và sau đó truy vấn nó bằng:

SELECT
    the_data
FROM
    t
WHERE
    to_tsvector('English', the_data::text) @@ plainto_tsquery('English', 'Action') ;

Lưu ý rằng điều này cũng sẽ tìm thấy tất cả các khóa đối tượng của bạn , không chỉ các giá trị . Và bạn sẽ bị giới hạn số lượng văn bản

dbfiddle ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.