ActiveRecord搜索方面计数

时间:2012-11-21 11:11:35

标签: ruby-on-rails ruby-on-rails-3 postgresql activerecord

我使用Rails 3.2.8和postgres。我们假设我有一个可以按类型和标签过滤的Book模型。我很好奇如何为搜索结果中显示的每个过滤器(类型,标签,...)实现构面计数。 ui看起来与此类似:

Book Type
Banking(30)
IT(20)

Tags
business(20)
rspec(2)
rails(3)

我一直在谷歌搜索试图找不到使用Sphinx,Solr或任何其他搜索引擎的方法。可以通过postgres或activerecord完成吗?

3 个答案:

答案 0 :(得分:2)

type_facet = Book.select('type, count(*)').where(:type => ["Banking","IT"]).group(:type)
tag_facet = Book.select('tag, count(*)').where(:tag => ["business","rspec","rails"]).group(:tag)

在你的前端迭代上述方面..

答案 1 :(得分:0)

您正在寻找类似的东西吗?

Book Type
Banking (<%= Book.where(:type => "Banking").count %>)
IT (<%= Book.where(:type => "IT").count %>)

Tags
business (<%= Book.where(:tag => "business").count %>)
rspec (<%= Book.where(:tag => "rspec").count %>)
rails (<%= Book.where(:tag => "rails").count %>)

答案 2 :(得分:0)

Book.count(:all, :group => 'type')
Book.count(:all, :group => 'tag')

我认为它会为你返回计数和每个类型/标签。