Postgres:文本搜索,结合多个 JSONB tsvectors

Postgres: Text Search, combining multiple JSONB tsvectors

在 Postgres 10 中你可以进行全文搜索 JSONB 数据结构:

SELECT to_tsvector('english', '{"key":"value1"}'::jsonb);
>>> [tsvector]
>>> 'value1':1

注意 tsvector 如何仅索引 JSON 对象的值(智能)

现在我想合并多个 JSONB 字段的 tsvector... 我可以...

SELECT to_tsvector('{"key":"value1"}'::JSONB::TEXT || '{"key2":"value2"}'::JSONB::TEXT );
>>> [tsvector]
>>> 'key':1 'key2':3 'value1':2 'value2':4

请注意,因为我已强制转换为 TEXT,所以我正在获取键和值....

我想合并多个 tsvector() 对象的输出 - 我该怎么做?

注意jsonb值可以是concatenated:

SELECT '{"key":"value1"}'::jsonb || '{"key2":"value2"}'::jsonb AS new_jsonb

              new_jsonb              
-------------------------------------
 {"key": "value1", "key2": "value2"}
(1 row) 

您不需要将它们转换为文本:

SELECT to_tsvector('{"key":"value1"}'::jsonb || '{"key2":"value2"}'::jsonb );

      to_tsvector      
-----------------------
 'value1':1 'value2':3
(1 row)