2

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

4

2 回答 2

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 进行全文搜索正在工作。

ps这使用(PostgreSQL)9.1.4

于 2012-12-12T08:45:32.533 回答
1

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

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

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

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

于 2012-06-04T01:41:48.740 回答