Commit 0f9731a34c27afb7222d8d28374923d21c6925d1
1 parent
3ebea73a
Exists in
master
and in
29 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 | 15 | context.search_terms.where(:term => term, :asset => asset).first || context.search_terms.create!(:term => term, :asset=> asset) |
16 | 16 | end |
17 | 17 | |
18 | - before_save :calculate_score | |
19 | - | |
20 | 18 | def calculate_score |
21 | 19 | valid_occurrences = occurrences.valid |
22 | 20 | if valid_occurrences.present? |
... | ... | @@ -30,5 +28,6 @@ class SearchTerm < ActiveRecord::Base |
30 | 28 | else |
31 | 29 | self.score = 0 |
32 | 30 | end |
31 | + self.save! | |
33 | 32 | end |
34 | 33 | end | ... | ... |
test/unit/search_term_test.rb
... | ... | @@ -48,24 +48,26 @@ class SearchTermTest < ActiveSupport::TestCase |
48 | 48 | |
49 | 49 | should 'calculate score' do |
50 | 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 | 55 | assert search_term.score > 0, "Score was not calculated." |
54 | 56 | end |
55 | 57 | |
56 | 58 | should 'not consider expired occurrences to calculate the score' do |
57 | 59 | search_term = SearchTerm.find_or_create('universe', Environment.default) |
58 | 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 | 62 | assert search_term.score == 0, "Considered expired occurrence to calculate the score." |
61 | 63 | end |
62 | 64 | |
63 | 65 | should 'calculate search_terms scores' do |
64 | - st1 = SearchTerm.create!(:term => 'st1') | |
66 | + st1 = SearchTerm.find_or_create('st1', Environment.default) | |
65 | 67 | SearchTermOccurrence.create!(:search_term => st1, :total => 10, :indexed => 3) |
66 | 68 | SearchTermOccurrence.create!(:search_term => st1, :total => 20, :indexed => 8) |
67 | 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 | 71 | SearchTermOccurrence.create!(:search_term => st2, :total => 10, :indexed => 7) |
70 | 72 | SearchTermOccurrence.create!(:search_term => st2, :total => 20, :indexed => 16) |
71 | 73 | SearchTermOccurrence.create!(:search_term => st2, :total => 30, :indexed => 21) | ... | ... |