0

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

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

4

1 回答 1

-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

或者可以更复杂,将其“文档”属性传播到其父级,例如在多态注释的情况下:

def document
  commentable.document
end
于 2014-03-02T08:09:12.273 回答