KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to implement a sitewide search through the powerful Sunspot gem for Rails. This involves a search across multiple, very different models at once. What I WANT to do is use the faceting feature to allow the user to filter their search results on each model, or by default view all on the same page, interspersed with each other ordered by the :boost qualifier. Combining the faceting code from the Sunspot Railscast with the multiple model searching code from another Stackoverflow question (a variation upon the 'Multiple Type' code from the Sunspot documentation ) gave me a solution that I'd think would work, but doesn't. The multiple method search succeeds, but the facets always turn up null. My basic approach is to provide a virtual attribute on each model by the same name, :search_class, that is just the model's class name rendered into a string. I then try and use that as a facet. However, in the view logic the results of the facet (@search.facet(:search_class).rows) is always an empty array, including when @search.results returns many different models in the same query, despite each returned instance having a perfectly accessible Instance.search_class attribute. I'm using Rails 3.1.0 and sunspot-rails 1.2.1. What should I do to make this faceting code work? Controller: #searches_controller.rb class SearchesController < ApplicationController def show @search = search(params[:q]) @results = @search.results end protected def search(q) Sunspot.search Foo, Bar, CarlSagan do keywords q #provide faceting for "search class", a field representing a pretty version of the model name facet(:
Tags (comma-separated)
Save Edits
Cancel