0.11.0-incubating release
diff --git a/README.md b/README.md
index a4ac665..35df67d 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,18 @@
-# E-Commerce Recommendation Template
+# E-Commerce Recommendation Template in Java
## Documentation
-Please refer to http://docs.prediction.io/templates/javaecommercerecommendation/quickstart/
+Please refer to
+http://predictionio.incubator.apache.org/templates/javaecommercerecommendation/quickstart/.
## Versions
+### v0.11.0-incubating
+
+- Update to build with PredictionIO 0.11.0-incubating
+- Rename Java package name
+- Update SBT and plugin versions
+
### v0.1.2
add "org.jblas" dependency in build.sbt
@@ -19,13 +26,13 @@
## Development Notes
-### import sample data
+### Import Sample Data
```
$ python data/import_eventserver.py --access_key <your_access_key>
```
-### query
+### Query
normal:
@@ -77,7 +84,7 @@
http://localhost:8000/queries.json
```
-### handle new user
+### Handle New User
new user:
@@ -120,7 +127,7 @@
```
-## handle unavailable items
+### Handle Unavailable Items
Set the following items as unavailable (need to specify complete list each time when this list is changed):
diff --git a/build.sbt b/build.sbt
index 20e1346..36da38f 100644
--- a/build.sbt
+++ b/build.sbt
@@ -1,16 +1,8 @@
-import AssemblyKeys._
-
-assemblySettings
-
-name := "barebone-template"
-
-organization := "io.prediction"
+name := "template-java-ecom-recommender"
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.10" % "2.2.1" % "test",
- "com.google.guava" % "guava" % "12.0",
- "org.jblas" % "jblas" % "1.2.4"
-)
+ "org.apache.predictionio" %% "apache-predictionio-core" % "0.11.0-incubating" % "provided",
+ "org.apache.spark" %% "spark-core" % "1.3.0" % "provided",
+ "org.apache.spark" %% "spark-mllib" % "1.3.0" % "provided",
+ "com.google.guava" % "guava" % "12.0",
+ "org.jblas" % "jblas" % "1.2.4")
diff --git a/engine.json b/engine.json
index 1f8ed0c..0f44544 100644
--- a/engine.json
+++ b/engine.json
@@ -1,7 +1,7 @@
{
"id": "default",
"description": "Default settings",
- "engineFactory": "org.template.recommendation.RecommendationEngine",
+ "engineFactory": "org.example.recommendation.RecommendationEngine",
"datasource": {
"params" : {
"appName": "javadase"
diff --git a/project/assembly.sbt b/project/assembly.sbt
index 54c3252..e17409e 100644
--- a/project/assembly.sbt
+++ b/project/assembly.sbt
@@ -1 +1 @@
-addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.4")
diff --git a/project/build.properties b/project/build.properties
new file mode 100644
index 0000000..64317fd
--- /dev/null
+++ b/project/build.properties
@@ -0,0 +1 @@
+sbt.version=0.13.15
diff --git a/project/pio-build.sbt b/project/pio-build.sbt
deleted file mode 100644
index 878fc0d..0000000
--- a/project/pio-build.sbt
+++ /dev/null
@@ -1 +0,0 @@
-addSbtPlugin("io.prediction" % "pio-build" % "0.9.0")
\ No newline at end of file
diff --git a/src/main/java/org/template/recommendation/Algorithm.java b/src/main/java/org/example/recommendation/Algorithm.java
similarity index 98%
rename from src/main/java/org/template/recommendation/Algorithm.java
rename to src/main/java/org/example/recommendation/Algorithm.java
index 24b4e5c..349e945 100644
--- a/src/main/java/org/template/recommendation/Algorithm.java
+++ b/src/main/java/org/example/recommendation/Algorithm.java
@@ -1,10 +1,10 @@
-package org.template.recommendation;
+package org.example.recommendation;
import com.google.common.collect.Sets;
-import io.prediction.controller.java.PJavaAlgorithm;
-import io.prediction.data.storage.Event;
-import io.prediction.data.store.java.LJavaEventStore;
-import io.prediction.data.store.java.OptionHelper;
+import org.apache.predictionio.controller.java.PJavaAlgorithm;
+import org.apache.predictionio.data.storage.Event;
+import org.apache.predictionio.data.store.java.LJavaEventStore;
+import org.apache.predictionio.data.store.java.OptionHelper;
import org.apache.spark.SparkContext;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
diff --git a/src/main/java/org/template/recommendation/AlgorithmParams.java b/src/main/java/org/example/recommendation/AlgorithmParams.java
similarity index 95%
rename from src/main/java/org/template/recommendation/AlgorithmParams.java
rename to src/main/java/org/example/recommendation/AlgorithmParams.java
index 0466334..4b9c7ed 100644
--- a/src/main/java/org/template/recommendation/AlgorithmParams.java
+++ b/src/main/java/org/example/recommendation/AlgorithmParams.java
@@ -1,6 +1,6 @@
-package org.template.recommendation;
+package org.example.recommendation;
-import io.prediction.controller.Params;
+import org.apache.predictionio.controller.Params;
import java.util.List;
diff --git a/src/main/java/org/template/recommendation/DataSource.java b/src/main/java/org/example/recommendation/DataSource.java
similarity index 94%
rename from src/main/java/org/template/recommendation/DataSource.java
rename to src/main/java/org/example/recommendation/DataSource.java
index b9648c3..90ac975 100644
--- a/src/main/java/org/template/recommendation/DataSource.java
+++ b/src/main/java/org/example/recommendation/DataSource.java
@@ -1,13 +1,13 @@
-package org.template.recommendation;
+package org.example.recommendation;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
-import io.prediction.controller.EmptyParams;
-import io.prediction.controller.java.PJavaDataSource;
-import io.prediction.data.storage.Event;
-import io.prediction.data.storage.PropertyMap;
-import io.prediction.data.store.java.OptionHelper;
-import io.prediction.data.store.java.PJavaEventStore;
+import org.apache.predictionio.controller.EmptyParams;
+import org.apache.predictionio.controller.java.PJavaDataSource;
+import org.apache.predictionio.data.storage.Event;
+import org.apache.predictionio.data.storage.PropertyMap;
+import org.apache.predictionio.data.store.java.OptionHelper;
+import org.apache.predictionio.data.store.java.PJavaEventStore;
import org.apache.spark.SparkContext;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
diff --git a/src/main/java/org/template/recommendation/DataSourceParams.java b/src/main/java/org/example/recommendation/DataSourceParams.java
similarity index 73%
rename from src/main/java/org/template/recommendation/DataSourceParams.java
rename to src/main/java/org/example/recommendation/DataSourceParams.java
index 25ac426..4651b92 100644
--- a/src/main/java/org/template/recommendation/DataSourceParams.java
+++ b/src/main/java/org/example/recommendation/DataSourceParams.java
@@ -1,6 +1,6 @@
-package org.template.recommendation;
+package org.example.recommendation;
-import io.prediction.controller.Params;
+import org.apache.predictionio.controller.Params;
public class DataSourceParams implements Params{
private final String appName;
diff --git a/src/main/java/org/template/recommendation/Item.java b/src/main/java/org/example/recommendation/Item.java
similarity index 94%
rename from src/main/java/org/template/recommendation/Item.java
rename to src/main/java/org/example/recommendation/Item.java
index 1365045..2159beb 100644
--- a/src/main/java/org/template/recommendation/Item.java
+++ b/src/main/java/org/example/recommendation/Item.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
import java.io.Serializable;
import java.util.Set;
diff --git a/src/main/java/org/template/recommendation/ItemScore.java b/src/main/java/org/example/recommendation/ItemScore.java
similarity index 95%
rename from src/main/java/org/template/recommendation/ItemScore.java
rename to src/main/java/org/example/recommendation/ItemScore.java
index a3fca92..23c3fdb 100644
--- a/src/main/java/org/template/recommendation/ItemScore.java
+++ b/src/main/java/org/example/recommendation/ItemScore.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
import java.io.Serializable;
diff --git a/src/main/java/org/template/recommendation/Model.java b/src/main/java/org/example/recommendation/Model.java
similarity index 96%
rename from src/main/java/org/template/recommendation/Model.java
rename to src/main/java/org/example/recommendation/Model.java
index 129cb2a..ebf42e5 100644
--- a/src/main/java/org/template/recommendation/Model.java
+++ b/src/main/java/org/example/recommendation/Model.java
@@ -1,7 +1,7 @@
-package org.template.recommendation;
+package org.example.recommendation;
-import io.prediction.controller.Params;
-import io.prediction.controller.PersistentModel;
+import org.apache.predictionio.controller.Params;
+import org.apache.predictionio.controller.PersistentModel;
import org.apache.spark.SparkContext;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
diff --git a/src/main/java/org/template/recommendation/PredictedResult.java b/src/main/java/org/example/recommendation/PredictedResult.java
similarity index 92%
rename from src/main/java/org/template/recommendation/PredictedResult.java
rename to src/main/java/org/example/recommendation/PredictedResult.java
index b89c3a9..54d7ade 100644
--- a/src/main/java/org/template/recommendation/PredictedResult.java
+++ b/src/main/java/org/example/recommendation/PredictedResult.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
import java.io.Serializable;
import java.util.List;
diff --git a/src/main/java/org/template/recommendation/Preparator.java b/src/main/java/org/example/recommendation/Preparator.java
similarity index 72%
rename from src/main/java/org/template/recommendation/Preparator.java
rename to src/main/java/org/example/recommendation/Preparator.java
index 003855b..33beb50 100644
--- a/src/main/java/org/template/recommendation/Preparator.java
+++ b/src/main/java/org/example/recommendation/Preparator.java
@@ -1,6 +1,6 @@
-package org.template.recommendation;
+package org.example.recommendation;
-import io.prediction.controller.java.PJavaPreparator;
+import org.apache.predictionio.controller.java.PJavaPreparator;
import org.apache.spark.SparkContext;
public class Preparator extends PJavaPreparator<TrainingData, PreparedData> {
diff --git a/src/main/java/org/template/recommendation/PreparedData.java b/src/main/java/org/example/recommendation/PreparedData.java
similarity index 89%
rename from src/main/java/org/template/recommendation/PreparedData.java
rename to src/main/java/org/example/recommendation/PreparedData.java
index 6f732cc..802b7f2 100644
--- a/src/main/java/org/template/recommendation/PreparedData.java
+++ b/src/main/java/org/example/recommendation/PreparedData.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
import java.io.Serializable;
diff --git a/src/main/java/org/template/recommendation/Query.java b/src/main/java/org/example/recommendation/Query.java
similarity index 97%
rename from src/main/java/org/template/recommendation/Query.java
rename to src/main/java/org/example/recommendation/Query.java
index 316553d..977f566 100644
--- a/src/main/java/org/template/recommendation/Query.java
+++ b/src/main/java/org/example/recommendation/Query.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
import java.io.Serializable;
import java.util.Collections;
diff --git a/src/main/java/org/template/recommendation/RecommendationEngine.java b/src/main/java/org/example/recommendation/RecommendationEngine.java
similarity index 62%
rename from src/main/java/org/template/recommendation/RecommendationEngine.java
rename to src/main/java/org/example/recommendation/RecommendationEngine.java
index d757737..ead9aa7 100644
--- a/src/main/java/org/template/recommendation/RecommendationEngine.java
+++ b/src/main/java/org/example/recommendation/RecommendationEngine.java
@@ -1,10 +1,10 @@
-package org.template.recommendation;
+package org.example.recommendation;
-import io.prediction.controller.EmptyParams;
-import io.prediction.controller.Engine;
-import io.prediction.controller.EngineFactory;
-import io.prediction.core.BaseAlgorithm;
-import io.prediction.core.BaseEngine;
+import org.apache.predictionio.controller.EmptyParams;
+import org.apache.predictionio.controller.Engine;
+import org.apache.predictionio.controller.EngineFactory;
+import org.apache.predictionio.core.BaseAlgorithm;
+import org.apache.predictionio.core.BaseEngine;
import java.util.Collections;
import java.util.Set;
diff --git a/src/main/java/org/template/recommendation/Serving.java b/src/main/java/org/example/recommendation/Serving.java
similarity index 71%
rename from src/main/java/org/template/recommendation/Serving.java
rename to src/main/java/org/example/recommendation/Serving.java
index 6a122da..80d6c83 100644
--- a/src/main/java/org/template/recommendation/Serving.java
+++ b/src/main/java/org/example/recommendation/Serving.java
@@ -1,6 +1,6 @@
-package org.template.recommendation;
+package org.example.recommendation;
-import io.prediction.controller.java.LJavaServing;
+import org.apache.predictionio.controller.java.LJavaServing;
import scala.collection.Seq;
public class Serving extends LJavaServing<Query, PredictedResult> {
diff --git a/src/main/java/org/template/recommendation/TrainingData.java b/src/main/java/org/example/recommendation/TrainingData.java
similarity index 93%
rename from src/main/java/org/template/recommendation/TrainingData.java
rename to src/main/java/org/example/recommendation/TrainingData.java
index 7b800f1..35af8a0 100644
--- a/src/main/java/org/template/recommendation/TrainingData.java
+++ b/src/main/java/org/example/recommendation/TrainingData.java
@@ -1,6 +1,6 @@
-package org.template.recommendation;
+package org.example.recommendation;
-import io.prediction.controller.SanityCheck;
+import org.apache.predictionio.controller.SanityCheck;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
diff --git a/src/main/java/org/template/recommendation/User.java b/src/main/java/org/example/recommendation/User.java
similarity index 94%
rename from src/main/java/org/template/recommendation/User.java
rename to src/main/java/org/example/recommendation/User.java
index f5f3cc1..d187a20 100644
--- a/src/main/java/org/template/recommendation/User.java
+++ b/src/main/java/org/example/recommendation/User.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
import java.io.Serializable;
import java.util.Map;
diff --git a/src/main/java/org/template/recommendation/UserItemEvent.java b/src/main/java/org/example/recommendation/UserItemEvent.java
similarity index 95%
rename from src/main/java/org/template/recommendation/UserItemEvent.java
rename to src/main/java/org/example/recommendation/UserItemEvent.java
index 3da56ca..d548a18 100644
--- a/src/main/java/org/template/recommendation/UserItemEvent.java
+++ b/src/main/java/org/example/recommendation/UserItemEvent.java
@@ -1,4 +1,4 @@
-package org.template.recommendation;
+package org.example.recommendation;
import java.io.Serializable;
diff --git a/src/main/java/org/example/recommendation/UserItemEventType.java b/src/main/java/org/example/recommendation/UserItemEventType.java
new file mode 100644
index 0000000..f86b411
--- /dev/null
+++ b/src/main/java/org/example/recommendation/UserItemEventType.java
@@ -0,0 +1,5 @@
+package org.example.recommendation;
+
+public enum UserItemEventType {
+ VIEW, BUY
+}
diff --git a/src/main/java/org/template/recommendation/evaluation/EvaluationParameter.java b/src/main/java/org/example/recommendation/evaluation/EvaluationParameter.java
similarity index 70%
rename from src/main/java/org/template/recommendation/evaluation/EvaluationParameter.java
rename to src/main/java/org/example/recommendation/evaluation/EvaluationParameter.java
index da15a77..33028eb 100644
--- a/src/main/java/org/template/recommendation/evaluation/EvaluationParameter.java
+++ b/src/main/java/org/example/recommendation/evaluation/EvaluationParameter.java
@@ -1,10 +1,10 @@
-package org.template.recommendation.evaluation;
+package org.example.recommendation.evaluation;
-import io.prediction.controller.EmptyParams;
-import io.prediction.controller.EngineParams;
-import io.prediction.controller.java.JavaEngineParamsGenerator;
-import org.template.recommendation.AlgorithmParams;
-import org.template.recommendation.DataSourceParams;
+import org.apache.predictionio.controller.EmptyParams;
+import org.apache.predictionio.controller.EngineParams;
+import org.apache.predictionio.controller.java.JavaEngineParamsGenerator;
+import org.example.recommendation.AlgorithmParams;
+import org.example.recommendation.DataSourceParams;
import java.util.Arrays;
import java.util.Collections;
diff --git a/src/main/java/org/example/recommendation/evaluation/EvaluationSpec.java b/src/main/java/org/example/recommendation/evaluation/EvaluationSpec.java
new file mode 100644
index 0000000..2bafc7b
--- /dev/null
+++ b/src/main/java/org/example/recommendation/evaluation/EvaluationSpec.java
@@ -0,0 +1,28 @@
+package org.example.recommendation.evaluation;
+
+import org.apache.predictionio.controller.Engine;
+import org.apache.predictionio.controller.java.JavaEvaluation;
+import org.apache.predictionio.core.BaseAlgorithm;
+import org.example.recommendation.Algorithm;
+import org.example.recommendation.DataSource;
+import org.example.recommendation.PredictedResult;
+import org.example.recommendation.Preparator;
+import org.example.recommendation.PreparedData;
+import org.example.recommendation.Query;
+import org.example.recommendation.Serving;
+
+import java.util.Collections;
+
+public class EvaluationSpec extends JavaEvaluation {
+ public EvaluationSpec() {
+ this.setEngineMetric(
+ new Engine<>(
+ DataSource.class,
+ Preparator.class,
+ Collections.<String, Class<? extends BaseAlgorithm<PreparedData, ?, Query, PredictedResult>>>singletonMap("algo", Algorithm.class),
+ Serving.class
+ ),
+ new PrecisionMetric()
+ );
+ }
+}
diff --git a/src/main/java/org/template/recommendation/evaluation/PrecisionMetric.java b/src/main/java/org/example/recommendation/evaluation/PrecisionMetric.java
similarity index 85%
rename from src/main/java/org/template/recommendation/evaluation/PrecisionMetric.java
rename to src/main/java/org/example/recommendation/evaluation/PrecisionMetric.java
index 277925d..e412fd5 100644
--- a/src/main/java/org/template/recommendation/evaluation/PrecisionMetric.java
+++ b/src/main/java/org/example/recommendation/evaluation/PrecisionMetric.java
@@ -1,14 +1,14 @@
-package org.template.recommendation.evaluation;
+package org.example.recommendation.evaluation;
-import io.prediction.controller.EmptyParams;
-import io.prediction.controller.Metric;
-import io.prediction.controller.java.SerializableComparator;
+import org.apache.predictionio.controller.EmptyParams;
+import org.apache.predictionio.controller.Metric;
+import org.apache.predictionio.controller.java.SerializableComparator;
import org.apache.spark.SparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.rdd.RDD;
-import org.template.recommendation.ItemScore;
-import org.template.recommendation.PredictedResult;
-import org.template.recommendation.Query;
+import org.example.recommendation.ItemScore;
+import org.example.recommendation.PredictedResult;
+import org.example.recommendation.Query;
import scala.Tuple2;
import scala.Tuple3;
import scala.collection.JavaConversions;
diff --git a/src/main/java/org/template/recommendation/UserItemEventType.java b/src/main/java/org/template/recommendation/UserItemEventType.java
deleted file mode 100644
index 6728cef..0000000
--- a/src/main/java/org/template/recommendation/UserItemEventType.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.template.recommendation;
-
-public enum UserItemEventType {
- VIEW, BUY
-}
diff --git a/src/main/java/org/template/recommendation/evaluation/EvaluationSpec.java b/src/main/java/org/template/recommendation/evaluation/EvaluationSpec.java
deleted file mode 100644
index bfecca1..0000000
--- a/src/main/java/org/template/recommendation/evaluation/EvaluationSpec.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.template.recommendation.evaluation;
-
-import io.prediction.controller.Engine;
-import io.prediction.controller.java.JavaEvaluation;
-import io.prediction.core.BaseAlgorithm;
-import org.template.recommendation.Algorithm;
-import org.template.recommendation.DataSource;
-import org.template.recommendation.PredictedResult;
-import org.template.recommendation.Preparator;
-import org.template.recommendation.PreparedData;
-import org.template.recommendation.Query;
-import org.template.recommendation.Serving;
-
-import java.util.Collections;
-
-public class EvaluationSpec extends JavaEvaluation {
- public EvaluationSpec() {
- this.setEngineMetric(
- new Engine<>(
- DataSource.class,
- Preparator.class,
- Collections.<String, Class<? extends BaseAlgorithm<PreparedData, ?, Query, PredictedResult>>>singletonMap("algo", Algorithm.class),
- Serving.class
- ),
- new PrecisionMetric()
- );
- }
-}
diff --git a/template.json b/template.json
index 7f97fce..d076ec5 100644
--- a/template.json
+++ b/template.json
@@ -1 +1 @@
-{"pio": {"version": { "min": "0.9.3" }}}
+{"pio": {"version": { "min": "0.10.0-incubating" }}}