Commit 0f9731a34c27afb7222d8d28374923d21c6925d1
1 parent
3ebea73a
Exists in
master
and in
22 other branches
[search-improvements] Not calculate search_term score before save
Showing
2 changed files
with
8 additions
and
7 deletions
Show diff stats
app/models/search_term.rb
@@ -15,8 +15,6 @@ class SearchTerm < ActiveRecord::Base | @@ -15,8 +15,6 @@ class SearchTerm < ActiveRecord::Base | ||
15 | context.search_terms.where(:term => term, :asset => asset).first || context.search_terms.create!(:term => term, :asset=> asset) | 15 | context.search_terms.where(:term => term, :asset => asset).first || context.search_terms.create!(:term => term, :asset=> asset) |
16 | end | 16 | end |
17 | 17 | ||
18 | - before_save :calculate_score | ||
19 | - | ||
20 | def calculate_score | 18 | def calculate_score |
21 | valid_occurrences = occurrences.valid | 19 | valid_occurrences = occurrences.valid |
22 | if valid_occurrences.present? | 20 | if valid_occurrences.present? |
@@ -30,5 +28,6 @@ class SearchTerm < ActiveRecord::Base | @@ -30,5 +28,6 @@ class SearchTerm < ActiveRecord::Base | ||
30 | else | 28 | else |
31 | self.score = 0 | 29 | self.score = 0 |
32 | end | 30 | end |
31 | + self.save! | ||
33 | end | 32 | end |
34 | end | 33 | end |
test/unit/search_term_test.rb
@@ -48,24 +48,26 @@ class SearchTermTest < ActiveSupport::TestCase | @@ -48,24 +48,26 @@ class SearchTermTest < ActiveSupport::TestCase | ||
48 | 48 | ||
49 | should 'calculate score' do | 49 | should 'calculate score' do |
50 | search_term = SearchTerm.find_or_create('universe', Environment.default) | 50 | search_term = SearchTerm.find_or_create('universe', Environment.default) |
51 | - occurrence = SearchTermOccurrence.create!(:search_term => search_term, :total => 10, :indexed => 3) | ||
52 | - search_term.save! | 51 | + SearchTermOccurrence.create!(:search_term => search_term, :total => 10, :indexed => 3) |
52 | + # Search term must happens at least two times to be considered | ||
53 | + SearchTermOccurrence.create!(:search_term => search_term, :total => 10, :indexed => 3) | ||
54 | + search_term.calculate_score | ||
53 | assert search_term.score > 0, "Score was not calculated." | 55 | assert search_term.score > 0, "Score was not calculated." |
54 | end | 56 | end |
55 | 57 | ||
56 | should 'not consider expired occurrences to calculate the score' do | 58 | should 'not consider expired occurrences to calculate the score' do |
57 | search_term = SearchTerm.find_or_create('universe', Environment.default) | 59 | search_term = SearchTerm.find_or_create('universe', Environment.default) |
58 | occurrence = SearchTermOccurrence.create!(:search_term => search_term, :total => 10, :indexed => 3, :created_at => DateTime.now - (SearchTermOccurrence::EXPIRATION_TIME + 1.day)) | 60 | occurrence = SearchTermOccurrence.create!(:search_term => search_term, :total => 10, :indexed => 3, :created_at => DateTime.now - (SearchTermOccurrence::EXPIRATION_TIME + 1.day)) |
59 | - search_term.save! | 61 | + search_term.calculate_score |
60 | assert search_term.score == 0, "Considered expired occurrence to calculate the score." | 62 | assert search_term.score == 0, "Considered expired occurrence to calculate the score." |
61 | end | 63 | end |
62 | 64 | ||
63 | should 'calculate search_terms scores' do | 65 | should 'calculate search_terms scores' do |
64 | - st1 = SearchTerm.create!(:term => 'st1') | 66 | + st1 = SearchTerm.find_or_create('st1', Environment.default) |
65 | SearchTermOccurrence.create!(:search_term => st1, :total => 10, :indexed => 3) | 67 | SearchTermOccurrence.create!(:search_term => st1, :total => 10, :indexed => 3) |
66 | SearchTermOccurrence.create!(:search_term => st1, :total => 20, :indexed => 8) | 68 | SearchTermOccurrence.create!(:search_term => st1, :total => 20, :indexed => 8) |
67 | SearchTermOccurrence.create!(:search_term => st1, :total => 30, :indexed => 9) | 69 | SearchTermOccurrence.create!(:search_term => st1, :total => 30, :indexed => 9) |
68 | - st2 = SearchTerm.create!(:term => 'st2') | 70 | + st2 = SearchTerm.find_or_create('st2', Environment.default) |
69 | SearchTermOccurrence.create!(:search_term => st2, :total => 10, :indexed => 7) | 71 | SearchTermOccurrence.create!(:search_term => st2, :total => 10, :indexed => 7) |
70 | SearchTermOccurrence.create!(:search_term => st2, :total => 20, :indexed => 16) | 72 | SearchTermOccurrence.create!(:search_term => st2, :total => 20, :indexed => 16) |
71 | SearchTermOccurrence.create!(:search_term => st2, :total => 30, :indexed => 21) | 73 | SearchTermOccurrence.create!(:search_term => st2, :total => 30, :indexed => 21) |