我正在使用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;
欢迎所有帮助和见解,谢谢
答案 0 :(得分:0)
距您提出此问题已有4年了,但是-在寻找相同问题的答案时,我最终还是陷入了这个话题。由于我已经设法解决了这一问题,因此我正在与您以及最终在这里的其他人分享解决方案。
尝试将这些扩展名添加到迁移文件中的change
或up
方法中。请注意,不是每个人都需要,但我已经看到有时候一个人还不够。 btree_gin
在我的案例中起作用。试试看吧!
enable_extension "plpgsql"
enable_extension "btree_gin"
enable_extension "pg_trgm"
enable_extension "fuzzystrmatch"
enable_extension "btree_gist"