如何在多语言网站中使用pg_search?

时间:2014-02-24 21:07:11

标签: ruby-on-rails internationalization multilingual rails-i18n pg-search

如果我理解pg_search文档,那么只有一个表存储整个网站的“可搜索”文档,所以我的问题是:

除了按语言过滤搜索结果之外,还有什么方法可以进行特定语言的搜索?我可以吗用每个“文档”存储它所写的语言,并以某种方式使用它来限制查询?

1 个答案:

答案 0 :(得分:-1)

我终于编写了我的控制器动作如下

require 'will_paginate/array'

def search
  @items = PgSearch.multisearch(params["search"])
  @items = @items.map { |item| item.searchable.document }.compact.uniq
  @items = @items.paginate(per_page: 5, page: params[:page])
end

其中每个可搜索模型都有一个文档属性,“决定”是否包含结果,如果是,则“哪个”文档。这可以像检查其语言一样简单:

def document
  self if locale == I18n.locale.to_s
end

或者可能更复杂,将其“document”属性传播给其父级,例如如果是多态评论:

def document
  commentable.document
end