1 class SearchController < ApplicationController
5 @include_home = 'false'
6 if params[:baseproject]
7 @baseproject = params[:baseproject]
16 DownloadHistory.create :query => params[:query], :base => params[:base],
17 :file => params[:file]
18 redirect_to "http://download.opensuse.org/repositories/" + params[:file]
25 @baseproject = params[:baseproject]
26 @current_page = params[:p].to_i
27 @current_page = 1 if @current_page == 0
29 @exclude_debug = params[:exclude_debug]
30 @include_home = params[:include_home]
31 exclude_filter = 'home:' if params[:include_home].nil?
33 @project = params[:project]
35 if @query.split(" ").select{|e| e.length < 2 }.size > 0
36 flash.now[:error] = _("Please use search strings of at least 2 characters") and return
39 base = @baseproject=="ALL" ? "" : @baseproject
41 @result = Seeker.prepare_result(@query, base, @project, exclude_filter, @exclude_debug)
42 if @current_page == 1 # ignore sub pages
43 SearchHistory.create :query => @query, :base => @baseproject, :patterns => @result.pattern_count,
44 :binaries => @result.binary_count, :count => @result.length
47 search_error, code, api_exception = ActiveXML::Transport.extract_error_message e
49 logger.debug("Too many hits, trying exact match for: #{@query}")
50 @result = Seeker.prepare_result(CGI.escape("\"#{@query}\""), base, @project, exclude_filter, @exclude_debug)
52 @query = "\"#{@query}\""
53 flash.now[:note] = _("Switched to exact match due to too many hits on substring search.")
55 flash.now[:error] = _("Please be more precise in your search, search limit reached.")
58 logger.error "Could not perform search: " + search_error + e.to_s
59 flash.now[:error] = _("Could not perform search: ") + search_error
64 flash.now[:warn] = _("Please be more precise in your search, search limit reached.") if @result.binary_count >= 1000
69 def set_default_message
70 if DEFAULT_SEARCHES[params[:q]]
71 flash.now[:note] = DEFAULT_SEARCHES[params[:q]]