Module: Recommendations::User::Suggestions

Defined in:
lib/recommendations/user/suggestions.rb

Instance Method Summary collapse

Instance Method Details

#suggestions ⇒ Object



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_suggestions ⇒ Object



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