Module: Recommendations::User::Suggestions

Included in:
Recommendations::User
Defined in:
lib/recommendations/user/suggestions.rb

Instance Method Summary collapse

Instance Method Details

#suggestionsObject



4
5
6
7
# File 'lib/recommendations/user/suggestions.rb', line 4

def suggestions
  Recommendations.redis.hgetall("recommendations:suggestions:user:#{id}")
                       .select {|key, value| Float(value) > 0}
end

#update_suggestionsObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/recommendations/user/suggestions.rb', line 9

def update_suggestions
  ratings = self.ratings

  suggestions = ratings.inject({}) do |buffer, (item_id, score)|
    similars = Item.find(item_id).similars
    similars.reject! {|i| ratings.key?(i)}

    similars.each do |similar|
      buffer[similar] ||= 0
      buffer[similar] += (Float(score) - 3) # 0..5 score => -2..2
    end

    buffer
  end

  #
  #self.similars.each do |similar| #similars users
    #remover os ratings q o usuário já fez
  #  similar_ratings = User.new(similar).ratings
  #  similar_ratings.reject! {|i| ratings.key?(i.key)}

#          similar_ratings.each do |(item_id, score)| #user ratings
 #           suggestions[item_id] ||= 0
  #          suggestions[item_id] += (Float(score) - 3) # 0..5 score => -2..2
   #       end
   #     end
  #
  Recommendations.redis.hmset("recommendations:suggestions:user:#{id}", *suggestions.flatten)
end