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"/>