myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [2272] trunk: catch invalid search queries and re


From: noreply
Subject: [myexperiment-hackers] [2272] trunk: catch invalid search queries and report it back to the user
Date: Mon, 14 Sep 2009 11:11:36 -0400 (EDT)

Revision
2272
Author
dgc
Date
2009-09-14 11:11:35 -0400 (Mon, 14 Sep 2009)

Log Message

catch invalid search queries and report it back to the user

Modified Paths

Diff

Modified: trunk/app/controllers/search_controller.rb (2271 => 2272)


--- trunk/app/controllers/search_controller.rb	2009-09-11 15:19:14 UTC (rev 2271)
+++ trunk/app/controllers/search_controller.rb	2009-09-14 15:11:35 UTC (rev 2272)
@@ -104,15 +104,19 @@
     markup += "<title>Search Results</title>";
 
     if (params["q"] != "*")
-      workflows = Workflow.find_by_solr(params["q"])
-      users     = User.find_by_solr(params["q"])
+      begin
+        workflows = Workflow.find_by_solr(params["q"])
+        users     = User.find_by_solr(params["q"])
 
-      workflows.results.each do |w|
-        markup += render_workflow(w)
-      end
+        workflows.results.each do |w|
+          markup += render_workflow(w)
+        end
 
-      users.results.each do |u|
-        markup += render_user(u)
+        users.results.each do |u|
+          markup += render_user(u)
+        end
+      rescue
+        # most likely here because of an invalid search query
       end
     end
 
@@ -158,25 +162,34 @@
 
       models.each do |model|
 
-        model_results = model.find_by_solr(@query, :limit => 10)
-        model_count   = model_results.total
+        begin
+          model_results = model.find_by_solr(@query, :limit => 10)
 
+          results = model_results.results
+          count   = model_results.total
+        rescue
+          flash.now[:error] = "There was a problem with your search query."
+
+          results = []
+          count   = 0
+        end
+
         search_type = model.name.downcase.pluralize
 
         Conf.model_aliases.each do |k,v|
           search_type = k.downcase.pluralize if model.name == v
         end
 
-        if (model_results.results.length > 0)
+        if (results.length > 0)
           @infos.push({
             :search_type => search_type,
             :model       => model,
-            :results     => model_results.results,
-            :total_count => model_count
+            :results     => results,
+            :total_count => count
           })
         end
 
-        @total_count += model_count
+        @total_count += count
       end
     end
 
@@ -208,10 +221,16 @@
     offset = params[:page] ? limit * (params[:page].to_i - 1) : 0
 
     if Conf.solr_enable && address@hidden
-      solr_results = model.find_by_solr(@query, :offset => offset, :limit => limit)
-      @total_count = solr_results.total
-      @collection  = PaginatedArray.new(solr_results.results,
-          :offset => offset, :limit => limit, :total => @total_count)
+      begin
+        solr_results = model.find_by_solr(@query, :offset => offset, :limit => limit)
+        @total_count = solr_results.total
+        @collection  = PaginatedArray.new(solr_results.results,
+            :offset => offset, :limit => limit, :total => @total_count)
+      rescue
+        flash.now[:error] = "There was a problem with your search query."
+        @total_count = 0
+        @collection  = PaginatedArray.new([], :offset => offset, :limit => limit, :total => 0)
+      end
     else
       @total_count = 0
       @collection  = PaginatedArray.new([], :offset => offset, :limit => limit, :total => 0)

Modified: trunk/vendor/plugins/acts_as_solr/schema.xml (2271 => 2272)


--- trunk/vendor/plugins/acts_as_solr/schema.xml	2009-09-11 15:19:14 UTC (rev 2271)
+++ trunk/vendor/plugins/acts_as_solr/schema.xml	2009-09-14 15:11:35 UTC (rev 2272)
@@ -31,7 +31,11 @@
 
 <schema name="acts_as_solr" version="0.9">
   <types>
-    <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="false"/>
+    <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="false">
+      <analyzer>
+        <filter class="solr.LowerCaseFilterFactory"/>
+      </analyzer>
+    </fieldType>
     <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="false"/>
     <fieldType name="integer" class="solr.IntField" omitNorms="false"/>
     <fieldType name="long" class="solr.LongField" omitNorms="false"/>

reply via email to

[Prev in Thread] Current Thread [Next in Thread]