Эй, это выдержка из того, как мой сайт работал до того, как я перешел на solr
В продукте много категорий, мы сообщаем sphinx, что мы хотим проиндексировать их как фасеты
class Product < ActiveRecord::Base {
has_many :categorisations, :dependent => :destroy
has_many :categories, :through => :categorisations
define_index do
indexes product_name,
indexes description
indexes categories(:name), :as => :category,:facet => true
end
}
Контроллер результатов
class ResultsController < ApplicationController
def index
@facets = Product.facets params[:qt], :conditions => {:category => params[:category}},:page => params[:page], :per_page => 20
@products = @facets.for
end
end
И тогда в представлении вы можете сделать что-то вроде
<% @facets.each do |facet, facet_options| %>
<span><%= facet %></span>
<ul>
<% facet_options.each do |option, count| %>
<li><%= link_to "#{option} (#{count})",
:params => {facet => option, :page => 1} %></li>
<% end %>
</ul>
<% end %>