Sha256: 0ad7e70ccd3f3f92a99ad8bb2158eb0d3e192504f92393f9437f73b6a69cd686

Contents?: true

Size: 1.89 KB

Versions: 6

Compression:

Stored size: 1.89 KB

Contents

class SearchController < ApplicationController
  include ActionView::Helpers::SanitizeHelper
  
  helper_method :get_search_query

  RESULTS_SEARCH_PER_PAGE=12
  MIN_QUERY=2
  
  def index
    if params[:search_query].blank? or too_short_query
    @search_result = []
    else
      if params[:mode].eql? "header_search"
        @search_result = search :quick
        render :partial => "header_search"
      return
      else
        if params[:focus].present?
          @search_result = focus_search
        else
          @search_result = search :extended
        end
      end
    end
  end

  private

  def search mode
    models = SocialStream.extended_search_models
    models = SocialStream.quick_search_models if mode.to_s.eql? "quick"
    models.map! {|model_sym| model_sym.to_s.classify.constantize}
    result = ThinkingSphinx.search(get_search_query, :classes => models)
    if mode.to_s.eql? "quick"
      result.page(1).per(7)
    else
      result.page(params[:page]).per(RESULTS_SEARCH_PER_PAGE)
    end
    return result
  end

  def focus_search
    @search_class_sym = params[:focus].singularize.to_sym unless params[:focus].blank?
    search_class = @search_class_sym.to_s.classify.constantize
    ThinkingSphinx.search(get_search_query, :classes => [search_class]).page(params[:page]).per(RESULTS_SEARCH_PER_PAGE)
  end

  def too_short_query
    bare_query = strip_tags(params[:search_query]) unless bare_query.html_safe?
    return bare_query.strip.size < MIN_QUERY
  end

  def get_search_query
    search_query = ""
    bare_query = strip_tags(params[:search_query]) unless bare_query.html_safe?
    search_query_words = bare_query.strip.split
    search_query_words.each_index do |i|
      search_query+= search_query_words[i] + " " if i < (search_query_words.size - 1)
      search_query+= "*" + search_query_words[i] + "* " if i == (search_query_words.size - 1)
    end
    return search_query.strip
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
social_stream-0.11.5 base/app/controllers/search_controller.rb
social_stream-0.11.4 base/app/controllers/search_controller.rb
social_stream-0.11.3 base/app/controllers/search_controller.rb
social_stream-base-0.9.19 app/controllers/search_controller.rb
social_stream-0.11.2 base/app/controllers/search_controller.rb
social_stream-base-0.9.18 app/controllers/search_controller.rb