私はアパートの宝石によって可能になったマルチテナントアプリケーションと組み合わせてpg_search宝石を使用しようとしています。アパートメントはテナントごとにスキーマを使用してデータを分離します。各テナントの検索は、pg_searchのデフォルト設定でうまくいくが、pg_trgmを有効にして使用するのに問題がある。アパートの宝石でpg_searchを使用
データベースのpg_trgm拡張機能を有効にしました。これは、「共有拡張機能」と呼ばれる別個のスキーマを追加し、その上にpg_trgm拡張を有効にします。私はエラーを取得するモデルのトライグラム検索を実行しようとすると、
config.persistent_schemas = %w{ shared_extensions }
しかし、このスキーマは常にアパートを構成することによって、検索パスに含まれています。
pg_search_scope :search_by_name, against: :name, using: :trigram
Meeting.search_by_name('blabla').first
PG::UndefinedFunction: ERROR: operator does not exist: text % unknown
この私はしかし、私はちょうど良い私のデータベースで次のクエリを実行することができ、pg_trgmが正しく有効になっていないと思わせる:
SELECT name, similarity(name, 'blabla') AS sml
FROM aa.meetings
WHERE name % 'blabla'
ORDER BY sml DESC, name;
任意の助けをいただければ幸いです! ありがとう