ruby-on-rails-3 – 初始化tsearch,trigram后pg_search multisearch出错

我使用multisearch在我的Rails 3.2.3应用程序上运行了pg_search.然后我在 this post.中实现了nertzy(pg_search的作者)提供的初始化程序.现在当我运行搜索时出现以下错误
PG::Error: ERROR:  operator does not exist: text % unkNown
LINE 1: ... ((coalesce("pg_search_documents"."content",'')) % 'searchterm...
                                                             ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

我的视图使用以下代码呈现:

<%= @pg_search_documents.each do |pg_search_document| %>
  <%= pg_search_document.searchable.title %>
<% end %>

其余的设置可以找到here.任何帮助非常感谢.

解决方法

我之前也遇到过这个问题.只是为了澄清可能遇到麻烦的其他人…这里是如何安装扩展程序:

>通过运行创建新的迁移

bundle exec rails g migration add_trigram_extension

>在迁移中,粘贴以下代码

def up
    execute "create extension pg_trgm"
end

def down
    execute "drop extension pg_trgm"
end

>使用bundle exec rake db:migrate运行迁移

这对我来说很有帮助.您可以与pg_search一起使用的某些扩展或配置需要更新版本的Postgres.为了在heroku上使用某些扩展,您可能需要使用dev数据库.

更新:我的理解是heroku已经发布滚动升级,现在每个人都认运行更新版本的pg.以上应该适用于heroku而无需升级数据库.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...