Quantcast
Channel: davidfurber.name » Ruby on Rails
Viewing all articles
Browse latest Browse all 6

Search Multiple Models at Once with Thinking Sphinx

$
0
0

Buried in the Thinking Sphinx documentation I found a powerfully easy answer to a problem that is otherwise not easy to solve with ActiveRecord. How do you search across multiple models and combine the results into a single set without individually querying each model and melding the results together manually?

One way we have done this is through a union query in a find_by_sql, which works well enough to query multiple tables but only returns results of a single type, unless you refactor ActiveRecord to instantiate different models depending on the type (which we did in this case).

With Thinking Sphinx it’s as simple as this:

ThinkingSphinx::Search.search "term", :classes => [Post, User, Photo, Event]

And the result comes back with a neatly instantiated combination of posts, users, photos, and events.

Is this more efficient than the previous method? I do not know, I will have to check.


Viewing all articles
Browse latest Browse all 6

Trending Articles