pg_search和多列索引(Rails 4)

时间:2014-01-20 21:51:08

标签: postgresql ruby-on-rails-4 indexing pg-search multiple-columns

我在PostgreSQL中有一个全文搜索查询,如下所示:

to_tsvector('english', coalesce("products"."name"::text, '')) || to_tsvector('english', coalesce("products"."uid"::text, '')) || to_tsvector('english', coalesce("products"."serial"::text, ''));

但是,创建这样的迁移由于某种原因不起作用:

create_trigger(compatibility: 1).on(:products).before(:insert, :update) do
  "new.tsv_body := to_tsvector('english', coalesce("products"."name"::text, '')) || to_tsvector('english', coalesce("products"."uid"::text, '')) || to_tsvector('english', coalesce("products"."serial"::text, ''));"
end

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

提示是Stack Overflow如何通过语法突出显示您的程序文本:

  "new.tsv_body := to_tsvector('english', coalesce("products"."name"::text, '')) .... )
                                                   ^^^^^^^^^^ ^^^^^^

您在表格和列名称周围添加了双引号。整个字符串是双引号。所以这些插入双引号结束字符串

你需要逃避它们,或者省略它们。我不做Ruby / Rails,但如果它像大多数语言一样,反斜杠转义是合适的:

"new.tsv_body := to_tsvector('english', coalesce(\"products\".\"name\"::text, '')) .... )