我在哪里放PgSearch.multisearch_options?

时间:2012-06-04 00:18:51

标签: ruby-on-rails-3 pg-search

我是否将它放在每个模型中,就在multisearchable :against => [ ... ]之前,还是应该放在一个单独的文件中?感谢。

2 个答案:

答案 0 :(得分:6)

我对如何实施PgSearch.multisearch_options有类似的疑问。

这对我有用。希望它能帮助其他人。

我创建了初始化程序config/initializers/pg_search.rb

PgSearch.multisearch_options = {
  :using => {
    :tsearch => {
      :dictionary => "english"
    }
  }
}

在我的application.rb文件中,我取消注释了这一行:config.active_record.schema_format = :sql

然后创建了一个名为rails g migration add_trigram_extension的迁移,将以下内容添加到迁移文件

def up
    execute "create extension pg_trgm"
end

def down
    execute "drop extension pg_trgm"
end

然后运行bundle exec rake db:migrate

重启服务器

现在使用Stemming进行全文搜索。

P.S。这工作使用(PostgreSQL)9.1.4

答案 1 :(得分:1)

好的找到了答案,所以我将在下面发布。

我创建了一个名为config/initializers/pg_search.rb的文件,其外观如下:

PgSearch.multisearch_options = { :using => { :tsearch => { :prefix => true },
                                             :trigram => {},
                                             :dmetaphone => {} },
                                 :ignoring => :accents }

我不完全理解为什么:trigram => {}有效而不只是:trigram,但我想这应该是另一篇文章。