在PostgreSQL中创建Gin索引

5

我正在使用“PostgreSQL 9.1.5”,尝试为文本列创建gin索引,但出现错误消息。

CREATE TABLE users (
    first_name text,
    last_name text
)


CREATE INDEX users_search_idx ON users USING gin (first_name,last_name)

我有像这样的列值(first_name)

"456fc0470a95c02bb42ef3e35fc81852"

我正在尝试像这样查询数据。

SELECT count(*) FROM users where first_name like '%aeb%'

Postgres 9.1已经不再受支持,您应该尽快计划升级。 - user330315
我在原始帖子中进行了一些更改。实际上,我收到了错误消息数据类型“文本没有访问方法”gin“的默认运算符类。 - Ram
那是一个奇怪的名字 ;) - user330315
1个回答

15

如果您想使用三元组搜索,您需要首先安装pg_trgm扩展:

create extension pg_trgm; 

(需要以超级用户身份执行此操作)

然后,您需要提供要在索引中使用的操作类:

CREATE INDEX users_search_idx 
   ON users USING gin (first_name gin_trgm_ops, last_name gin_trgm_ops);

但是两个列的组合索引不能支持例如where last_name like%aeb%'`这样的查询。如果你需要单独搜索这两个列,你需要两个索引。

但是,如果您需要在这两个列上分别搜索,则需要两个索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接