6

マルチサーチを使用してRails 3.2.3アプリでpg_searchを動作させました。次に、この投稿で 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 で特定の拡張機能を使用するには、dev データベースを使用する必要がある場合があります。

更新: Heroku がローリング アップグレードを発行し、現在は誰もがデフォルトで新しいバージョンの pg を実行していることを理解しています。上記は、データベースをアップグレードしなくても heroku で動作するはずです。

于 2012-07-27T02:28:20.353 に答える