我有一张表,用于存储两个人之间的对话。
数据将如下所示:
CREATE TABLE foo
AS
SELECT $$[
{ "user": 1, "timestamp": 1, "message": "First message" },
{ "user": 2, "timestamp": 2, "message": "Second message" },
{ "user": 2, "timestamp": 3, "message": "Debounced message from same user" },
{ "user": 1, "timestamp": 4, "message": "Last message" }
]$$::jsonb AS jsondata;
Run Code Online (Sandbox Code Playgroud)
我从不需要单独查找每条消息,所以我只想将整个对话存储在一个jsonb字段中。我需要对所有消息执行全文搜索。
我的第一个想法是创建一个新的文本列,将所有消息连接到一个长字符串中,然后在该列上创建一个三元组 GIN 索引。
这似乎是一种浪费大量空间的 hack,所以我想避免中间列。如何直接从jsonb列创建索引?