Rails アプリケーションに pg_search gem を使用して全文検索を実装しました
インデックスを作成するための私の移行は次のようになります
execute(<<-'eosql'.strip)
CREATE index mytable_fts_idx
ON mytable
USING gin(
(setweight(to_tsvector('english', coalesce("mytable"."name", '')), 'A') ||
' ' ||
setweight(to_tsvector('english', coalesce("mytable"."description",'')), 'B')
)
)
eosql
そして、私のコントローラーコードは次のようになります
pg_search_scope :full_text_search,
:against => [
:name, :description],
:using => {
:tsearch => {
:prefix => true,
:dictionary => "english",
:any_word => true
}
}
これは、Postgres 9.0.4 でローカルに問題なく動作します。ただし、同じものをherokuにデプロイしてサンプルクエリ「test」を検索すると、エラーが発生します
PGError: ERROR: syntax error in tsquery: "' test ':*"
SELECT COUNT(count_column) FROM (SELECT 1 AS count_column FROM "mytable" WHERE (((to_tsvector('english', coalesce("mytable"."name", '')) || to_tsvector('english', coalesce("mytable"."description", ''))) @@ (to_tsquery('english', ''' ' || 'test' || ' ''' || ':*')))) LIMIT 12 OFFSET 0) subquery_for_count ):
私が間違っている場所と、このエラーを修正するために何を見なければならないかについての提案はありますか? ありがとう。