diff --git a/app/controllers/public/search_controller.rb b/app/controllers/public/search_controller.rb index 3425ff5..d31fc83 100644 --- a/app/controllers/public/search_controller.rb +++ b/app/controllers/public/search_controller.rb @@ -29,12 +29,14 @@ class SearchController < ApplicationController SEARCHES.inject([]) do |acc,finder| acc += finder.call(query) end.sort_by do |hit| - (hit.respond_to? :ferret_score) ? (1.0 - hit.ferret_score) : (-1.0) + -(relevance_for(hit)) end end public + include SearchHelper + def index @query = params[:query] || '' @results = search(@query) diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb index 26e7dc4..95ff74e 100644 --- a/app/helpers/search_helper.rb +++ b/app/helpers/search_helper.rb @@ -1,4 +1,5 @@ module SearchHelper + def partial_for_hit(klass) name = klass.name.underscore if File.exists?(File.join(RAILS_ROOT, 'app', 'views', 'search', "_#{name}.rhtml")) @@ -7,4 +8,10 @@ module SearchHelper partial_for_hit(klass.superclass) end end + + def relevance_for(hit) + n = (hit.ferret_score if hit.respond_to?(:ferret_score)) + n ||= 1.0 + (n * 100.0).round + end end diff --git a/app/views/search/_article.rhtml b/app/views/search/_article.rhtml index 13b4a0a..ec02f90 100644 --- a/app/views/search/_article.rhtml +++ b/app/views/search/_article.rhtml @@ -1,10 +1,14 @@