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)