如何同时创建杜松子酒指数? POSTGRES& Rails 4.2

时间:2015-06-11 20:36:11

标签: postgresql ruby-on-rails-4 activerecord concurrency gin

我正在使用postgresql和rails 4关注多索引全文搜索的思想机器人教程。我似乎无法使索引迁移工作。我试过了

  disable_ddl_transaction!  
  def change
    add_index(:cards, :object, using: 'gin', algorithm: :concurrently)
    add_index(:cards, :content, using: 'gin', algorithm: :concurrently)
    add_index(:tags, :name, using: 'gin', algorithm: :concurrently)     
  end

  def up
    ActiveRecord::Base.connection.execute <<-SQL
    CREATE INDEX CONCURRENTLY index_cards_on_object ON cards USING gin(to_tsvector('english', object));
    CREATE INDEX CONCURRENTLY index_cards_on_content ON cards USING gin(to_tsvector('english', content));
    CREATE INDEX CONCURRENTLY index_tags_on_name ON tags USING gin(to_tsvector('english', name));
   SQL
 end
 def down
    ActiveRecord::Base.connection.execute <<-SQL
    DROP INDEX index_cards_on_object;
    DROP INDEX index_cards_on_content;
    DROP INDEX index_tags_on_name;
  SQL
end

我得到以下错误(无论如何)

  

PG :: UndefinedObject:错误:数据类型字符变化没有访问方法的默认运算符类&#34; gin&#34;

  

ActiveRecord :: StatementInvalid:PG :: UndefinedObject:错误:数据类型字符变化没有访问方法的默认运算符类&#34; gin&#34;   PG :: SyntaxError:ERROR:语法错误在或附近&#34; CREATE&#34;

欢迎所有帮助和见解,谢谢

1 个答案:

答案 0 :(得分:0)

距您提出此问题已有4年了,但是-在寻找相同问题的答案时,我最终还是陷入了这个话题。由于我已经设法解决了这一问题,因此我正在与您以及最终在这里的其他人分享解决方案。

尝试将这些扩展名添加到迁移文件中的changeup方法中。请注意,不是每个人都需要,但我已经看到有时候一个人还不够。 btree_gin在我的案例中起作用。试试看吧!

enable_extension "plpgsql"
enable_extension "btree_gin"
enable_extension "pg_trgm"
enable_extension "fuzzystrmatch"
enable_extension "btree_gist"