Acts_as_ferret MultiIndex


I am working with Ferret and acts_as_ferret.

I have 9 different models that I am using for my search capability.
acts_as_ferret is working beautifully when I do searches on a specific

The problems come when I try to do a search all function.


I can easily get a proper collection using the following method:

def search_all
@results = []

[Announcement, Event, Group, Job, Need, Offering, Organization,
Pedia, User].each do |model|
finds = model.find_by_contents(@query)
finds.each {|find| @results << find } unless finds.blank?

@results = @results.sort_by { |result| result.ferret_rank }
@total = @results.length


The problems come in that I have no way to implement pagination, or
specify any further details.

I have been reading about Ferret::Index::MultiIndex does anyone know
how to use it? It would be of great help as it does what I wish.


Does anyone have any suggestions for a better way to implement an
effective search across many different indexes?


Check these posts,

i think it would be easier to modify their versions to match yours. :slight_smile:

good luck

in one of my apps I did this:

  def search
    if params[:search_article] && params[:search_article][:q] != ""
      limit = 20
      order_by = "title ASC"
      @articles = Article.full_text_search(params[:search_article]
[:q], limit, order_by)
      order_by = "first_name ASC, last_name ASC"
      @users = User.full_text_search(params[:search_article][:q],
limit, order_by)
      order_by = "first_name ASC, last_name ASC"
      @birthdays = Birthday.full_text_search(params[:search_article]
[:q], limit, order_by)
      @birthdays = []
      @users = []
      @articles = []
      flash[:notice] = 'No fue encrontrado nada con esta criteria.'

model code:

  def self.full_text_search(q, limit, order_by)
     return nil if q.nil? or q==""
     results = self.find_by_contents(q,
      :order => order_by,
      :limit => limit
     return results