http://git-wip-us.apache.org/repos/asf/predictionio-site/blob/6e02047e/templates/productranking/quickstart/index.html
----------------------------------------------------------------------
diff --git a/templates/productranking/quickstart/index.html
b/templates/productranking/quickstart/index.html
index fade441..4b9dcfc 100644
--- a/templates/productranking/quickstart/index.html
+++ b/templates/productranking/quickstart/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html><head><title>Quick Start - Product Ranking Engine
Template</title><meta charset="utf-8"/><meta content="IE=edge,chrome=1"
http-equiv="X-UA-Compatible"/><meta name="viewport"
content="width=device-width, initial-scale=1.0"/><meta class="swiftype"
name="title" data-type="string" content="Quick Start - Product Ranking Engine
Template"/><link rel="canonical"
href="https://predictionio.apache.org/templates/productranking/quickstart/"/><link
href="/images/favicon/normal-b330020a.png" rel="shortcut icon"/><link
href="/images/favicon/apple-c0febcf2.png" rel="apple-touch-icon"/><link
href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
rel="stylesheet"/><link
href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css"
rel="stylesheet"/><link href="/stylesheets/application-eccfc6cb.css"
rel="stylesheet" type="text/css"/><script
src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5sh
iv.min.js"></script><script
src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script
src="//use.typekit.net/pqo0itb.js"></script><script>try{Typekit.load({ async:
true });}catch(e){}</script></head><body><div id="global"><header><div
class="container" id="header-wrapper"><div class="row"><div
class="col-sm-12"><div id="logo-wrapper"><span id="drawer-toggle"></span><a
href="#"></a><a href="http://predictionio.apache.org/"><img alt="Apache
PredictionIO" id="logo"
src="/images/logos/logo-ee2b9bb3.png"/></a><span>®</span></div><div
id="menu-wrapper"><div id="pill-wrapper"><a class="pill left"
href="/gallery/template-gallery">TEMPLATES</a> <a class="pill right"
href="//github.com/apache/predictionio/">OPEN SOURCE</a></div></div><img
class="mobile-search-bar-toggler hidden-md hidden-lg"
src="/images/icons/search-glass-704bd4ff.png"/></div></div></div></header><div
id="search-bar-row-wrapper"><div class="container-fluid"
id="search-bar-row"><div clas
s="row"><div class="col-md-9 col-sm-11 col-xs-11"><div class="hidden-md
hidden-lg" id="mobile-page-heading-wrapper"><p>PredictionIO Docs</p><h4>Quick
Start - Product Ranking Engine Template</h4></div><h4 class="hidden-sm
hidden-xs">PredictionIO Docs</h4></div><div class="col-md-3 col-sm-1 col-xs-1
hidden-md hidden-lg"><img id="left-menu-indicator"
src="/images/icons/down-arrow-dfe9f7fe.png"/></div><div class="col-md-3
col-sm-12 col-xs-12 swiftype-wrapper"><div class="swiftype"><form
class="search-form"><img class="search-box-toggler hidden-xs hidden-sm"
src="/images/icons/search-glass-704bd4ff.png"/><div class="search-box"><img
src="/images/icons/search-glass-704bd4ff.png"/><input type="text"
id="st-search-input" class="st-search-input" placeholder="Search
Doc..."/></div><img class="swiftype-row-hider hidden-md hidden-lg"
src="/images/icons/drawer-toggle-active-fcbef12a.png"/></form></div></div><div
class="mobile-left-menu-toggler hidden-md
hidden-lg"></div></div></div></div><div id
="page" class="container-fluid"><div class="row"><div id="left-menu-wrapper"
class="col-md-3"><nav id="nav-main"><ul><li class="level-1"><a
class="expandible" href="/"><span>Apache PredictionIO®
Documentation</span></a><ul><li class="level-2"><a class="final"
href="/"><span>Welcome to Apache PredictionIO®</span></a></li></ul></li><li
class="level-1"><a class="expandible" href="#"><span>Getting
Started</span></a><ul><li class="level-2"><a class="final"
href="/start/"><span>A Quick Intro</span></a></li><li class="level-2"><a
class="final" href="/install/"><span>Installing Apache
PredictionIO</span></a></li><li class="level-2"><a class="final"
href="/start/download/"><span>Downloading an Engine Template</span></a></li><li
class="level-2"><a class="final" href="/start/deploy/"><span>Deploying Your
First Engine</span></a></li><li class="level-2"><a class="final"
href="/start/customize/"><span>Customizing the
Engine</span></a></li></ul></li><li class="level-1"><a class="expandible" href
="#"><span>Integrating with Your App</span></a><ul><li class="level-2"><a
class="final" href="/appintegration/"><span>App Integration
Overview</span></a></li><li class="level-2"><a class="expandible"
href="/sdk/"><span>List of SDKs</span></a><ul><li class="level-3"><a
class="final" href="/sdk/java/"><span>Java & Android SDK</span></a></li><li
class="level-3"><a class="final" href="/sdk/php/"><span>PHP
SDK</span></a></li><li class="level-3"><a class="final"
href="/sdk/python/"><span>Python SDK</span></a></li><li class="level-3"><a
class="final" href="/sdk/ruby/"><span>Ruby SDK</span></a></li><li
class="level-3"><a class="final" href="/sdk/community/"><span>Community Powered
SDKs</span></a></li></ul></li></ul></li><li class="level-1"><a
class="expandible" href="#"><span>Deploying an Engine</span></a><ul><li
class="level-2"><a class="final" href="/deploy/"><span>Deploying as a Web
Service</span></a></li><li class="level-2"><a class="final"
href="/batchpredict/"><span>Batch Predictions<
/span></a></li><li class="level-2"><a class="final"
href="/deploy/monitoring/"><span>Monitoring Engine</span></a></li><li
class="level-2"><a class="final" href="/deploy/engineparams/"><span>Setting
Engine Parameters</span></a></li><li class="level-2"><a class="final"
href="/deploy/enginevariants/"><span>Deploying Multiple Engine
Variants</span></a></li><li class="level-2"><a class="final"
href="/deploy/plugin/"><span>Engine Server Plugin</span></a></li></ul></li><li
class="level-1"><a class="expandible" href="#"><span>Customizing an
Engine</span></a><ul><li class="level-2"><a class="final"
href="/customize/"><span>Learning DASE</span></a></li><li class="level-2"><a
class="final" href="/customize/dase/"><span>Implement DASE</span></a></li><li
class="level-2"><a class="final"
href="/customize/troubleshooting/"><span>Troubleshooting Engine
Development</span></a></li><li class="level-2"><a class="final"
href="/api/current/#package"><span>Engine Scala
APIs</span></a></li></ul></li><li cl
ass="level-1"><a class="expandible" href="#"><span>Collecting and Analyzing
Data</span></a><ul><li class="level-2"><a class="final"
href="/datacollection/"><span>Event Server Overview</span></a></li><li
class="level-2"><a class="final"
href="/datacollection/eventapi/"><span>Collecting Data with
REST/SDKs</span></a></li><li class="level-2"><a class="final"
href="/datacollection/eventmodel/"><span>Events Modeling</span></a></li><li
class="level-2"><a class="final"
href="/datacollection/webhooks/"><span>Unifying Multichannel Data with
Webhooks</span></a></li><li class="level-2"><a class="final"
href="/datacollection/channel/"><span>Channel</span></a></li><li
class="level-2"><a class="final"
href="/datacollection/batchimport/"><span>Importing Data in
Batch</span></a></li><li class="level-2"><a class="final"
href="/datacollection/analytics/"><span>Using Analytics
Tools</span></a></li><li class="level-2"><a class="final"
href="/datacollection/plugin/"><span>Event Server Plugin</span></a><
/li></ul></li><li class="level-1"><a class="expandible"
href="#"><span>Choosing an Algorithm</span></a><ul><li class="level-2"><a
class="final" href="/algorithm/"><span>Built-in Algorithm
Libraries</span></a></li><li class="level-2"><a class="final"
href="/algorithm/switch/"><span>Switching to Another
Algorithm</span></a></li><li class="level-2"><a class="final"
href="/algorithm/multiple/"><span>Combining Multiple
Algorithms</span></a></li><li class="level-2"><a class="final"
href="/algorithm/custom/"><span>Adding Your Own
Algorithms</span></a></li></ul></li><li class="level-1"><a class="expandible"
href="#"><span>Tuning and Evaluation</span></a><ul><li class="level-2"><a
class="final" href="/evaluation/"><span>Overview</span></a></li><li
class="level-2"><a class="final"
href="/evaluation/paramtuning/"><span>Hyperparameter Tuning</span></a></li><li
class="level-2"><a class="final"
href="/evaluation/evaluationdashboard/"><span>Evaluation
Dashboard</span></a></li><li class="level-2"><
a class="final" href="/evaluation/metricchoose/"><span>Choosing Evaluation
Metrics</span></a></li><li class="level-2"><a class="final"
href="/evaluation/metricbuild/"><span>Building Evaluation
Metrics</span></a></li></ul></li><li class="level-1"><a class="expandible"
href="#"><span>System Architecture</span></a><ul><li class="level-2"><a
class="final" href="/system/"><span>Architecture Overview</span></a></li><li
class="level-2"><a class="final" href="/system/anotherdatastore/"><span>Using
Another Data Store</span></a></li></ul></li><li class="level-1"><a
class="expandible" href="#"><span>PredictionIO® Official
Templates</span></a><ul><li class="level-2"><a class="final"
href="/templates/"><span>Intro</span></a></li><li class="level-2"><a
class="expandible" href="#"><span>Recommendation</span></a><ul><li
class="level-3"><a class="final"
href="/templates/recommendation/quickstart/"><span>Quick
Start</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/
dase/"><span>DASE</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/evaluation/"><span>Evaluation
Explained</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/how-to/"><span>How-To</span></a></li><li
class="level-3"><a class="final"
href="/templates/recommendation/reading-custom-events/"><span>Read Custom
Events</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/customize-data-prep/"><span>Customize Data
Preparator</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/customize-serving/"><span>Customize
Serving</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/training-with-implicit-preference/"><span>Train
with Implicit Preference</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/blacklist-items/"><span>Filter Recommended
Items by Blacklist in Query</span></a></li><li class="level-3"><a
class="final" href="/templates/recommendation/batch-evaluator/"><span>Batch
Persistable Evaluator</span></a></li></ul></li><li class="level-2"><a
class="expandible" href="#"><span>E-Commerce Recommendation</span></a><ul><li
class="level-3"><a class="final"
href="/templates/ecommercerecommendation/quickstart/"><span>Quick
Start</span></a></li><li class="level-3"><a class="final"
href="/templates/ecommercerecommendation/dase/"><span>DASE</span></a></li><li
class="level-3"><a class="final"
href="/templates/ecommercerecommendation/how-to/"><span>How-To</span></a></li><li
class="level-3"><a class="final"
href="/templates/ecommercerecommendation/train-with-rate-event/"><span>Train
with Rate Event</span></a></li><li class="level-3"><a class="final"
href="/templates/ecommercerecommendation/adjust-score/"><span>Adjust
Score</span></a></li></ul></li><li class="level-2"><a class="expandible"
href="#"><span>Similar Product</span></a><ul><li class="level-3"><a
class="final" href="/templates/simi
larproduct/quickstart/"><span>Quick Start</span></a></li><li
class="level-3"><a class="final"
href="/templates/similarproduct/dase/"><span>DASE</span></a></li><li
class="level-3"><a class="final"
href="/templates/similarproduct/how-to/"><span>How-To</span></a></li><li
class="level-3"><a class="final"
href="/templates/similarproduct/multi-events-multi-algos/"><span>Multiple
Events and Multiple Algorithms</span></a></li><li class="level-3"><a
class="final"
href="/templates/similarproduct/return-item-properties/"><span>Returns Item
Properties</span></a></li><li class="level-3"><a class="final"
href="/templates/similarproduct/train-with-rate-event/"><span>Train with Rate
Event</span></a></li><li class="level-3"><a class="final"
href="/templates/similarproduct/rid-user-set-event/"><span>Get Rid of Events
for Users</span></a></li><li class="level-3"><a class="final"
href="/templates/similarproduct/recommended-user/"><span>Recommend
Users</span></a></li></ul></li><li class="level-2"><a cla
ss="expandible" href="#"><span>Classification</span></a><ul><li
class="level-3"><a class="final"
href="/templates/classification/quickstart/"><span>Quick
Start</span></a></li><li class="level-3"><a class="final"
href="/templates/classification/dase/"><span>DASE</span></a></li><li
class="level-3"><a class="final"
href="/templates/classification/how-to/"><span>How-To</span></a></li><li
class="level-3"><a class="final"
href="/templates/classification/add-algorithm/"><span>Use Alternative
Algorithm</span></a></li><li class="level-3"><a class="final"
href="/templates/classification/reading-custom-properties/"><span>Read Custom
Properties</span></a></li></ul></li></ul></li><li class="level-1"><a
class="expandible" href="#"><span>Engine Template Gallery</span></a><ul><li
class="level-2"><a class="final"
href="/gallery/template-gallery/"><span>Browse</span></a></li><li
class="level-2"><a class="final"
href="/community/submit-template/"><span>Submit your Engine as a
Template</span></a></li><
/ul></li><li class="level-1"><a class="expandible" href="#"><span>Demo
Tutorials</span></a><ul><li class="level-2"><a class="final"
href="/demo/tapster/"><span>Comics Recommendation Demo</span></a></li><li
class="level-2"><a class="final" href="/demo/community/"><span>Community
Contributed Demo</span></a></li><li class="level-2"><a class="final"
href="/demo/textclassification/"><span>Text Classification Engine
Tutorial</span></a></li></ul></li><li class="level-1"><a class="expandible"
href="/community/"><span>Getting Involved</span></a><ul><li class="level-2"><a
class="final" href="/community/contribute-code/"><span>Contribute
Code</span></a></li><li class="level-2"><a class="final"
href="/community/contribute-documentation/"><span>Contribute
Documentation</span></a></li><li class="level-2"><a class="final"
href="/community/contribute-sdk/"><span>Contribute a SDK</span></a></li><li
class="level-2"><a class="final"
href="/community/contribute-webhook/"><span>Contribute a Webhook</spa
n></a></li><li class="level-2"><a class="final"
href="/community/projects/"><span>Community
Projects</span></a></li></ul></li><li class="level-1"><a class="expandible"
href="#"><span>Getting Help</span></a><ul><li class="level-2"><a class="final"
href="/resources/faq/"><span>FAQs</span></a></li><li class="level-2"><a
class="final" href="/support/"><span>Support</span></a></li></ul></li><li
class="level-1"><a class="expandible"
href="#"><span>Resources</span></a><ul><li class="level-2"><a class="final"
href="/cli/"><span>Command-line Interface</span></a></li><li class="level-2"><a
class="final" href="/resources/release/"><span>Release
Cadence</span></a></li><li class="level-2"><a class="final"
href="/resources/intellij/"><span>Developing Engines with IntelliJ
IDEA</span></a></li><li class="level-2"><a class="final"
href="/resources/upgrade/"><span>Upgrade Instructions</span></a></li><li
class="level-2"><a class="final"
href="/resources/glossary/"><span>Glossary</span></a></li></ul></
li><li class="level-1"><a class="expandible" href="#"><span>Apache Software
Foundation</span></a><ul><li class="level-2"><a class="final"
href="https://www.apache.org/"><span>Apache Homepage</span></a></li><li
class="level-2"><a class="final"
href="https://www.apache.org/licenses/"><span>License</span></a></li><li
class="level-2"><a class="final"
href="https://www.apache.org/foundation/sponsorship.html"><span>Sponsorship</span></a></li><li
class="level-2"><a class="final"
href="https://www.apache.org/foundation/thanks.html"><span>Thanks</span></a></li><li
class="level-2"><a class="final"
href="https://www.apache.org/security/"><span>Security</span></a></li></ul></li></ul></nav></div><div
class="col-md-9 col-sm-12"><div class="content-header hidden-md
hidden-lg"><div id="page-title"><h1>Quick Start - Product Ranking Engine
Template</h1></div></div><div id="table-of-content-wrapper"><h5>On this
page</h5><aside id="table-of-contents"><ul> <li> <a
href="#overview">Overview</a> </li> <li
> <a href="#usage">Usage</a> </li> <li> <a
> href="#1-install-and-run-predictionio">1. Install and Run PredictionIO</a>
> </li> <li> <a href="#2-create-a-new-engine-from-an-engine-template">2.
> Create a new Engine from an Engine Template</a> </li> <li> <a
> href="#3-generate-an-app-id-and-access-key">3. Generate an App ID and Access
> Key</a> </li> <li> <a href="#4-collecting-data">4. Collecting Data</a> </li>
> <li> <a href="#5-deploy-the-engine-as-a-service">5. Deploy the Engine as a
> Service</a> </li> <li> <a href="#6-use-the-engine">6. Use the Engine</a>
> </li> </ul> </aside><hr/><a id="edit-page-link"
> href="https://github.com/apache/predictionio/tree/livedoc/docs/manual/source/templates/productranking/quickstart.html.md.erb"><img
> src="/images/icons/edit-pencil-d6c1bb3d.png"/>Edit this page</a></div><div
> class="content-header hidden-sm hidden-xs"><div id="page-title"><h1>Quick
> Start - Product Ranking Engine Template</h1></div></div><div
> class="content"> <h2 id='overview' class='header-anchor
s'>Overview</h2><p>This engine template sorts a list of products for a user
based on his/her preference. This is ideal for personalizing the display order
of product page, catalog, or menu items if you have large number of options. It
creates engagement and early conversion by placing products that a user prefers
on the top.</p><h2 id='usage' class='header-anchors'>Usage</h2><h3
id='event-data-requirements' class='header-anchors'>Event Data
Requirements</h3><p>By default, this template takes the following data from
Event Server as Training Data:</p> <ul> <li>user <em>$set</em> events</li>
<li>item <em>$set</em> events</li> <li>Users' <em>view</em> item
events</li> </ul> <div class="alert-message info"><p>This template can easily
be customized to consider more user events such as <em>buy</em>, <em>rate</em>
and <em>like</em>.</p></div><h3 id='input-query' class='header-anchors'>Input
Query</h3> <ul> <li>UserID</li> <li>List of ItemIDs, which are the products to
be ranked</li> </u
l> <h3 id='output-predictedresult' class='header-anchors'>Output
PredictedResult</h3> <ul> <li>a ranked list of recommended itemIDs</li> </ul>
<h2 id='1.-install-and-run-predictionio' class='header-anchors'>1. Install and
Run PredictionIO</h2> <p>First you need to <a href="/install">install
PredictionIO 0.12.1</a> (if you haven't done it).</p><p>Let's say you
have installed PredictionIO at <code>/home/yourname/PredictionIO/</code>. For
convenience, add PredictionIO's binary command path to your
<code>PATH</code>, i.e. <code>/home/yourname/PredictionIO/bin</code>:</p><div
class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td
class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td
class="code"><pre><span class="gp">$ </span><span class="nv">PATH</span><span
class="o">=</span><span
class="nv">$PATH</span>:/home/yourname/PredictionIO/bin; <span
class="nb">export </span>PATH
+<!DOCTYPE html><html><head><title>Quick Start - Product Ranking Engine
Template</title><meta charset="utf-8"/><meta content="IE=edge,chrome=1"
http-equiv="X-UA-Compatible"/><meta name="viewport"
content="width=device-width, initial-scale=1.0"/><meta class="swiftype"
name="title" data-type="string" content="Quick Start - Product Ranking Engine
Template"/><link rel="canonical"
href="https://predictionio.apache.org/templates/productranking/quickstart/"/><link
href="/images/favicon/normal-b330020a.png" rel="shortcut icon"/><link
href="/images/favicon/apple-c0febcf2.png" rel="apple-touch-icon"/><link
href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800"
rel="stylesheet"/><link
href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css"
rel="stylesheet"/><link href="/stylesheets/application-eccfc6cb.css"
rel="stylesheet" type="text/css"/><script
src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5sh
iv.min.js"></script><script
src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script
src="//use.typekit.net/pqo0itb.js"></script><script>try{Typekit.load({ async:
true });}catch(e){}</script></head><body><div id="global"><header><div
class="container" id="header-wrapper"><div class="row"><div
class="col-sm-12"><div id="logo-wrapper"><span id="drawer-toggle"></span><a
href="#"></a><a href="http://predictionio.apache.org/"><img alt="Apache
PredictionIO" id="logo"
src="/images/logos/logo-ee2b9bb3.png"/></a><span>®</span></div><div
id="menu-wrapper"><div id="pill-wrapper"><a class="pill left"
href="/gallery/template-gallery">TEMPLATES</a> <a class="pill right"
href="//github.com/apache/predictionio/">OPEN SOURCE</a></div></div><img
class="mobile-search-bar-toggler hidden-md hidden-lg"
src="/images/icons/search-glass-704bd4ff.png"/></div></div></div></header><div
id="search-bar-row-wrapper"><div class="container-fluid"
id="search-bar-row"><div clas
s="row"><div class="col-md-9 col-sm-11 col-xs-11"><div class="hidden-md
hidden-lg" id="mobile-page-heading-wrapper"><p>PredictionIO Docs</p><h4>Quick
Start - Product Ranking Engine Template</h4></div><h4 class="hidden-sm
hidden-xs">PredictionIO Docs</h4></div><div class="col-md-3 col-sm-1 col-xs-1
hidden-md hidden-lg"><img id="left-menu-indicator"
src="/images/icons/down-arrow-dfe9f7fe.png"/></div><div class="col-md-3
col-sm-12 col-xs-12 swiftype-wrapper"><div class="swiftype"><form
class="search-form"><img class="search-box-toggler hidden-xs hidden-sm"
src="/images/icons/search-glass-704bd4ff.png"/><div class="search-box"><img
src="/images/icons/search-glass-704bd4ff.png"/><input type="text"
id="st-search-input" class="st-search-input" placeholder="Search
Doc..."/></div><img class="swiftype-row-hider hidden-md hidden-lg"
src="/images/icons/drawer-toggle-active-fcbef12a.png"/></form></div></div><div
class="mobile-left-menu-toggler hidden-md
hidden-lg"></div></div></div></div><div id
="page" class="container-fluid"><div class="row"><div id="left-menu-wrapper"
class="col-md-3"><nav id="nav-main"><ul><li class="level-1"><a
class="expandible" href="/"><span>Apache PredictionIO®
Documentation</span></a><ul><li class="level-2"><a class="final"
href="/"><span>Welcome to Apache PredictionIO®</span></a></li></ul></li><li
class="level-1"><a class="expandible" href="#"><span>Getting
Started</span></a><ul><li class="level-2"><a class="final"
href="/start/"><span>A Quick Intro</span></a></li><li class="level-2"><a
class="final" href="/install/"><span>Installing Apache
PredictionIO</span></a></li><li class="level-2"><a class="final"
href="/start/download/"><span>Downloading an Engine Template</span></a></li><li
class="level-2"><a class="final" href="/start/deploy/"><span>Deploying Your
First Engine</span></a></li><li class="level-2"><a class="final"
href="/start/customize/"><span>Customizing the
Engine</span></a></li></ul></li><li class="level-1"><a class="expandible" href
="#"><span>Integrating with Your App</span></a><ul><li class="level-2"><a
class="final" href="/appintegration/"><span>App Integration
Overview</span></a></li><li class="level-2"><a class="expandible"
href="/sdk/"><span>List of SDKs</span></a><ul><li class="level-3"><a
class="final" href="/sdk/java/"><span>Java & Android SDK</span></a></li><li
class="level-3"><a class="final" href="/sdk/php/"><span>PHP
SDK</span></a></li><li class="level-3"><a class="final"
href="/sdk/python/"><span>Python SDK</span></a></li><li class="level-3"><a
class="final" href="/sdk/ruby/"><span>Ruby SDK</span></a></li><li
class="level-3"><a class="final" href="/sdk/community/"><span>Community Powered
SDKs</span></a></li></ul></li></ul></li><li class="level-1"><a
class="expandible" href="#"><span>Deploying an Engine</span></a><ul><li
class="level-2"><a class="final" href="/deploy/"><span>Deploying as a Web
Service</span></a></li><li class="level-2"><a class="final"
href="/batchpredict/"><span>Batch Predictions<
/span></a></li><li class="level-2"><a class="final"
href="/deploy/monitoring/"><span>Monitoring Engine</span></a></li><li
class="level-2"><a class="final" href="/deploy/engineparams/"><span>Setting
Engine Parameters</span></a></li><li class="level-2"><a class="final"
href="/deploy/enginevariants/"><span>Deploying Multiple Engine
Variants</span></a></li><li class="level-2"><a class="final"
href="/deploy/plugin/"><span>Engine Server Plugin</span></a></li></ul></li><li
class="level-1"><a class="expandible" href="#"><span>Customizing an
Engine</span></a><ul><li class="level-2"><a class="final"
href="/customize/"><span>Learning DASE</span></a></li><li class="level-2"><a
class="final" href="/customize/dase/"><span>Implement DASE</span></a></li><li
class="level-2"><a class="final"
href="/customize/troubleshooting/"><span>Troubleshooting Engine
Development</span></a></li><li class="level-2"><a class="final"
href="/api/current/#package"><span>Engine Scala
APIs</span></a></li></ul></li><li cl
ass="level-1"><a class="expandible" href="#"><span>Collecting and Analyzing
Data</span></a><ul><li class="level-2"><a class="final"
href="/datacollection/"><span>Event Server Overview</span></a></li><li
class="level-2"><a class="final"
href="/datacollection/eventapi/"><span>Collecting Data with
REST/SDKs</span></a></li><li class="level-2"><a class="final"
href="/datacollection/eventmodel/"><span>Events Modeling</span></a></li><li
class="level-2"><a class="final"
href="/datacollection/webhooks/"><span>Unifying Multichannel Data with
Webhooks</span></a></li><li class="level-2"><a class="final"
href="/datacollection/channel/"><span>Channel</span></a></li><li
class="level-2"><a class="final"
href="/datacollection/batchimport/"><span>Importing Data in
Batch</span></a></li><li class="level-2"><a class="final"
href="/datacollection/analytics/"><span>Using Analytics
Tools</span></a></li><li class="level-2"><a class="final"
href="/datacollection/plugin/"><span>Event Server Plugin</span></a><
/li></ul></li><li class="level-1"><a class="expandible"
href="#"><span>Choosing an Algorithm</span></a><ul><li class="level-2"><a
class="final" href="/algorithm/"><span>Built-in Algorithm
Libraries</span></a></li><li class="level-2"><a class="final"
href="/algorithm/switch/"><span>Switching to Another
Algorithm</span></a></li><li class="level-2"><a class="final"
href="/algorithm/multiple/"><span>Combining Multiple
Algorithms</span></a></li><li class="level-2"><a class="final"
href="/algorithm/custom/"><span>Adding Your Own
Algorithms</span></a></li></ul></li><li class="level-1"><a class="expandible"
href="#"><span>Tuning and Evaluation</span></a><ul><li class="level-2"><a
class="final" href="/evaluation/"><span>Overview</span></a></li><li
class="level-2"><a class="final"
href="/evaluation/paramtuning/"><span>Hyperparameter Tuning</span></a></li><li
class="level-2"><a class="final"
href="/evaluation/evaluationdashboard/"><span>Evaluation
Dashboard</span></a></li><li class="level-2"><
a class="final" href="/evaluation/metricchoose/"><span>Choosing Evaluation
Metrics</span></a></li><li class="level-2"><a class="final"
href="/evaluation/metricbuild/"><span>Building Evaluation
Metrics</span></a></li></ul></li><li class="level-1"><a class="expandible"
href="#"><span>System Architecture</span></a><ul><li class="level-2"><a
class="final" href="/system/"><span>Architecture Overview</span></a></li><li
class="level-2"><a class="final" href="/system/anotherdatastore/"><span>Using
Another Data Store</span></a></li></ul></li><li class="level-1"><a
class="expandible" href="#"><span>PredictionIO® Official
Templates</span></a><ul><li class="level-2"><a class="final"
href="/templates/"><span>Intro</span></a></li><li class="level-2"><a
class="expandible" href="#"><span>Recommendation</span></a><ul><li
class="level-3"><a class="final"
href="/templates/recommendation/quickstart/"><span>Quick
Start</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/
dase/"><span>DASE</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/evaluation/"><span>Evaluation
Explained</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/how-to/"><span>How-To</span></a></li><li
class="level-3"><a class="final"
href="/templates/recommendation/reading-custom-events/"><span>Read Custom
Events</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/customize-data-prep/"><span>Customize Data
Preparator</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/customize-serving/"><span>Customize
Serving</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/training-with-implicit-preference/"><span>Train
with Implicit Preference</span></a></li><li class="level-3"><a class="final"
href="/templates/recommendation/blacklist-items/"><span>Filter Recommended
Items by Blacklist in Query</span></a></li><li class="level-3"><a
class="final" href="/templates/recommendation/batch-evaluator/"><span>Batch
Persistable Evaluator</span></a></li></ul></li><li class="level-2"><a
class="expandible" href="#"><span>E-Commerce Recommendation</span></a><ul><li
class="level-3"><a class="final"
href="/templates/ecommercerecommendation/quickstart/"><span>Quick
Start</span></a></li><li class="level-3"><a class="final"
href="/templates/ecommercerecommendation/dase/"><span>DASE</span></a></li><li
class="level-3"><a class="final"
href="/templates/ecommercerecommendation/how-to/"><span>How-To</span></a></li><li
class="level-3"><a class="final"
href="/templates/ecommercerecommendation/train-with-rate-event/"><span>Train
with Rate Event</span></a></li><li class="level-3"><a class="final"
href="/templates/ecommercerecommendation/adjust-score/"><span>Adjust
Score</span></a></li></ul></li><li class="level-2"><a class="expandible"
href="#"><span>Similar Product</span></a><ul><li class="level-3"><a
class="final" href="/templates/simi
larproduct/quickstart/"><span>Quick Start</span></a></li><li
class="level-3"><a class="final"
href="/templates/similarproduct/dase/"><span>DASE</span></a></li><li
class="level-3"><a class="final"
href="/templates/similarproduct/how-to/"><span>How-To</span></a></li><li
class="level-3"><a class="final"
href="/templates/similarproduct/multi-events-multi-algos/"><span>Multiple
Events and Multiple Algorithms</span></a></li><li class="level-3"><a
class="final"
href="/templates/similarproduct/return-item-properties/"><span>Returns Item
Properties</span></a></li><li class="level-3"><a class="final"
href="/templates/similarproduct/train-with-rate-event/"><span>Train with Rate
Event</span></a></li><li class="level-3"><a class="final"
href="/templates/similarproduct/rid-user-set-event/"><span>Get Rid of Events
for Users</span></a></li><li class="level-3"><a class="final"
href="/templates/similarproduct/recommended-user/"><span>Recommend
Users</span></a></li></ul></li><li class="level-2"><a cla
ss="expandible" href="#"><span>Classification</span></a><ul><li
class="level-3"><a class="final"
href="/templates/classification/quickstart/"><span>Quick
Start</span></a></li><li class="level-3"><a class="final"
href="/templates/classification/dase/"><span>DASE</span></a></li><li
class="level-3"><a class="final"
href="/templates/classification/how-to/"><span>How-To</span></a></li><li
class="level-3"><a class="final"
href="/templates/classification/add-algorithm/"><span>Use Alternative
Algorithm</span></a></li><li class="level-3"><a class="final"
href="/templates/classification/reading-custom-properties/"><span>Read Custom
Properties</span></a></li></ul></li></ul></li><li class="level-1"><a
class="expandible" href="#"><span>Engine Template Gallery</span></a><ul><li
class="level-2"><a class="final"
href="/gallery/template-gallery/"><span>Browse</span></a></li><li
class="level-2"><a class="final"
href="/community/submit-template/"><span>Submit your Engine as a
Template</span></a></li><
/ul></li><li class="level-1"><a class="expandible" href="#"><span>Demo
Tutorials</span></a><ul><li class="level-2"><a class="final"
href="/demo/tapster/"><span>Comics Recommendation Demo</span></a></li><li
class="level-2"><a class="final" href="/demo/community/"><span>Community
Contributed Demo</span></a></li><li class="level-2"><a class="final"
href="/demo/textclassification/"><span>Text Classification Engine
Tutorial</span></a></li></ul></li><li class="level-1"><a class="expandible"
href="/community/"><span>Getting Involved</span></a><ul><li class="level-2"><a
class="final" href="/community/contribute-code/"><span>Contribute
Code</span></a></li><li class="level-2"><a class="final"
href="/community/contribute-documentation/"><span>Contribute
Documentation</span></a></li><li class="level-2"><a class="final"
href="/community/contribute-sdk/"><span>Contribute a SDK</span></a></li><li
class="level-2"><a class="final"
href="/community/contribute-webhook/"><span>Contribute a Webhook</spa
n></a></li><li class="level-2"><a class="final"
href="/community/projects/"><span>Community
Projects</span></a></li></ul></li><li class="level-1"><a class="expandible"
href="#"><span>Getting Help</span></a><ul><li class="level-2"><a class="final"
href="/resources/faq/"><span>FAQs</span></a></li><li class="level-2"><a
class="final" href="/support/"><span>Support</span></a></li></ul></li><li
class="level-1"><a class="expandible"
href="#"><span>Resources</span></a><ul><li class="level-2"><a class="final"
href="/cli/"><span>Command-line Interface</span></a></li><li class="level-2"><a
class="final" href="/resources/release/"><span>Release
Cadence</span></a></li><li class="level-2"><a class="final"
href="/resources/intellij/"><span>Developing Engines with IntelliJ
IDEA</span></a></li><li class="level-2"><a class="final"
href="/resources/upgrade/"><span>Upgrade Instructions</span></a></li><li
class="level-2"><a class="final"
href="/resources/glossary/"><span>Glossary</span></a></li></ul></
li><li class="level-1"><a class="expandible" href="#"><span>Apache Software
Foundation</span></a><ul><li class="level-2"><a class="final"
href="https://www.apache.org/"><span>Apache Homepage</span></a></li><li
class="level-2"><a class="final"
href="https://www.apache.org/licenses/"><span>License</span></a></li><li
class="level-2"><a class="final"
href="https://www.apache.org/foundation/sponsorship.html"><span>Sponsorship</span></a></li><li
class="level-2"><a class="final"
href="https://www.apache.org/foundation/thanks.html"><span>Thanks</span></a></li><li
class="level-2"><a class="final"
href="https://www.apache.org/security/"><span>Security</span></a></li></ul></li></ul></nav></div><div
class="col-md-9 col-sm-12"><div class="content-header hidden-md
hidden-lg"><div id="page-title"><h1>Quick Start - Product Ranking Engine
Template</h1></div></div><div id="table-of-content-wrapper"><h5>On this
page</h5><aside id="table-of-contents"><ul> <li> <a
href="#overview">Overview</a> </li> <li
> <a href="#usage">Usage</a> </li> <li> <a
> href="#1-install-and-run-predictionio">1. Install and Run PredictionIO</a>
> </li> <li> <a href="#2-create-a-new-engine-from-an-engine-template">2.
> Create a new Engine from an Engine Template</a> </li> <li> <a
> href="#3-generate-an-app-id-and-access-key">3. Generate an App ID and Access
> Key</a> </li> <li> <a href="#4-collecting-data">4. Collecting Data</a> </li>
> <li> <a href="#5-deploy-the-engine-as-a-service">5. Deploy the Engine as a
> Service</a> </li> <li> <a href="#6-use-the-engine">6. Use the Engine</a>
> </li> </ul> </aside><hr/><a id="edit-page-link"
> href="https://github.com/apache/predictionio/tree/livedoc/docs/manual/source/templates/productranking/quickstart.html.md.erb"><img
> src="/images/icons/edit-pencil-d6c1bb3d.png"/>Edit this page</a></div><div
> class="content-header hidden-sm hidden-xs"><div id="page-title"><h1>Quick
> Start - Product Ranking Engine Template</h1></div></div><div
> class="content"> <h2 id='overview' class='header-anchor
s'>Overview</h2><p>This engine template sorts a list of products for a user
based on his/her preference. This is ideal for personalizing the display order
of product page, catalog, or menu items if you have large number of options. It
creates engagement and early conversion by placing products that a user prefers
on the top.</p><h2 id='usage' class='header-anchors'>Usage</h2><h3
id='event-data-requirements' class='header-anchors'>Event Data
Requirements</h3><p>By default, this template takes the following data from
Event Server as Training Data:</p> <ul> <li>user <em>$set</em> events</li>
<li>item <em>$set</em> events</li> <li>Users' <em>view</em> item
events</li> </ul> <div class="alert-message info"><p>This template can easily
be customized to consider more user events such as <em>buy</em>, <em>rate</em>
and <em>like</em>.</p></div><h3 id='input-query' class='header-anchors'>Input
Query</h3> <ul> <li>UserID</li> <li>List of ItemIDs, which are the products to
be ranked</li> </u
l> <h3 id='output-predictedresult' class='header-anchors'>Output
PredictedResult</h3> <ul> <li>a ranked list of recommended itemIDs</li> </ul>
<h2 id='1.-install-and-run-predictionio' class='header-anchors'>1. Install and
Run PredictionIO</h2> <p>First you need to <a href="/install">install
PredictionIO 0.13.0</a> (if you haven't done it).</p><p>Let's say you
have installed PredictionIO at <code>/home/yourname/PredictionIO/</code>. For
convenience, add PredictionIO's binary command path to your
<code>PATH</code>, i.e. <code>/home/yourname/PredictionIO/bin</code>:</p><div
class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td
class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td
class="code"><pre><span class="gp">$ </span><span class="nv">PATH</span><span
class="o">=</span><span
class="nv">$PATH</span>:/home/yourname/PredictionIO/bin; <span
class="nb">export </span>PATH
</pre></td></tr></tbody></table> </div> <div class="alert-message note"><p>If
you launched <strong>PredictionIO AWS instance</strong>, the path is located at
<code>/opt/PredictionIO/bin</code>.</p></div><p>Once you have completed the
installation process, please make sure all the components (PredictionIO Event
Server, Elasticsearch, and HBase) are up and running.</p><div
class="alert-message note"><p>If you launched <strong>PredictionIO AWS
instance</strong>, you can skip <code>pio-start-all</code>. All components
should have been started automatically.</p></div><p>If you are using PostgreSQL
or MySQL, run the following to start PredictionIO Event Server:</p><div
class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td
class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td
class="code"><pre><span class="gp">$ </span>pio eventserver &
</pre></td></tr></tbody></table> </div> <p>If instead you are running HBase
and Elasticsearch, run the following to start all PredictionIO Event Server,
HBase, and Elasticsearch:</p><div class="highlight shell"><table
style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align:
right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$
</span>pio-start-all
</pre></td></tr></tbody></table> </div> <p>You can check the status by
running:</p><div class="highlight shell"><table style="border-spacing:
0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre
class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pio
status
@@ -32,7 +32,7 @@ Your system is all ready to go.
<span class="o">[</span>INFO] <span class="o">[</span>App<span
class="nv">$]</span> MyApp1 | 1 |
3mZWDzci2D5YsqAnqNnXH9SB6Rg3dsTBs8iHkK6X2i54IQsIZI1eEeQQyMfs7b3F | <span
class="o">(</span>all<span class="o">)</span>
<span class="o">[</span>INFO] <span class="o">[</span>App<span
class="nv">$]</span> MyApp2 | 2 |
io5lz6Eg4m3Xe4JZTBFE13GMAf1dhFl6ZteuJfrO84XpdOz9wRCrDU44EUaYuXq5 | <span
class="o">(</span>all<span class="o">)</span>
<span class="o">[</span>INFO] <span class="o">[</span>App<span
class="nv">$]</span> Finished listing 2 app<span class="o">(</span>s<span
class="o">)</span>.
-</pre></td></tr></tbody></table> </div> <p><a href="#"></a></p> <h2
id='4.-collecting-data' class='header-anchors'>4. Collecting Data</h2><p>Next,
let's collect some training data for the app of this Engine. By default,
the Product Ranking Engine Template supports 2 types of entities:
<strong>user</strong> and <strong>item</strong>, and event
<strong>view</strong>. A user can view an item. This template requires
'$set' user event, '$set' item event and user-view-item
events.</p> <p>You can send these events to PredictionIO Event Server in
real-time easily by making a HTTP request or through the provided SDK. Please
see <a href="/appintegration/">App Integration Overview</a> for more details
how to integrate your app with SDK.</p><p>Let's try sending events to
EventServer with the following <code>curl</code> commands (The corresponding
SDK code is showed in other tabs).</p><p>Replace
<code><ACCCESS_KEY></code> by the Access Key generated in above steps.
Note that <code>localhost:7070</code> is the default URL of the Event
Server.</p><p>For convenience, set your access key to the shell variable,
run:</p><p><code>$ ACCESS_KEY=<ACCESS_KEY></code></p> <p><a
href="#"></a></p> <p>For example, when a new user with id "u0" is
created in your app on time <code>2014-11-02T09:39:45.618-08:00</code> (current
time will be used if eventTime is not specified), you can send a
<code>$set</code> event for this user. To send this event, run the following
<code>curl</code> command:</p><div class="tabs"> <ul class="control"> <li
data-lang="json"><a href="#tab-a6f605dc-6c08-4f39-b14b-069bbbaa6320">REST
API</a></li> <li data-lang="python"><a
href="#tab-cf530b1c-2cef-44d0-9bc9-2521f6ebdaa3">Python SDK</a></li> <li
data-lang="php"><a href="#tab-835cccfb-984a-43c2-845e-4c473e6d2384">PHP
SDK</a></li> <li data-lang="ruby"><a
href="#tab-9fb553ec-fe3d-4384-82fd-e4ee05b4d831">Ruby SDK</a></li> <li
data-lang="java"><a href="#tab-17c1a1b7-b698-4900
-86ad-4aa69f27036d">Java SDK</a></li> </ul> <div data-tab="REST API"
data-lang="json" id="tab-a6f605dc-6c08-4f39-b14b-069bbbaa6320"> <div
class="highlight shell"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td></tr></tbody></table> </div> <p><a href="#"></a></p> <h2
id='4.-collecting-data' class='header-anchors'>4. Collecting Data</h2><p>Next,
let's collect some training data for the app of this Engine. By default,
the Product Ranking Engine Template supports 2 types of entities:
<strong>user</strong> and <strong>item</strong>, and event
<strong>view</strong>. A user can view an item. This template requires
'$set' user event, '$set' item event and user-view-item
events.</p> <p>You can send these events to PredictionIO Event Server in
real-time easily by making a HTTP request or through the provided SDK. Please
see <a href="/appintegration/">App Integration Overview</a> for more details
how to integrate your app with SDK.</p><p>Let's try sending events to
EventServer with the following <code>curl</code> commands (The corresponding
SDK code is showed in other tabs).</p><p>Replace
<code><ACCCESS_KEY></code> by the Access Key generated in above steps.
Note that <code>localhost:7070</code> is the default URL of the Event
Server.</p><p>For convenience, set your access key to the shell variable,
run:</p><p><code>$ ACCESS_KEY=<ACCESS_KEY></code></p> <p><a
href="#"></a></p> <p>For example, when a new user with id "u0" is
created in your app on time <code>2014-11-02T09:39:45.618-08:00</code> (current
time will be used if eventTime is not specified), you can send a
<code>$set</code> event for this user. To send this event, run the following
<code>curl</code> command:</p><div class="tabs"> <ul class="control"> <li
data-lang="json"><a href="#tab-cfa3c985-8f3e-47c5-b068-a6007dc96582">REST
API</a></li> <li data-lang="python"><a
href="#tab-425defe4-6794-43a6-a628-141bf57cae58">Python SDK</a></li> <li
data-lang="php"><a href="#tab-5ec71aac-3155-41cd-be03-bb7b02c91437">PHP
SDK</a></li> <li data-lang="ruby"><a
href="#tab-7f16955e-6ff2-41bc-a9f8-4c584d94278d">Ruby SDK</a></li> <li
data-lang="java"><a href="#tab-6a746f37-259b-41d1
-8d58-7a6c1e3dea25">Java SDK</a></li> </ul> <div data-tab="REST API"
data-lang="json" id="tab-cfa3c985-8f3e-47c5-b068-a6007dc96582"> <div
class="highlight shell"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -47,7 +47,7 @@ Your system is all ready to go.
"entityId" : "u0",
"eventTime" : "2014-11-02T09:39:45.618-08:00"
}'</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Python SDK"
data-lang="python" id="tab-cf530b1c-2cef-44d0-9bc9-2521f6ebdaa3"> <div
class="highlight python"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Python SDK"
data-lang="python" id="tab-425defe4-6794-43a6-a628-141bf57cae58"> <div
class="highlight python"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -78,7 +78,7 @@ Your system is all ready to go.
<span class="n">entity_type</span><span class="o">=</span><span
class="s">"user"</span><span class="p">,</span>
<span class="n">entity_id</span><span class="o">=<</span><span
class="n">USER_ID</span><span class="o">></span>
<span class="p">)</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK"
data-lang="php" id="tab-835cccfb-984a-43c2-845e-4c473e6d2384"> <div
class="highlight php"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK"
data-lang="php" id="tab-5ec71aac-3155-41cd-be03-bb7b02c91437"> <div
class="highlight php"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -103,7 +103,7 @@ Your system is all ready to go.
<span class="s1">'entityId'</span> <span class="o">=></span> <span
class="o"><</span><span class="nx">USER</span> <span
class="nx">ID</span><span class="o">></span>
<span class="p">));</span>
<span class="cp">?></span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK"
data-lang="ruby" id="tab-9fb553ec-fe3d-4384-82fd-e4ee05b4d831"> <div
class="highlight ruby"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK"
data-lang="ruby" id="tab-7f16955e-6ff2-41bc-a9f8-4c584d94278d"> <div
class="highlight ruby"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -120,7 +120,7 @@ Your system is all ready to go.
<span class="s1">'user'</span><span class="p">,</span>
<span class="o"><</span><span class="no">USER</span> <span
class="no">ID</span><span class="o">></span>
<span class="p">)</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Java SDK"
data-lang="java" id="tab-17c1a1b7-b698-4900-86ad-4aa69f27036d"> <div
class="highlight java"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Java SDK"
data-lang="java" id="tab-6a746f37-259b-41d1-8d58-7a6c1e3dea25"> <div
class="highlight java"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -145,7 +145,7 @@ Your system is all ready to go.
<span class="o">.</span><span class="na">entityType</span><span
class="o">(</span><span class="s">"user"</span><span class="o">)</span>
<span class="o">.</span><span class="na">entityId</span><span
class="o">(<</span><span class="n">USER_ID</span><span
class="o">>);</span>
<span class="n">client</span><span class="o">.</span><span
class="na">createEvent</span><span class="o">(</span><span
class="n">userEvent</span><span class="o">);</span>
-</pre></td> </tr></tbody></table> </div> </div> </div> <p>When a new item
"i0" is created in your app on time
<code>2014-11-02T09:39:45.618-08:00</code> (current time will be used if
eventTime is not specified), you can send a <code>$set</code> event for the
item. Run the following <code>curl</code> command:</p><div class="tabs"> <ul
class="control"> <li data-lang="json"><a
href="#tab-4fba13f4-b5b8-4e24-af66-e587ae87a31f">REST API</a></li> <li
data-lang="python"><a href="#tab-c7f24985-9373-4a9a-a47c-4076ebacf9cb">Python
SDK</a></li> <li data-lang="php"><a
href="#tab-64c5b107-84b3-401b-b4e2-788f60e9739b">PHP SDK</a></li> <li
data-lang="ruby"><a href="#tab-175a2a4d-6ffc-4c62-be4b-cd64d0c7cdff">Ruby
SDK</a></li> <li data-lang="java"><a
href="#tab-6229cfb6-8d28-4c0c-8e2b-c9a46a483895">Java SDK</a></li> </ul> <div
data-tab="REST API" data-lang="json"
id="tab-4fba13f4-b5b8-4e24-af66-e587ae87a31f"> <div class="highlight shell">
<table style="border-spacing: 0"><tbody><tr> <td cla
ss="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> </div> <p>When a new item
"i0" is created in your app on time
<code>2014-11-02T09:39:45.618-08:00</code> (current time will be used if
eventTime is not specified), you can send a <code>$set</code> event for the
item. Run the following <code>curl</code> command:</p><div class="tabs"> <ul
class="control"> <li data-lang="json"><a
href="#tab-035d8c27-06f4-4332-aece-55d28cd36bcb">REST API</a></li> <li
data-lang="python"><a href="#tab-1e538a45-4fa7-4153-9f0a-1c9001af4151">Python
SDK</a></li> <li data-lang="php"><a
href="#tab-c4da1ff2-b2a1-4dbe-b67f-ff5ea3fb238e">PHP SDK</a></li> <li
data-lang="ruby"><a href="#tab-b5bf2b20-ba27-46e0-8eb5-0e7d2642961d">Ruby
SDK</a></li> <li data-lang="java"><a
href="#tab-615aff32-645e-494f-b422-b16cdd704cb1">Java SDK</a></li> </ul> <div
data-tab="REST API" data-lang="json"
id="tab-035d8c27-06f4-4332-aece-55d28cd36bcb"> <div class="highlight shell">
<table style="border-spacing: 0"><tbody><tr> <td cla
ss="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -160,7 +160,7 @@ Your system is all ready to go.
"entityId" : "i0",
"eventTime" : "2014-11-02T09:39:45.618-08:00"
}'</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Python SDK"
data-lang="python" id="tab-c7f24985-9373-4a9a-a47c-4076ebacf9cb"> <div
class="highlight python"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Python SDK"
data-lang="python" id="tab-1e538a45-4fa7-4153-9f0a-1c9001af4151"> <div
class="highlight python"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -173,7 +173,7 @@ Your system is all ready to go.
<span class="n">entity_type</span><span class="o">=</span><span
class="s">"item"</span><span class="p">,</span>
<span class="n">entity_id</span><span class="o">=<</span><span
class="n">ITEM_ID</span><span class="o">></span>
<span class="p">)</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK"
data-lang="php" id="tab-64c5b107-84b3-401b-b4e2-788f60e9739b"> <div
class="highlight php"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK"
data-lang="php" id="tab-c4da1ff2-b2a1-4dbe-b67f-ff5ea3fb238e"> <div
class="highlight php"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -190,7 +190,7 @@ Your system is all ready to go.
<span class="p">));</span>
<span class="cp">?></span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK"
data-lang="ruby" id="tab-175a2a4d-6ffc-4c62-be4b-cd64d0c7cdff"> <div
class="highlight ruby"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK"
data-lang="ruby" id="tab-b5bf2b20-ba27-46e0-8eb5-0e7d2642961d"> <div
class="highlight ruby"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -203,7 +203,7 @@ Your system is all ready to go.
<span class="o"><</span><span class="no">ITEM</span> <span
class="no">ID</span><span class="o">></span>
<span class="p">)</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Java SDK"
data-lang="java" id="tab-6229cfb6-8d28-4c0c-8e2b-c9a46a483895"> <div
class="highlight java"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Java SDK"
data-lang="java" id="tab-615aff32-645e-494f-b422-b16cdd704cb1"> <div
class="highlight java"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -214,7 +214,7 @@ Your system is all ready to go.
<span class="o">.</span><span class="na">entityType</span><span
class="o">(</span><span class="s">"item"</span><span class="o">)</span>
<span class="o">.</span><span class="na">entityId</span><span
class="o">(<</span><span class="n">ITEM_ID</span><span
class="o">>);</span>
<span class="n">client</span><span class="o">.</span><span
class="na">createEvent</span><span class="o">(</span><span
class="n">itemEvent</span><span class="o">)</span>
-</pre></td> </tr></tbody></table> </div> </div> </div> <p>When the user
"u0" view item "i0" on time
<code>2014-11-10T12:34:56.123-08:00</code> (current time will be used if
eventTime is not specified), you can send a view event. Run the following
<code>curl</code> command:</p><div class="tabs"> <ul class="control"> <li
data-lang="json"><a href="#tab-fce6418f-2a1f-4b65-999a-056236a3f7af">REST
API</a></li> <li data-lang="python"><a
href="#tab-92cde62d-cdf0-4a2c-86fa-c1e44ee015c7">Python SDK</a></li> <li
data-lang="php"><a href="#tab-dcf5dce4-e284-496d-a854-9f848fb1e395">PHP
SDK</a></li> <li data-lang="ruby"><a
href="#tab-a14846fc-db03-4adb-9391-daf84177b300">Ruby SDK</a></li> <li
data-lang="java"><a href="#tab-dfa306a9-e711-4ba9-9c72-fbdc3fc49a39">Java
SDK</a></li> </ul> <div data-tab="REST API" data-lang="json"
id="tab-fce6418f-2a1f-4b65-999a-056236a3f7af"> <div class="highlight shell">
<table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text
-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> </div> <p>When the user
"u0" view item "i0" on time
<code>2014-11-10T12:34:56.123-08:00</code> (current time will be used if
eventTime is not specified), you can send a view event. Run the following
<code>curl</code> command:</p><div class="tabs"> <ul class="control"> <li
data-lang="json"><a href="#tab-bb70ee68-f8dc-4e88-80f7-4b7b88fbc8d9">REST
API</a></li> <li data-lang="python"><a
href="#tab-e0f94ec3-95e1-404d-b806-5765c64b3c17">Python SDK</a></li> <li
data-lang="php"><a href="#tab-bc301812-91a1-46cd-b645-f70aa500b996">PHP
SDK</a></li> <li data-lang="ruby"><a
href="#tab-6961ff8e-9072-41c2-97d3-59badd4fa7a3">Ruby SDK</a></li> <li
data-lang="java"><a href="#tab-20985a64-afd1-4efd-96c4-de0ffa6193f8">Java
SDK</a></li> </ul> <div data-tab="REST API" data-lang="json"
id="tab-bb70ee68-f8dc-4e88-80f7-4b7b88fbc8d9"> <div class="highlight shell">
<table style="border-spacing: 0"><tbody><tr> <td class="gutter gl" style="text
-align: right"><pre class="lineno">1
2
3
4
@@ -233,7 +233,7 @@ Your system is all ready to go.
"targetEntityId" : "i0",
"eventTime" : "2014-11-10T12:34:56.123-08:00"
}'</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Python SDK"
data-lang="python" id="tab-92cde62d-cdf0-4a2c-86fa-c1e44ee015c7"> <div
class="highlight python"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Python SDK"
data-lang="python" id="tab-e0f94ec3-95e1-404d-b806-5765c64b3c17"> <div
class="highlight python"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -250,7 +250,7 @@ Your system is all ready to go.
<span class="n">target_entity_type</span><span class="o">=</span><span
class="s">"item"</span><span class="p">,</span>
<span class="n">target_entity_id</span><span class="o">=<</span><span
class="n">ITEM</span> <span class="n">ID</span><span class="o">></span>
<span class="p">)</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK"
data-lang="php" id="tab-dcf5dce4-e284-496d-a854-9f848fb1e395"> <div
class="highlight php"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK"
data-lang="php" id="tab-bc301812-91a1-46cd-b645-f70aa500b996"> <div
class="highlight php"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -269,7 +269,7 @@ Your system is all ready to go.
<span class="s1">'targetEntityId'</span> <span class="o">=></span> <span
class="o"><</span><span class="nx">ITEM</span> <span
class="nx">ID</span><span class="o">></span>
<span class="p">));</span>
<span class="cp">?></span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK"
data-lang="ruby" id="tab-a14846fc-db03-4adb-9391-daf84177b300"> <div
class="highlight ruby"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK"
data-lang="ruby" id="tab-6961ff8e-9072-41c2-97d3-59badd4fa7a3"> <div
class="highlight ruby"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -286,7 +286,7 @@ Your system is all ready to go.
<span class="s1">'targetEntityId'</span> <span class="o">=></span>
<span class="o"><</span><span class="no">ITEM</span> <span
class="no">ID</span><span class="o">></span>
<span class="p">}</span>
<span class="p">)</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Java SDK"
data-lang="java" id="tab-dfa306a9-e711-4ba9-9c72-fbdc3fc49a39"> <div
class="highlight java"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Java SDK"
data-lang="java" id="tab-20985a64-afd1-4efd-96c4-de0ffa6193f8"> <div
class="highlight java"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -344,14 +344,14 @@ User u10 views item i7
</pre></td></tr></tbody></table> </div> <p>When the engine is deployed
successfully and running, you should see a console message similar to the
following:</p><div class="highlight shell"><table style="border-spacing:
0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre
class="lineno">1
2</pre></td><td class="code"><pre><span class="o">[</span>INFO] <span
class="o">[</span>HttpListener] Bound to /0.0.0.0:8000
<span class="o">[</span>INFO] <span class="o">[</span>MasterActor] Bind
successful. Ready to serve.
-</pre></td></tr></tbody></table> </div> <p>Do not kill the deployed engine
process.</p><p>By default, the deployed engine binds to <a
href="http://localhost:8000"><a
href="http://localhost:8000">http://localhost:8000</a></a>. You can visit that
page in your web browser to check its status.</p><p><img alt="Engine Status"
src="/images/engine-server-3246414b.png"/></p></p><h2 id='6.-use-the-engine'
class='header-anchors'>6. Use the Engine</h2><p>Now, You can retrieve predicted
results. To rank items with IDs "i1", "i3",
"i10", "i2", "i5", "i31",
"i9" for user "u2". You send this JSON <code>{
"user": "u2", "items": ["i1",
"i3", "i10", "i2", "i5",
"i31", "i9"] }</code> to the deployed engine and it will
return a JSON of the ranked items. Simply send a query by making a HTTP request
or through the <code>EngineCl
ient</code> of an SDK.</p><p>With the deployed engine running, open another
terminal and run the following <code>curl</code> command or use SDK to send the
query:</p><div class="tabs"> <ul class="control"> <li data-lang="json"><a
href="#tab-5e6fa503-446c-4ea4-b071-403d96e2a873">REST API</a></li> <li
data-lang="python"><a href="#tab-0b20ed74-c00e-4121-98f0-7f95a8bfa9c3">Python
SDK</a></li> <li data-lang="php"><a
href="#tab-ba41a481-553d-45c5-86fd-3434ba5e3ce1">PHP SDK</a></li> <li
data-lang="ruby"><a href="#tab-ab177e95-1377-4218-98bd-d8b2c9d92b56">Ruby
SDK</a></li> <li data-lang="java"><a
href="#tab-d8feadbf-a5ca-412c-8cc0-8aef5bb2f718">Java SDK</a></li> </ul> <div
data-tab="REST API" data-lang="json"
id="tab-5e6fa503-446c-4ea4-b071-403d96e2a873"> <div class="highlight shell">
<table style="border-spacing: 0"><tbody><tr> <td class="gutter gl"
style="text-align: right"><pre class="lineno">1
+</pre></td></tr></tbody></table> </div> <p>Do not kill the deployed engine
process.</p><p>By default, the deployed engine binds to <a
href="http://localhost:8000"><a
href="http://localhost:8000">http://localhost:8000</a></a>. You can visit that
page in your web browser to check its status.</p><p><img alt="Engine Status"
src="/images/engine-server-3246414b.png"/></p></p><h2 id='6.-use-the-engine'
class='header-anchors'>6. Use the Engine</h2><p>Now, You can retrieve predicted
results. To rank items with IDs "i1", "i3",
"i10", "i2", "i5", "i31",
"i9" for user "u2". You send this JSON <code>{
"user": "u2", "items": ["i1",
"i3", "i10", "i2", "i5",
"i31", "i9"] }</code> to the deployed engine and it will
return a JSON of the ranked items. Simply send a query by making a HTTP request
or through the <code>EngineCl
ient</code> of an SDK.</p><p>With the deployed engine running, open another
terminal and run the following <code>curl</code> command or use SDK to send the
query:</p><div class="tabs"> <ul class="control"> <li data-lang="json"><a
href="#tab-cce5a0fd-0fcb-4681-ab20-b8c145c87685">REST API</a></li> <li
data-lang="python"><a href="#tab-e4e6d11b-ee31-4495-9c33-1deee85eb89d">Python
SDK</a></li> <li data-lang="php"><a
href="#tab-a5d458e3-700a-40d4-a2ca-b24c86f4007b">PHP SDK</a></li> <li
data-lang="ruby"><a href="#tab-29fe6c97-ba37-4a59-b3d1-b790d65fb9d8">Ruby
SDK</a></li> <li data-lang="java"><a
href="#tab-e677fde3-2816-4c9a-98a3-3cb4b4fb24e3">Java SDK</a></li> </ul> <div
data-tab="REST API" data-lang="json"
id="tab-cce5a0fd-0fcb-4681-ab20-b8c145c87685"> <div class="highlight shell">
<table style="border-spacing: 0"><tbody><tr> <td class="gutter gl"
style="text-align: right"><pre class="lineno">1
2
3
4</pre></td> <td class="code"><pre><span class="gp">$ </span>curl -H <span
class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
-d <span class="s1">'{ "user": "u2", "items": ["i1", "i3", "i10", "i2", "i5",
"i31", "i9"]}'</span> <span class="se">\</span>
http://localhost:8000/queries.json
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Python SDK"
data-lang="python" id="tab-0b20ed74-c00e-4121-98f0-7f95a8bfa9c3"> <div
class="highlight python"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Python SDK"
data-lang="python" id="tab-e4e6d11b-ee31-4495-9c33-1deee85eb89d"> <div
class="highlight python"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -362,7 +362,7 @@ http://localhost:8000/queries.json
<span class="s">"user"</span><span class="p">:</span> <span
class="s">"u2"</span><span class="p">,</span>
<span class="s">"items"</span><span class="p">:</span> <span
class="p">[</span><span class="s">"i1"</span><span class="p">,</span> <span
class="s">"i3"</span><span class="p">,</span> <span class="s">"i10"</span><span
class="p">,</span> <span class="s">"i2"</span><span class="p">,</span> <span
class="s">"i5"</span><span class="p">,</span> <span class="s">"i31"</span><span
class="p">,</span> <span class="s">"i9"</span><span class="p">]</span>
<span class="p">})</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK"
data-lang="php" id="tab-ba41a481-553d-45c5-86fd-3434ba5e3ce1"> <div
class="highlight php"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK"
data-lang="php" id="tab-a5d458e3-700a-40d4-a2ca-b24c86f4007b"> <div
class="highlight php"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -385,7 +385,7 @@ http://localhost:8000/queries.json
<span class="nb">print_r</span><span class="p">(</span><span
class="nv">$response</span><span class="p">);</span>
<span class="cp">?></span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK"
data-lang="ruby" id="tab-ab177e95-1377-4218-98bd-d8b2c9d92b56"> <div
class="highlight ruby"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK"
data-lang="ruby" id="tab-29fe6c97-ba37-4a59-b3d1-b790d65fb9d8"> <div
class="highlight ruby"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
@@ -402,7 +402,7 @@ http://localhost:8000/queries.json
<span class="s1">'items'</span> <span class="o">=></span> <span
class="p">[</span><span class="s1">'i1'</span><span class="p">,</span> <span
class="s1">'i3'</span><span class="p">,</span> <span
class="s1">'i10'</span><span class="p">,</span> <span
class="s1">'i2'</span><span class="p">,</span> <span
class="s1">'i5'</span><span class="p">,</span> <span
class="s1">'i31'</span><span class="p">,</span> <span
class="s1">'i9'</span><span class="p">])</span>
<span class="nb">puts</span> <span class="n">response</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Java SDK"
data-lang="java" id="tab-d8feadbf-a5ca-412c-8cc0-8aef5bb2f718"> <div
class="highlight java"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
+</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Java SDK"
data-lang="java" id="tab-e677fde3-2816-4c9a-98a3-3cb4b4fb24e3"> <div
class="highlight java"> <table style="border-spacing: 0"><tbody><tr> <td
class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4