6

我让 pg_search 使用 multisearch 在我的 Rails 3.2.3 应用程序上工作。然后我在这篇文章中实现了 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 %>

我的其余设置可以在这里找到。 任何帮助深表感谢。

4

1 回答 1

11

我之前也遇到过这个问题。只是为了向其他可能遇到麻烦的人澄清......这是安装扩展的方法:

  1. 通过运行创建一个新的迁移

    bundle exec rails g migration add_trigram_extension
    
  2. 在您的迁移中,粘贴以下代码:

    def up
        execute "create extension pg_trgm"
    end
    
    def down
        execute "drop extension pg_trgm"
    end
    
  3. 运行迁移bundle exec rake db:migrate

这在本地对我有用。您可以与 pg_search 一起使用的一些扩展或配置需要更新版本的 Postgres。为了在 heroku 上使用某些扩展,您可能需要使用开发数据库。

更新:据我了解,heroku 已发布滚动升级,现在每个人都默认运行更新版本的 pg。以上应该可以在 heroku 上运行,而无需升级您的数据库。

于 2012-07-27T02:28:20.353 回答