我是否将它放在每个模型中,就在multisearchable :against => [ ... ]
之前,还是应该放在一个单独的文件中?感谢。
答案 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
,但我想这应该是另一篇文章。