假设一个items
像这样的 postgresql 表。(keywords
列是类型text[]
)
name account_id keywords
------------------------------
foo1 1 ['k1', 'k2']
foo2 1 ['k1', 'k3']
foo3 2 ['k4', 'k1']
foo4 2 ['k1', 'k6']
Run Code Online (Sandbox Code Playgroud)
items 中的每一行都与 a 相关Account
(该表由 account_id 虚拟拆分)。我们希望进行如下查询:“带有关键字 k1 的帐户 1 的项目”。此查询需要在account_id
和keywords
列上使用复合 GIN 索引。
实际上,我们需要一个倒排索引,行是这样的:(每行的键应该是复合的)
(account_id, keyword) --> [item1, item2, ...]
在 postgresql 中创建此索引的正确方法是什么?