我有一个模型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
而不是Item
或ActiveRecord::Relation::ActiveRecord_Relation_Item
- 这意味着我的类方法无法访问。
即使我确实可以访问tag_counts
类方法,但这只会返回我的分页集合的结果 - 它只适用于前20个项目。
有关如何为所有匹配的搜索结果实现此目的的任何想法?
答案 0 :(得分:1)
如果要实现此类功能,则应使用“facet”。
在太阳黑子中看起来像这样:
Post.search do
[...]
facet :category_ids, :author_id
end