Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sunspot / Solr full text search - how to index Rails associations

Is it possible to index through an association with Sunspot?

For example, if a Customer has_many Contacts, I want a 'searchable' block on my Customer model that indexes the Contact#first_name and Contact#last_name columns for use in searches on Customer.

acts_as_solr has an :include option for this. I've simply been combining the associated column names into a text field on Customer like shown below, but this doesn't seem very flexible.

searchable do
text :organization_name, :default_boost => 2
text :billing_address1, :default_boost => 2
text :contact_names do
  contacts.map { |contact| contact.to_s }
end

Any suggestions?

like image 385
Sam Avatar asked Apr 11 '10 00:04

Sam


1 Answers

That's exactly how to do it. Solr is essentially document-oriented, so any data that comes from associations in your database is flattened down into your document. An :include option is just mild sugar which ends up doing the same thing that you do here.

like image 103
outoftime Avatar answered Sep 21 '22 18:09

outoftime