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