# File lib/quest_search/quest_search_on.rb, line 23 def quest_search_for(query, page_no = 1, page_size = 2**32, sort = nil) words = ::UnicodeUtils.downcase(query.to_s).split " " conditions = words.map do |w| replace_bind_variables("#{self.quest_search_index_field} like ?", ["%#{w}%"]) end.join " OR " offset = (page_no * page_size) - page_size offset_ends = offset + page_size @order = sort || @order results = self.where(conditions).order(@order) if !sort results = results.sort do |a, b| b.points_for(query) <=> a.points_for(query) end else results = results.each do |r| r.points_for(query) end end paginated_results = [] results.each_with_index do |r, index| if index >= offset && index < offset_ends paginated_results.push r end end paginated_results end
# File lib/quest_search/quest_search_on.rb, line 8 def quest_search_on(*fields) if fields.size.zero? raise "No arguments given, please specify which fields should be indexed and searched." end options = fields.extract_options! @order = options[:order] || "id desc" cattr_accessor :quest_search_fields, :quest_search_index_field self.quest_search_fields = fields self.quest_search_index_field = options[:quest_search_index_field] || :quest_search_index self.before_save :update_quest_search_index end
Generated with the Darkfish Rdoc Generator 2.