为什么在创建GIN索引时发生错误?

时间:2015-08-21 11:19:37

标签: postgresql

我创建了一个表来调查文本搜索和使用GIST和GIN索引:

CREATE TABLE test
(
  id serial NOT NULL,
  the_text text,
  CONSTRAINT test_pkey PRIMARY KEY (id)
)

并添加了一些随机值:

insert into test values (generate_series(1,100000), md5(random()::text))

想要创建GIN索引:

create index on test using gin(the_text);

但我有一个错误:

  

错误:数据类型文本没有访问方法“gist”的默认运算符类

你可以帮帮我吗?

2 个答案:

答案 0 :(得分:5)

您还需要启用 :btree_gin:btree_gist,因为它是 CREATE INDEX 工作的某种依赖。以下对我有用并修复了消息 ERROR: data type text has no default operator class for access method "gin"

CREATE EXTENSION pg_trgm;
CREATE EXTENSION btree_gin;
CREATE INDEX index_email_gin ON users USING GIN (email);

答案 1 :(得分:2)

使用full text搜索:

CREATE INDEX test_gin_idx ON test USING gin (to_tsvector('english', the_text));

对于trigram搜索,您可以使用pg_trgm扩展名

CREATE EXTENSION pg_trgm;
CREATE INDEX test_the_text_gin_idx ON test USING GIN (the_text gin_trgm_ops);