1

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

Book Type
Banking(30)
IT(20)

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

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

4

3 回答 3

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)

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

于 2012-11-21T16:52:26.253 回答
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 %>)
于 2012-11-21T11:46:46.413 回答
0
Book.count(:all, :group => 'type')
Book.count(:all, :group => 'tag')

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

于 2012-11-21T17:22:22.977 回答