按类分组Solr结果

时间:2014-10-23 19:14:47

标签: ruby-on-rails ruby solr sunspot

我正在使用Solr搜索两个模型:

@query = Sunspot.search Location, Employee do
  with(:category_id, params[:category_id]) if params[:category_id].present?
  fulltext params[:search]
  facet :category_id
  order_by(:weight, :desc)
  paginate :page => params[:page], :per_page => 10
end

我想从结果中创建两个离散对象,包含两个模型的匹配,以便我可以在UI中将它们拆分。

我现在正在做:

@results   = @query.results.group_by(&:class)
@locations = @results[Location]
@employees = @results[Employee]

但那不起作用。 @locations@employees都是空的。我在这里错过了什么?如果我调试@results,我看到匹配,它们已经按模型分组。我只想将它暴露给我的视图,这样我就可以将结果拆分为可隐藏/可显示的容器。想法?

1 个答案:

答案 0 :(得分:1)

我没有solr,所以我不能完全假设@results的样子(我认为它是一个哈希)。

根据这个假设,哈希键是符号或字符串。

所以试试

@locations = @results[:Location]
@employees = @results[:Employee]

@locations = @results["Location"]
@employees = @results["Employee"]

其中一个(可能是第一个)应该在每个实例变量中提供信息。原因是ruby会将类名的哈希键设置为符号。如果名称已经是字符串,则键将是字符串。