http://git-wip-us.apache.org/repos/asf/predictionio-site/blob/6e02047e/templates/complementarypurchase/quickstart/index.html
----------------------------------------------------------------------
diff --git a/templates/complementarypurchase/quickstart/index.html
b/templates/complementarypurchase/quickstart/index.html
index 03a30f3..8363963 100644
--- a/templates/complementarypurchase/quickstart/index.html
+++ b/templates/complementarypurchase/quickstart/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html><head><title>Quick Start - Complementary Purchase 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 - Complementary Purchase
Engine Template"/><link rel="canonical"
href="https://predictionio.apache.org/templates/complementarypurchase/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/ht
ml5shiv/3.7.2/html5shiv.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="sear
ch-bar-row"><div class="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 - Complementary Purchase 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"></d
iv></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="/batchpredic
t/"><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</sp
an></a></li></ul></li><li class="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>Eve
nt 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/similarproduct/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></l
i><li class="level-2"><a class="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/"><sp
an>Contribute a Webhook</span></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>Glo
ssary</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 - Complementary Purchase 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/complementarypurchase/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
- Complementary Purchase Engine Template</h1></div></div><div class=
"content"> <h2 id='overview' class='header-anchors'>Overview</h2><p>This
engine template recommends the complementary items which most user frequently
buy at the same time together with one or more items in the query.</p><h2
id='usage' class='header-anchors'>Usage</h2><h3 id='event-data-requirements'
class='header-anchors'>Event Data Requirements</h3><p>By default, the template
requires the following events to be collected:</p> <ul> <li>user 'buy'
item events</li> </ul> <div class="alert-message info"><p>A correct eventTime
should be used in order for engine to determine if the items being bought are
in the same 'basket'.</p></div><div class="alert-message note"><p>You
can customize to use other event.</p></div><h3 id='input-query'
class='header-anchors'>Input Query</h3> <ul> <li>set of items</li> <li>num of
recommends items per condition</li> </ul> <h3 id='output-predictedresult'
class='header-anchors'>Output PredictedResult</h3> <ul> <li>array of condition
and top
n recommended items given the condition. The engine will use each combination
of the query items as condition.</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 - Complementary Purchase 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 - Complementary Purchase
Engine Template"/><link rel="canonical"
href="https://predictionio.apache.org/templates/complementarypurchase/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/ht
ml5shiv/3.7.2/html5shiv.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="sear
ch-bar-row"><div class="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 - Complementary Purchase 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"></d
iv></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="/batchpredic
t/"><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</sp
an></a></li></ul></li><li class="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>Eve
nt 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/similarproduct/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></l
i><li class="level-2"><a class="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/"><sp
an>Contribute a Webhook</span></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>Glo
ssary</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 - Complementary Purchase 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/complementarypurchase/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
- Complementary Purchase Engine Template</h1></div></div><div class=
"content"> <h2 id='overview' class='header-anchors'>Overview</h2><p>This
engine template recommends the complementary items which most user frequently
buy at the same time together with one or more items in the query.</p><h2
id='usage' class='header-anchors'>Usage</h2><h3 id='event-data-requirements'
class='header-anchors'>Event Data Requirements</h3><p>By default, the template
requires the following events to be collected:</p> <ul> <li>user 'buy'
item events</li> </ul> <div class="alert-message info"><p>A correct eventTime
should be used in order for engine to determine if the items being bought are
in the same 'basket'.</p></div><div class="alert-message note"><p>You
can customize to use other event.</p></div><h3 id='input-query'
class='header-anchors'>Input Query</h3> <ul> <li>set of items</li> <li>num of
recommends items per condition</li> </ul> <h3 id='output-predictedresult'
class='header-anchors'>Output PredictedResult</h3> <ul> <li>array of condition
and top
n recommended items given the condition. The engine will use each combination
of the query items as condition.</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 training data for this Engine. By default, Complementary
Purchase Engine Template supports the following entities:
<strong>user</strong>, <strong>item</strong>. A user buys an item. This
template requires user-buy-item events.</p><p>Note that the engine requires
correct buy event time being used in order to determine if the items being
bought are in the same 'basket', which is configured by the
'basketWindow' parameter. Using an unreal event time for the buy events
will cause an incorrect model. If you use SDK, the current time is used as
event time by default.</p><div class="alert-message warning"><p>In particular,
make sure correct event time is specified if you import data in batch (i.e. not
in real time). If the event time is omitted, the SDK will use <strong>current
time</strong> as event time which
is not the actual time of the buy event in this case!</p></div> <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>When an
user u0 buys item i0 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 buy
event. Run the following <code>curl</code> command:
</p><div class="tabs"> <ul class="control"> <li data-lang="json"><a
href="#tab-d99d3b98-ed39-4777-b68e-74ebd52f2dd7">REST API</a></li> <li
data-lang="python"><a href="#tab-41eb46a7-2d62-45a1-9772-311867f66cb1">Python
SDK</a></li> <li data-lang="php"><a
href="#tab-b8fb7136-1b35-45f8-bf09-eca051f6fb4e">PHP SDK</a></li> <li
data-lang="ruby"><a href="#tab-1409c0b6-8605-4eb5-a168-9b24209c7ca5">Ruby
SDK</a></li> <li data-lang="java"><a
href="#tab-79afaf9b-f4ae-4d38-8a76-ab58c9ee7593">Java SDK</a></li> </ul> <div
data-tab="REST API" data-lang="json"
id="tab-d99d3b98-ed39-4777-b68e-74ebd52f2dd7"> <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 training data for this Engine. By default, Complementary
Purchase Engine Template supports the following entities:
<strong>user</strong>, <strong>item</strong>. A user buys an item. This
template requires user-buy-item events.</p><p>Note that the engine requires
correct buy event time being used in order to determine if the items being
bought are in the same 'basket', which is configured by the
'basketWindow' parameter. Using an unreal event time for the buy events
will cause an incorrect model. If you use SDK, the current time is used as
event time by default.</p><div class="alert-message warning"><p>In particular,
make sure correct event time is specified if you import data in batch (i.e. not
in real time). If the event time is omitted, the SDK will use <strong>current
time</strong> as event time which
is not the actual time of the buy event in this case!</p></div> <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>When an
user u0 buys item i0 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 buy
event. Run the following <code>curl</code> command:
</p><div class="tabs"> <ul class="control"> <li data-lang="json"><a
href="#tab-da92943a-7a7d-4516-9d6b-3293957800bb">REST API</a></li> <li
data-lang="python"><a href="#tab-78cbe6d1-f393-4d59-b2f7-0ce38840b09f">Python
SDK</a></li> <li data-lang="php"><a
href="#tab-61c707c2-39cb-4f1a-8abf-0681ea231113">PHP SDK</a></li> <li
data-lang="ruby"><a href="#tab-4ea5416b-0118-49c9-88dc-7c48b7968995">Ruby
SDK</a></li> <li data-lang="java"><a
href="#tab-891e9143-0c16-41de-ab1c-7fa39d2710bb">Java SDK</a></li> </ul> <div
data-tab="REST API" data-lang="json"
id="tab-da92943a-7a7d-4516-9d6b-3293957800bb"> <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
@@ -51,7 +51,7 @@ Your system is all ready to go.
"targetEntityId" : "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-41eb46a7-2d62-45a1-9772-311867f66cb1"> <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-78cbe6d1-f393-4d59-b2f7-0ce38840b09f"> <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
@@ -104,7 +104,7 @@ Your system is all ready to go.
<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>
<span class="n">event_time</span><span class="o">=<</span><span
class="n">EVENT_TIME</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-b8fb7136-1b35-45f8-bf09-eca051f6fb4e"> <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-61c707c2-39cb-4f1a-8abf-0681ea231113"> <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
@@ -155,7 +155,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-1409c0b6-8605-4eb5-a168-9b24209c7ca5"> <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-4ea5416b-0118-49c9-88dc-7c48b7968995"> <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
@@ -200,7 +200,7 @@ Your system is all ready to go.
<span class="s1">'eventTime'</span> <span class="o">=></span> <span
class="o"><</span><span class="no">EVENT_TIME</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-79afaf9b-f4ae-4d38-8a76-ab58c9ee7593"> <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-891e9143-0c16-41de-ab1c-7fa39d2710bb"> <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
@@ -290,7 +290,7 @@ User u10 buys item s2i1 at 2014-10-19 15:43:15.618000-07:53
</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 query the engine.
For example, return top 3 items which are frequently bought with item
"s2i1". You can sending this JSON '{ "items" :
["s2i1"], "num" : 3 }' to the deployed engine. The
engine will return a JSON with the recommended items.</p><p>If you include one
or more items in the query, the engine will use each combination of the query
items as condition, and return recommended items if there is any for this
condition. For example, if you query items are ["A", "B&q
uot;], then the engine will use ["A"], ["B"], and
["A", "B"] as condition and try to find top n recommended
items for each combination.</p><p>You can simply send a query by making a HTTP
request or through the <code>EngineClient</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-7d6b0fad-2aab-4adb-b673-e918048a7d7a">REST API</a></li> <li
data-lang="python"><a href="#tab-c792ce9b-15a9-464a-8832-bdb444157d80">Python
SDK</a></li> <li data-lang="php"><a
href="#tab-1029db61-ce6c-45a8-82db-1688eb07bab3">PHP SDK</a></li> <li
data-lang="ruby"><a href="#tab-eae04f0f-7914-41e2-ab0d-70c791bcf78f">Ruby
SDK</a></li> <li data-lang="java"><a
href="#tab-ab2f8f18-ac97-40c6-b620-0d28f2a8dcca">Java SDK</a></li> </ul> <div
data-tab="REST API" data-lang="json" id="tab-7d6b0fad-2aab-
4adb-b673-e918048a7d7a"> <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 query the engine.
For example, return top 3 items which are frequently bought with item
"s2i1". You can sending this JSON '{ "items" :
["s2i1"], "num" : 3 }' to the deployed engine. The
engine will return a JSON with the recommended items.</p><p>If you include one
or more items in the query, the engine will use each combination of the query
items as condition, and return recommended items if there is any for this
condition. For example, if you query items are ["A", "B&q
uot;], then the engine will use ["A"], ["B"], and
["A", "B"] as condition and try to find top n recommended
items for each combination.</p><p>You can simply send a query by making a HTTP
request or through the <code>EngineClient</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-416fba7f-7705-4577-bd72-6f2b7e6c3fec">REST API</a></li> <li
data-lang="python"><a href="#tab-c2780618-9e51-4eb3-8659-20675f5e50dd">Python
SDK</a></li> <li data-lang="php"><a
href="#tab-8993333a-191b-4762-b088-c5a787b5bb47">PHP SDK</a></li> <li
data-lang="ruby"><a href="#tab-e026e50c-4be2-457d-8faa-4758db345041">Ruby
SDK</a></li> <li data-lang="java"><a
href="#tab-4f2f7786-cb8b-4961-9d02-799583086457">Java SDK</a></li> </ul> <div
data-tab="REST API" data-lang="json" id="tab-416fba7f-7705-
4577-bd72-6f2b7e6c3fec"> <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
@@ -303,7 +303,7 @@ User u10 buys item s2i1 at 2014-10-19 15:43:15.618000-07:53
}'</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-c792ce9b-15a9-464a-8832-bdb444157d80"> <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-c2780618-9e51-4eb3-8659-20675f5e50dd"> <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
@@ -314,7 +314,7 @@ http://localhost:8000/queries.json
<span class="s">"items"</span> <span class="p">:</span> <span
class="p">[</span><span class="s">"s2i1"</span><span class="p">],</span>
<span class="s">"num"</span> <span class="p">:</span> <span
class="mi">3</span>
<span class="p">})</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK"
data-lang="php" id="tab-1029db61-ce6c-45a8-82db-1688eb07bab3"> <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-8993333a-191b-4762-b088-c5a787b5bb47"> <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
@@ -341,7 +341,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-eae04f0f-7914-41e2-ab0d-70c791bcf78f"> <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-e026e50c-4be2-457d-8faa-4758db345041"> <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
@@ -360,7 +360,7 @@ http://localhost:8000/queries.json
<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-ab2f8f18-ac97-40c6-b620-0d28f2a8dcca"> <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-4f2f7786-cb8b-4961-9d02-799583086457"> <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