在 postgreqsql 中创建 gin 索引

Ram*_*Ram 2 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)
Run Code Online (Sandbox Code Playgroud)

我有这样的列值(first_name)

"456fc0470a95c02bb42ef3e35fc81852"
Run Code Online (Sandbox Code Playgroud)

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

SELECT count(*) FROM users where first_name like '%aeb%'
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 5

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

create extension pg_trgm; 
Run Code Online (Sandbox Code Playgroud)

(这需要以超级用户身份完成)

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

CREATE INDEX users_search_idx 
   ON users USING gin (first_name gin_trgm_ops, last_name gin_trgm_ops);
Run Code Online (Sandbox Code Playgroud)

但是两列上的组合索引不支持例如where last_name like%aeb%'`。如果需要单独搜索两列,则需要两个索引。