Commit 3b35e215936c959d3297c384fee0622512bda267
1 parent
43548e50
Exists in
master
and in
29 other branches
[search-term-improvements] Simple query normalization using downcase
Showing
5 changed files
with
35 additions
and
4 deletions
Show diff stats
app/controllers/public/search_controller.rb
... | ... | @@ -144,7 +144,7 @@ class SearchController < PublicController |
144 | 144 | end |
145 | 145 | |
146 | 146 | def suggestions |
147 | - render :text => find_suggestions(params[:term], environment, params[:asset]).to_json | |
147 | + render :text => find_suggestions(normalize_term(params[:term]), environment, params[:asset]).to_json | |
148 | 148 | end |
149 | 149 | |
150 | 150 | ####################################################### | ... | ... |
app/helpers/search_term_helper.rb
... | ... | @@ -10,8 +10,8 @@ module SearchTermHelper |
10 | 10 | #FIXME For some reason the job is created but nothing is ran. |
11 | 11 | #handle_asynchronously :register_search_term |
12 | 12 | |
13 | - #TODO Think better on how to normalize them properly | |
13 | + #TODO Think smarter criteria to normalize search terms properly | |
14 | 14 | def normalize_term(search_term) |
15 | - search_term | |
15 | + search_term.downcase | |
16 | 16 | end |
17 | 17 | end | ... | ... |
public/javascripts/application.js
... | ... | @@ -1070,7 +1070,7 @@ jQuery(document).ready(function(){ |
1070 | 1070 | $(this).closest('form').submit(); |
1071 | 1071 | }, |
1072 | 1072 | source: function(request, response) { |
1073 | - var term = request.term; | |
1073 | + var term = request.term.toLowerCase(); | |
1074 | 1074 | if (term in suggestions_cache) { |
1075 | 1075 | response(suggestions_cache[term]); |
1076 | 1076 | return; | ... | ... |
test/functional/search_controller_test.rb
... | ... | @@ -662,6 +662,14 @@ class SearchControllerTest < ActionController::TestCase |
662 | 662 | assert_equal [st1,st2].to_json, response.body |
663 | 663 | end |
664 | 664 | |
665 | + should 'normalize search term for suggestions' do | |
666 | + st1 = 'UnIvErSe A' | |
667 | + st2 = 'uNiVeRsE B' | |
668 | + @controller.stubs(:find_suggestions).with('universe', Environment.default, 'communities').returns([st1, st2]) | |
669 | + get :suggestions, :term => 'UNIveRSE', :asset => 'communities' | |
670 | + assert_equal [st1,st2].to_json, response.body | |
671 | + end | |
672 | + | |
665 | 673 | protected |
666 | 674 | |
667 | 675 | def create_event(profile, options) | ... | ... |
... | ... | @@ -0,0 +1,23 @@ |
1 | +require File.dirname(__FILE__) + '/../test_helper' | |
2 | + | |
3 | +class SearchTermTest < ActiveSupport::TestCase | |
4 | + | |
5 | + include SearchTermHelper | |
6 | + | |
7 | + should 'register search term' do | |
8 | + environment = Environment.default | |
9 | + assert_difference 'SearchTerm.count', 1 do | |
10 | + register_search_term('fred mercury', 10, 1, environment, 'people') | |
11 | + end | |
12 | + end | |
13 | + | |
14 | + should 'register search term normalized' do | |
15 | + environment = Environment.default | |
16 | + assert_difference 'SearchTerm.count', 1 do | |
17 | + register_search_term('FrEd mErCuRy', 10, 1, environment, 'people') | |
18 | + register_search_term('fReD MeRcUrY', 10, 1, environment, 'people') | |
19 | + assert SearchTerm.find_or_create('fred mercury', environment, 'people') | |
20 | + end | |
21 | + end | |
22 | + | |
23 | +end | ... | ... |