Indexing 在postgreqsql中创建gin索引

Indexing 在postgreqsql中创建gin索引,indexing,postgresql-9.1,Indexing,Postgresql 9.1,我正在使用“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) 我有这样的列值(名字) 我正在尝试像这样查询数据 SELECT count(*) FROM users where first

我正在使用“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)
我有这样的列值(名字)

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

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

如果要使用trigram搜索,需要首先安装扩展:

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,如
%aeb%`。如果您需要单独搜索这两列,则需要两个索引。

Postgres 9.1是您应该尽快计划升级。我在原始帖子中做了一些更改。实际上,我收到了错误消息数据类型“text没有访问方法“gin”的默认运算符类,这是一个奇怪的名字;)
CREATE INDEX users_search_idx 
   ON users USING gin (first_name gin_trgm_ops, last_name gin_trgm_ops);