代码之家  ›  专栏  ›  技术社区  ›  Kamilski81

如何在具有GIN索引字段的数组上执行like%?

  •  2
  • Kamilski81  · 技术社区  · 6 年前

    我有一个数组列 match_input_search_names 它是通过轧棉机索引编制的。运行以下查询时,将返回正确的结果:

    SELECT * FROM property_people WHERE search_names @> '{Camel Meal}';
    

    但是,我希望使用部分匹配%搜索我的列,如下所示:

    SELECT * FROM property_people WHERE search_names @> '{%amel Me%}';
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Laurenz Albe    6 年前

    这不能用全文搜索来完成。

    你应该

    CREATE EXTENSION pg_trgm;
    

    然后你可以

    CREATE INDEX ON property_people
       USING gin (search_name gin_trgm_ops);
    

    此索引可与以下条件一起使用

    WHERE search_names LIKE '%amel Me%'