所以我有一jsonb
列有这样的条目:https : //pastebin.com/LxJ8rKk4
有什么办法可以在整个jsonb列上实现全文搜索吗?
所以我有一jsonb
列有这样的条目:https : //pastebin.com/LxJ8rKk4
有什么办法可以在整个jsonb列上实现全文搜索吗?
Answers:
PostgreSQL 10 在JSONB上引入了全文搜索
CREATE INDEX ON table
USING gin ( to_tsvector('english',jsondata) );
JSON上的新FTS索引可与词组搜索配合使用,并跳过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 在这里