Merge branch 'develop'
diff --git a/README.md b/README.md
index 3bdc167..6566db4 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,10 @@
### develop
+### v0.3.2
+
+- Fix incorrect top items in batchPredict() (issue #5)
+
### v0.3.1
- Add Evaluation module and modify DataSource for it
diff --git a/src/main/scala/ALSAlgorithm.scala b/src/main/scala/ALSAlgorithm.scala
index 60282db..ad9a050 100644
--- a/src/main/scala/ALSAlgorithm.scala
+++ b/src/main/scala/ALSAlgorithm.scala
@@ -115,17 +115,17 @@
val userRatings: RDD[(Int, Iterable[MLlibRating])] = ratings.groupBy(_.user)
userIxQueries.leftOuterJoin(userRatings)
- .map {
+ .map {
// When there are ratings
case (userIx, ((ix, query), Some(ratings))) => {
val topItemScores: Array[ItemScore] = ratings
.toArray
- .sortBy(_.rating)
+ .sortBy(_.rating)(Ordering.Double.reverse) // note: from large to small ordering
.take(query.num)
.map { rating => ItemScore(
model.itemStringIntMap.inverse(rating.product),
rating.rating) }
-
+
(ix, PredictedResult(itemScores = topItemScores))
}
// When user doesn't exist in training data