# predictionio-template-java-ecom-recommender **Repository Path**: mirrors_apache/predictionio-template-java-ecom-recommender ## Basic Information - **Project Name**: predictionio-template-java-ecom-recommender - **Description**: PredictionIO E-Commerce Recommendation Engine Template (Java-based parallelized engine) - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-22 - **Last Updated**: 2025-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # E-Commerce Recommendation Template in Java ## Documentation Please refer to https://predictionio.apache.org/templates/javaecommercerecommendation/quickstart/. ## Versions ### v0.14.0 Update for Apache PredictionIO 0.14.0 ### v0.13.0 Update for Apache PredictionIO 0.13.0 ### v0.12.0-incubating - Bump version number to track PredictionIO version - Sets default build targets according to PredictionIO - Fix compilation issue with Scala 2.11 ### 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 ### v0.1.1 - parallelize filtering valid items ### v0.1.0 - initial version ## Development Notes ### Import Sample Data ``` $ python data/import_eventserver.py --access_key ``` ### Query normal: ``` $ curl -H "Content-Type: application/json" \ -d '{ "userEntityId" : "u1", "number" : 10 }' \ http://localhost:8000/queries.json ``` ``` $ curl -H "Content-Type: application/json" \ -d '{ "userEntityId" : "u1", "number": 10, "categories" : ["c4", "c3"] }' \ http://localhost:8000/queries.json ``` ``` curl -H "Content-Type: application/json" \ -d '{ "userEntityId" : "u1", "number": 10, "whitelist": ["i21", "i26", "i40"] }' \ http://localhost:8000/queries.json ``` ``` curl -H "Content-Type: application/json" \ -d '{ "userEntityId" : "u1", "number": 10, "blacklist": ["i21", "i26", "i40"] }' \ http://localhost:8000/queries.json ``` unknown user: ``` curl -H "Content-Type: application/json" \ -d '{ "userEntityId" : "unk1", "number": 10}' \ http://localhost:8000/queries.json ``` ### Handle New User new user: ``` curl -H "Content-Type: application/json" \ -d '{ "userEntityId" : "x1", "number": 10}' \ http://localhost:8000/queries.json ``` import some view events and try to get recommendation for x1 again. ``` accessKey= ``` ``` 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" }' ``` ### Handle Unavailable Items 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" }' ```