【发布时间】:2020-11-23 23:38:10
【问题描述】:
(Postgres 12)
我正在实现一个允许精确匹配和模糊 (ILIKE) 匹配的文本搜索:
attributes->>'ID' = 'some-id'
-- OR
attributes->>'ID' ILIKE '%some-%'
(用户声明搜索是否准确,因此查询中只包含上述其中一项)
我将索引放在最常搜索的属性 ID 和名称上。当我使用带有 gin_trgm_ops 的 GIN 时,模糊匹配要快得多。使用 BTREE 索引,精确匹配要快得多。
我可以同时拥有 BTREE 和 GIN 索引,但我想知道这是否是绝对必要的。有没有办法让 postgres 使用 GIN 索引进行精确匹配搜索?
【问题讨论】:
-
如果您仍然对this question 的答案感兴趣,您应该取消删除它。
标签: postgresql indexing full-text-search fuzzy-search