Advanced search for a model (including keywords)

Hello,

I am new in rails and I am working in an application which requires
advanced search.
I have a model called Item which has various attributes like “weight”,
“price”, “category”, “age”…and then it has some “keywords”,
describing the Item.

I would like to implement an advanced search where the users can
search Items using the attributes that they want.

After googling some time, I found that:

  • acts_as_taggable could be useful for the “keywords” attribute.
  • acts_as_ferret could be useful for searching the tags (I would need
    to search for multiple tags in the same query, include some fuzzy
    search…)
  • Searchlogic would be very useful to implement the search with all
    the attributes, but I am not sure if it can cope with the
    acts_as_taggable plugin, or if I should implement the keywords just
    using a String attribute, or how to do it.

Well, I know I have a lot of work to do, but I would really appreciate
if someone could give me some hints in order to point the direction in
which I should work. Which is the best way (or simplest) in your
opinion to implement this search?

The application will have to deal with “many” records (lets say
100.000), so I would also appreciate receiving some comments regarding
speed…however it doesn’t have to be the faster app in the world, in
this moment I prefer an easier development and I’ll improve the app in
the future if needed.

Thanks a lot for your help.

It’s really basic search you’re looking for. 100,000 records is not
that many, use acts_as_ferret with a local index and you’ll be fine
for quite a while.

I personally had many issues trying to use Ferret and would recommend
Sphinx with thinking sphinx plugin.

Searchlogic is very plugin for search and i hoped it would help me
better in pagination but pagination is not at all working.

Any pupil facing such type of errors.
Thanks in advance

And, besides using ferret or sphinx, should I also use
acts_as_taggable in order to manage the keywords for each item?