Я реализовал полнотекстовый поиск, используя гем pg_search для своего приложения Rails.
Моя миграция для создания индекса выглядит так
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. Однако, когда я развертываю то же самое на героку и ищу пример запроса «тест», он выдает ошибку
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 ):
Любые предложения о том, где я ошибаюсь и что я должен посмотреть, чтобы исправить эту ошибку? Спасибо.
'test'
с кавычками? - person rdvdijk   schedule 05.10.2011