# Searching has\_many with UltraSphinx

**URL:** <https://www.ruby-forum.com/t/searching-has-many-with-ultrasphinx/132290>\
**Category:** Rails\
**Created:** [March 18, 2008, 8:19pm UTC](https://www.ruby-forum.com/t/searching-has-many-with-ultrasphinx/132290 "2008-03-18T20:19:58Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![blinking\_bear](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/a9a28c/32.png) [@blinking\_bear](https://www.ruby-forum.com/u/blinking_bear)\
**Post date:** [March 18, 2008, 8:19pm UTC](https://www.ruby-forum.com/t/searching-has-many-with-ultrasphinx/132290/1 "2008-03-18T20:19:58Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![blinking\_bear](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/a9a28c/32.png) [@blinking\_bear](https://www.ruby-forum.com/u/blinking_bear)\
**Post date:** [April 7, 2008, 8:05am UTC](https://www.ruby-forum.com/t/searching-has-many-with-ultrasphinx/132290/2 "2008-04-07T08:05:05Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![blinking\_bear](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/a9a28c/32.png) [@blinking\_bear](https://www.ruby-forum.com/u/blinking_bear)\
**Post date:** [May 26, 2008, 11:49am UTC](https://www.ruby-forum.com/t/searching-has-many-with-ultrasphinx/132290/3 "2008-05-26T11:49:49Z")

</div>

To index your model with tagging, check the post from ‘Allan Riley’ on  
March 29 2008 here:  
[http://rubyforge.org/forum/forum.php?thread\_id=18082&forum\_id=14244](http://rubyforge.org/forum/forum.php?thread_id=18082&forum_id=14244)

Hope that helps!

[Kiranatama - a Ruby on Rails  
outsourcing company](http://www.kiranatama.com)

---

<div class="post-metadata">

**Author:** ![blinking\_bear](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/a9a28c/32.png) [@blinking\_bear](https://www.ruby-forum.com/u/blinking_bear)\
**Post date:** [May 26, 2008, 3:10pm UTC](https://www.ruby-forum.com/t/searching-has-many-with-ultrasphinx/132290/4 "2008-05-26T15:10:48Z")

</div>

which is also covered in the link KiranaTama posted…

---

<div class="post-metadata">

**Author:** ![blinking\_bear](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/a9a28c/32.png) [@blinking\_bear](https://www.ruby-forum.com/u/blinking_bear)\
**Post date:** [May 26, 2008, 3:08pm UTC](https://www.ruby-forum.com/t/searching-has-many-with-ultrasphinx/132290/5 "2008-05-26T15:08:24Z")

</div>

Check out the :concatenate parameter of :is\_indexed (http://  
[blog.evanweaver.com/files/doc/fauna/ultrasphinx/classes/ActiveRecord/](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
