lib/recommendable/rater/recommender.rb in recommendable-2.1.4 vs lib/recommendable/rater/recommender.rb in recommendable-2.2.0
- old
+ new
@@ -20,11 +20,13 @@
# @return [Array] a list of things this person's gonna love
def recommended_for(klass, count = 10, offset = 0)
recommended_set = Recommendable::Helpers::RedisKeyMapper.recommended_set_for(klass, self.id)
return Recommendable.query(klass, []) unless rated_anything? && Recommendable.redis.zcard(recommended_set) > 0
- ids = Recommendable.redis.zrevrange(recommended_set, offset, count - 1)
- Recommendable.query(klass, ids)
+ ids = Recommendable.redis.zrevrange(recommended_set, offset, count - 1, :with_scores => true)
+ ids = ids.select { |id, score| score > 0 }.map { |pair| pair.first }
+
+ Recommendable.query(klass, ids).sort_by { |record| ids.index(record.id.to_s) }
end
# Removes an item from a user's set of recommendations
# @private
def unrecommend(obj)