0

我正在努力将搜索添加到我的 PostgreSQL 9.1 rails 应用程序中。这是设置:

class Comment < ActiveRecord::Base
  include PgSearch
  pg_search_scope :search_by_content, :against => :content

Rails C,命令:

 Comment.where(:commentable_id => 33).search_by_content('pgsql').count

导轨日志:

(348.1ms)  SELECT COUNT(*) FROM "comments" WHERE "comments"."commentable_id" = 33 AND (((to_tsvector('simple', coalesce("comments"."content"::text, ''))) @@ (to_tsquery('simple', ''' ' || 'pgsql' || ' '''))))

安装 gem 并设置评论模型后,说明中没有提到添加数据库索引以优化性能。鉴于查询在本地已经占用了 348.1 毫秒,我很好奇这可以优化为更高性能吗?

谢谢

4

1 回答 1

2

Rails 似乎正在使用全文搜索 - 请参阅PostgreSQL 文档中的全文搜索,尤其是创建索引部分。

Rails 对 tsearch2 表达式做了一些非常奇怪的事情,这可能会使创建 PostgreSQL 识别为匹配的索引变得更加困难。请参阅此先前的问题

用于EXPLAIN ANALYZE验证它是否正在使用索引。

于 2013-01-08T06:26:30.540 回答