PredictionIO E-Commerce Recommendation Engine Template (Scala-based parallelized engine)
Please refer to
https://predictionio.apache.org/templates/ecommercerecommendation/quickstart/
Update for Apache PredictionIO 0.14.0
Update for Apache PredictionIO 0.13.0
Change from ALSAlgorithm.scala to ECommAlgorithm.scala
add some unit tests for testing code that may be customized
update for PredictionIO 0.9.2, including:
$ python data/import_eventserver.py --access_key <your_access_key>
normal:
$ curl -H "Content-Type: application/json" \
-d '{
"user" : "u1",
"num" : 10 }' \
http://localhost:8000/queries.json \
-w %{time_connect}:%{time_starttransfer}:%{time_total}
$ curl -H "Content-Type: application/json" \
-d '{
"user" : "u1",
"num": 10,
"categories" : ["c4", "c3"]
}' \
http://localhost:8000/queries.json \
-w %{time_connect}:%{time_starttransfer}:%{time_total}
curl -H "Content-Type: application/json" \
-d '{
"user" : "u1",
"num": 10,
"whiteList": ["i21", "i26", "i40"]
}' \
http://localhost:8000/queries.json \
-w %{time_connect}:%{time_starttransfer}:%{time_total}
curl -H "Content-Type: application/json" \
-d '{
"user" : "u1",
"num": 10,
"blackList": ["i21", "i26", "i40"]
}' \
http://localhost:8000/queries.json \
-w %{time_connect}:%{time_starttransfer}:%{time_total}
unknown user:
curl -H "Content-Type: application/json" \
-d '{
"user" : "unk1",
"num": 10}' \
http://localhost:8000/queries.json \
-w %{time_connect}:%{time_starttransfer}:%{time_total}
new user:
curl -H "Content-Type: application/json" \
-d '{
"user" : "x1",
"num": 10}' \
http://localhost:8000/queries.json \
-w %{time_connect}:%{time_starttransfer}:%{time_total}
import some view events and try to get recommendation for x1 again.
accessKey=<YOUR_ACCESS_KEY>
curl -i -X POST http://localhost:7070/events.json?accessKey=$accessKey \
-H "Content-Type: application/json" \
-d '{
"event" : "view",
"entityType" : "user"
"entityId" : "x1",
"targetEntityType" : "item",
"targetEntityId" : "i2",
"eventTime" : "2015-02-17T02:11:21.934Z"
}'
curl -i -X POST http://localhost:7070/events.json?accessKey=$accessKey \
-H "Content-Type: application/json" \
-d '{
"event" : "view",
"entityType" : "user"
"entityId" : "x1",
"targetEntityType" : "item",
"targetEntityId" : "i3",
"eventTime" : "2015-02-17T02:12:21.934Z"
}'
Set the following items as unavailable (need to specify complete list each time when this list is changed):
curl -i -X POST http://localhost:7070/events.json?accessKey=$accessKey \
-H "Content-Type: application/json" \
-d '{
"event" : "$set",
"entityType" : "constraint"
"entityId" : "unavailableItems",
"properties" : {
"items": ["i43", "i20", "i37", "i3", "i4", "i5"],
}
"eventTime" : "2015-02-17T02:11:21.934Z"
}'
Set empty list when no more items unavailable:
curl -i -X POST http://localhost:7070/events.json?accessKey=$accessKey \
-H "Content-Type: application/json" \
-d '{
"event" : "$set",
"entityType" : "constraint"
"entityId" : "unavailableItems",
"properties" : {
"items": [],
}
"eventTime" : "2015-02-18T02:11:21.934Z"
}'