【问题标题】:Index Types for Exact Match and ILIKE Search精确匹配和 ILIKE 搜索的索引类型
【发布时间】: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


【解决方案1】:

从 v14 开始,pg_trgm 将自动处理相等性。它不会像 btree 索引那样高效,但它可能已经足够好,因此不值得同时拥有两个索引。

在此之前,最好的解决方案可能是在您想要完全匹配。

【讨论】:

    猜你喜欢
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多