Searching method

def search
if params[:q]
query = params[:q]
# First find the user hits…
@users = User.find_by_contents(query, :limit => :all)
# …then the subhits.
personals = Personal.find_by_contents(query, :limit => :all)
#flash[:notice] = personals.size
faqs = Faq.find_by_contents(query, :limit => :all)
# Now combine into one list of distinct users sorted by last name.
hits = personals + faqs

#flash[:notice] = hits.size
@users.concat(hits.collect { |hit| hit.user }).uniq!

# Sort by last name (requires a personal for each user).
@users.each { |user| user.personal ||= Personal.new }

@users = @users.sort_by { |user| user.personal.last_name }
#@users = @users.paginate(:page => params[:page], :per_page => 10)
@invalid = true

end
end

Sir, i want to implement a search function. I got a code from one of the
book where the objective is to find a user based on a name or any thing
else…
Here ‘User’ is a users table…
‘Faq’ is table which contains info abt the user…
n ‘Personal’ contains personal info abt user…
Can u please help me in understanding the following lines of code…

Now combine into one list of distinct users sorted by last name.

hits = personals + faqs

#flash[:notice] = hits.size
@users.concat(hits.collect { |hit| hit.user }).uniq!

# Sort by last name (requires a personal for each user).
@users.each { |user| user.personal ||= Personal.new }

@users = @users.sort_by { |user| user.personal.last_name }

i want to implement searching by tag…
Thank u…