Topic: Sunspot Searching With Facets

I haven't implemented a search feature before and feel a bit stuck. I have a Sunspot search feature which finds results based on keywords - this works great - but I now want to implement the multi select facet feature, but I can't even seem to figure out how to set-up a basic facet search.

I have a many to many relationship (in rails not in real life):

Class People has_many :skills, :through => experience (and vice versa etc)

    Class People < ActiveRecord::Base
      has_many :skills, :through => experience
      searchable do
        text :first_name, :surname

In the controller

    @search =
       facet :skill_ids

This is the basic example I can't get working. It generates this error:

    Sunspot::UnrecognizedFieldError: No field configured for People with name 'skill_ids'

How do I create the link to :skill_ids

I think I must be missing some reference in the model - but no examples I can find do reference the Ids of a relationship. Most of the examples I found use columns that are already in that model when using the facet functionality.

  1. How can I get the basic implementation working?

  2. How would I use this in the view - do I have to call hits.facet and iterate over the skills? What would the code look like to display this?

  3. How would I select multiple facets to search by?

Thank you for your time!

Re: Sunspot Searching With Facets

First of all you must include the facet field in the searchable block like this

searchable do
        text :first_name, :surname
        integer: skill_ids

And in your view file you need to add a bit of coding to get the facet values..

<% for row in @search.facet(:skill_ids).rows %>
<%= row.value %>
<%= row.count %>
<% end %>

where 'row.value'  returns the skill_id and 'row.count' returns its corresponding count.
Pretty Simple righ?? big_smile

I think you got what you needed...
If you need to know more about the sunspot rails coding please visit the below llink

Play around with facets !!! All the very best..