Merge branch 'develop'
diff --git a/README.md b/README.md
index 766cae6..f874bd5 100644
--- a/README.md
+++ b/README.md
@@ -2,10 +2,14 @@
## Documentation
-Please refer to http://docs.prediction.io/templates/similarproduct/quickstart/
+Please refer to http://predictionio.incubator.apache.org/templates/similarproduct/quickstart/
## Versions
+### v0.4.0
+
+Update for Apache PredictionIO 0.10.0-incubating
+
### v0.3.2
- Fix CooccurrenceAlgorithm with unknown item ids
diff --git a/build.sbt b/build.sbt
index 3260f8e..e47aee3 100644
--- a/build.sbt
+++ b/build.sbt
@@ -4,14 +4,14 @@
name := "template-scala-parallel-similarproduct"
-organization := "io.prediction"
+organization := "org.apache.predictionio"
parallelExecution in Test := false
test in assembly := {}
libraryDependencies ++= Seq(
- "io.prediction" %% "core" % pioVersion.value % "provided",
- "org.apache.spark" %% "spark-core" % "1.3.0" % "provided",
- "org.apache.spark" %% "spark-mllib" % "1.3.0" % "provided",
- "org.scalatest" %% "scalatest" % "2.2.1" % "test")
+ "org.apache.predictionio" %% "apache-predictionio-core" % "0.10.0-incubating" % "provided",
+ "org.apache.spark" %% "spark-core" % "1.3.0" % "provided",
+ "org.apache.spark" %% "spark-mllib" % "1.3.0" % "provided",
+ "org.scalatest" %% "scalatest" % "2.2.1" % "test")
diff --git a/project/pio-build.sbt b/project/pio-build.sbt
deleted file mode 100644
index 8346a96..0000000
--- a/project/pio-build.sbt
+++ /dev/null
@@ -1 +0,0 @@
-addSbtPlugin("io.prediction" % "pio-build" % "0.9.0")
diff --git a/src/main/scala/ALSAlgorithm.scala b/src/main/scala/ALSAlgorithm.scala
index 7c0ddb9..2b6a3bb 100644
--- a/src/main/scala/ALSAlgorithm.scala
+++ b/src/main/scala/ALSAlgorithm.scala
@@ -1,8 +1,8 @@
package org.template.similarproduct
-import io.prediction.controller.P2LAlgorithm
-import io.prediction.controller.Params
-import io.prediction.data.storage.BiMap
+import org.apache.predictionio.controller.P2LAlgorithm
+import org.apache.predictionio.controller.Params
+import org.apache.predictionio.data.storage.BiMap
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
@@ -158,6 +158,7 @@
i = i,
items = model.items,
categories = query.categories,
+ categoryBlackList = query.categoryBlackList,
queryList = queryList,
whiteList = whiteList,
blackList = blackList
@@ -218,6 +219,7 @@
i: Int,
items: Map[Int, Item],
categories: Option[Set[String]],
+ categoryBlackList: Option[Set[String]],
queryList: Set[Int],
whiteList: Option[Set[Int]],
blackList: Option[Set[Int]]
@@ -232,6 +234,12 @@
// keep this item if has ovelap categories with the query
!(itemCat.toSet.intersect(cat).isEmpty)
}.getOrElse(false) // discard this item if it has no categories
+ }.getOrElse(true) &&
+ categoryBlackList.map { cat =>
+ items(i).categories.map { itemCat =>
+ // discard this item if has ovelap categories with the query
+ (itemCat.toSet.intersect(cat).isEmpty)
+ }.getOrElse(true) // keep this item if it has no categories
}.getOrElse(true)
}
diff --git a/src/main/scala/CooccurrenceAlgorithm.scala b/src/main/scala/CooccurrenceAlgorithm.scala
index 3834ead..dbac702 100644
--- a/src/main/scala/CooccurrenceAlgorithm.scala
+++ b/src/main/scala/CooccurrenceAlgorithm.scala
@@ -1,8 +1,8 @@
package org.template.similarproduct
-import io.prediction.controller.P2LAlgorithm
-import io.prediction.controller.Params
-import io.prediction.data.storage.BiMap
+import org.apache.predictionio.controller.P2LAlgorithm
+import org.apache.predictionio.controller.Params
+import org.apache.predictionio.data.storage.BiMap
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
diff --git a/src/main/scala/DataSource.scala b/src/main/scala/DataSource.scala
index b302d1a..f4c7221 100644
--- a/src/main/scala/DataSource.scala
+++ b/src/main/scala/DataSource.scala
@@ -1,11 +1,11 @@
package org.template.similarproduct
-import io.prediction.controller.PDataSource
-import io.prediction.controller.EmptyEvaluationInfo
-import io.prediction.controller.EmptyActualResult
-import io.prediction.controller.Params
-import io.prediction.data.storage.Event
-import io.prediction.data.store.PEventStore
+import org.apache.predictionio.controller.PDataSource
+import org.apache.predictionio.controller.EmptyEvaluationInfo
+import org.apache.predictionio.controller.EmptyActualResult
+import org.apache.predictionio.controller.Params
+import org.apache.predictionio.data.storage.Event
+import org.apache.predictionio.data.store.PEventStore
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
diff --git a/src/main/scala/Engine.scala b/src/main/scala/Engine.scala
index 766f7d8..c7a6a21 100644
--- a/src/main/scala/Engine.scala
+++ b/src/main/scala/Engine.scala
@@ -1,12 +1,13 @@
package org.template.similarproduct
-import io.prediction.controller.IEngineFactory
-import io.prediction.controller.Engine
+import org.apache.predictionio.controller.IEngineFactory
+import org.apache.predictionio.controller.Engine
case class Query(
items: List[String],
num: Int,
categories: Option[Set[String]],
+ categoryBlackList: Option[Set[String]],
whiteList: Option[Set[String]],
blackList: Option[Set[String]]
) extends Serializable
diff --git a/src/main/scala/Preparator.scala b/src/main/scala/Preparator.scala
index c5e42ec..6b84b01 100644
--- a/src/main/scala/Preparator.scala
+++ b/src/main/scala/Preparator.scala
@@ -1,6 +1,6 @@
package org.template.similarproduct
-import io.prediction.controller.PPreparator
+import org.apache.predictionio.controller.PPreparator
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
diff --git a/src/main/scala/Serving.scala b/src/main/scala/Serving.scala
index 7a7f124..8543796 100644
--- a/src/main/scala/Serving.scala
+++ b/src/main/scala/Serving.scala
@@ -1,6 +1,6 @@
package org.template.similarproduct
-import io.prediction.controller.LServing
+import org.apache.predictionio.controller.LServing
class Serving
extends LServing[Query, PredictedResult] {
diff --git a/src/test/scala/CooccurenceAlgorithmTest.scala b/src/test/scala/CooccurenceAlgorithmTest.scala
index 8a8e0b4..29ac40e 100644
--- a/src/test/scala/CooccurenceAlgorithmTest.scala
+++ b/src/test/scala/CooccurenceAlgorithmTest.scala
@@ -1,6 +1,6 @@
package org.template.similarproduct
-import io.prediction.data.storage.BiMap
+import org.apache.predictionio.data.storage.BiMap
import org.scalatest.FlatSpec
import org.scalatest.Matchers
diff --git a/template.json b/template.json
index fb4a50b..d076ec5 100644
--- a/template.json
+++ b/template.json
@@ -1 +1 @@
-{"pio": {"version": { "min": "0.9.2" }}}
+{"pio": {"version": { "min": "0.10.0-incubating" }}}