使用Sunspot的所有搜索结果的类方法

时间:2014-01-06 13:22:28

标签: ruby-on-rails solr sunspot acts-as-taggable-on

我有一个模型Item,它有很多标签(使用act-as-taggable-on)

使用太阳黑子,我搜索这样的项目:

@search = Item.search do
  fulltext params[:search]
  paginate page: params[:page], per_page: 20
end

这样可以正常工作,但对于搜索返回的项目,我还希望能够显示每个标记出现次数的唯一标记列表。

我希望能够做到这样的事情:

@serch.results.tag_counts 

tag_counts是由{act-as-taggable-on添加的Item的类方法)

如果这是一个ActiveRecord查询,这可以正常工作,但显然我的搜索结果是Sunspot::Search::PaginatedCollection而不是ItemActiveRecord::Relation::ActiveRecord_Relation_Item - 这意味着我的类方法无法访问。

即使我确实可以访问tag_counts类方法,但这只会返回我的分页集合的结果 - 它只适用于前20个项目。

有关如何为所有匹配的搜索结果实现此目的的任何想法?

1 个答案:

答案 0 :(得分:1)

如果要实现此类功能,则应使用“facet”。

在太阳黑子中看起来像这样:

Post.search do
  [...]
  facet :category_ids, :author_id
end