I’m switching from ferret to ultrasphinx… in ferret I used to search
on
tags for a model by just including the tag_string method in the list of
fields and implementing this method:
def tag_string
tags.map(&:name).join(",")
end
Does anyone know how to get at this kind of info using sphinx? My
huntch is
that it needs to use the ;include syntax somehow.
Thanks
I’m also switching from Ferret to Ultrasphinx. I was using
acts_as_taggable to search tags for Product models.
Now I’m getting a “FATAL: no sources found in config file” error when
I try to “rake ultrasphinx:index”.
I am suspecting this is due to the fact that I tried writing
“is_indexed :fields => [:tag_list]” in my Product model.
Any ideas?
which is also covered in the link KiranaTama posted…
Check out the :concatenate parameter of :is_indexed (http://
blog.evanweaver.com/files/doc/fauna/ultrasphinx/classes/ActiveRecord/
Base.html). We wanted to treat the tags as a single text field and to
do that you need to write some custom sql but here’s what we’re using:
class Product
acts_as_taggable
is_indexed :fields => [‘name’, ‘description’],
:concatenate => [{ :class_name => ‘Tag’, :field =>
‘name’, :association_sql => “LEFT JOIN taggings ON ((taggable_id =
product.id) AND (taggable_type = ‘Product’)) LEFT JOIN tags ON
(tags.id = taggings.tag_id)”, :as => ‘tags’ }]
end