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