【问题标题】:Why error occurred while creating GIN index?为什么创建 GIN 索引时出错?
【发布时间】:2015-08-21 11:19:36
【问题描述】:

我创建了一个表格来调查文本搜索和使用 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”的默认运算符类

你能帮我解决这个问题吗?

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    您还需要启用 :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);
    

    【讨论】:

      【解决方案2】:

      对于full text 搜索使用:

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

      对于三元组搜索,您可以使用pg_trgm 扩展名

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-12
        • 1970-01-01
        • 2020-05-27
        相关资源
        最近更新 更多