http://git-wip-us.apache.org/repos/asf/predictionio-site/blob/c17b9607/templates/recommendation/quickstart/index.html
----------------------------------------------------------------------
diff --git a/templates/recommendation/quickstart/index.html 
b/templates/recommendation/quickstart/index.html
index 88d4532..8523ab8 100644
--- a/templates/recommendation/quickstart/index.html
+++ b/templates/recommendation/quickstart/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html><head><title>Quick Start - Recommendation 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 - Recommendation Engine 
Template"/><link rel="canonical" 
href="https://predictionio.apache.org/templates/recommendation/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/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="search-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 - Recommendation 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="p
 age" 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</sp
 an></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 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>Event Server Plugin</span></a></li
 ></ul></li><li class="level-1"><a class="expandible" href="#"><span>Choosing 
 >an Algorithm(s)</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>ML 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 active" 
href="/templates/recommendation/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" href="/templates/recom
 mendation/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="le
 vel-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="/temp
 lates/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></li><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/"><span>Contribute a We
 bhook</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>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="breadcrumbs" class="hidden-sm hidden xs"><ul><li><a 
href="#">PredictionIO® Official Templates</a><span 
class="spacer">&gt;</span></li><li><a href="#">Recommendation</a><span 
class="spacer">&gt;</span></li>
 <li><span class="last">Quick Start</span></li></ul></div><div 
id="page-title"><h1>Quick Start - Recommendation 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/recommendation/quickstart.ht
 ml.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="breadcrumbs" class="hidden-sm hidden xs"><ul><li><a href="#">PredictionIO® 
Official Templates</a><span class="spacer">&gt;</span></li><li><a 
href="#">Recommendation</a><span class="spacer">&gt;</span></li><li><span 
class="last">Quick Start</span></li></ul></div><div id="page-title"><h1>Quick 
Start - Recommendation Engine Template</h1></div></div><div class="content"> 
<h2 id='overview' class='header-anchors'>Overview</h2><p>This Recommendation 
Engine Template has integrated <strong>Apache Spark MLlib</strong>&#39;s 
Collaborative Filtering algorithm by default. You can customize it easily to 
fit your specific needs.</p><p>We are going to show you how to create your own 
recommendation engine for production use based on this template.</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 &#39;rate&#39; item events</li> 
<li>user &#39;buy&#39; item events</li> </ul> <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>user ID</li> <li>num of 
recomended items</li> </ul> <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&#39;t done 
it).</p><p>Let&#39;s say you have installed PredictionIO at 
<code>/home/yourname/PredictionIO/</code>. For convenience, add 
PredictionIO&#39;s binary command path to your <code>PATH</code>, i.e. 
<code>/home/yourname/PredictionIO/bin</code>:</p><div class="highl
 ight 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 - Recommendation 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 - Recommendation Engine 
Template"/><link rel="canonical" 
href="https://predictionio.apache.org/templates/recommendation/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/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="search-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 - Recommendation 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="p
 age" 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</sp
 an></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 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>Event Server Plugin</span></a></li
 ></ul></li><li class="level-1"><a class="expandible" href="#"><span>Choosing 
 >an Algorithm(s)</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>ML 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 active" 
href="/templates/recommendation/quickstart/"><span>Quick 
Start</span></a></li><li class="level-3"><a class="final" href="/templates/recom
 mendation/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="le
 vel-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="/temp
 lates/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></li><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/"><span>Contribute a We
 bhook</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>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="breadcrumbs" class="hidden-sm hidden xs"><ul><li><a 
href="#">PredictionIO® Official Templates</a><span 
class="spacer">&gt;</span></li><li><a href="#">Recommendation</a><span 
class="spacer">&gt;</span></li>
 <li><span class="last">Quick Start</span></li></ul></div><div 
id="page-title"><h1>Quick Start - Recommendation 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/recommendation/quickstart.ht
 ml.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="breadcrumbs" class="hidden-sm hidden xs"><ul><li><a href="#">PredictionIO® 
Official Templates</a><span class="spacer">&gt;</span></li><li><a 
href="#">Recommendation</a><span class="spacer">&gt;</span></li><li><span 
class="last">Quick Start</span></li></ul></div><div id="page-title"><h1>Quick 
Start - Recommendation Engine Template</h1></div></div><div class="content"> 
<h2 id='overview' class='header-anchors'>Overview</h2><p>This Recommendation 
Engine Template has integrated <strong>Apache Spark MLlib</strong>&#39;s 
Collaborative Filtering algorithm by default. You can customize it easily to 
fit your specific needs.</p><p>We are going to show you how to create your own 
recommendation engine for production use based on this template.</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 &#39;rate&#39; item events</li> 
<li>user &#39;buy&#39; item events</li> </ul> <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>user ID</li> <li>num of 
recommended items</li> </ul> <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&#39;t done 
it).</p><p>Let&#39;s say you have installed PredictionIO at 
<code>/home/yourname/PredictionIO/</code>. For convenience, add 
PredictionIO&#39;s binary command path to your <code>PATH</code>, i.e. 
<code>/home/yourname/PredictionIO/bin</code>:</p><div class="high
 light 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 &amp;
 </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&#39;s collect some training data. By default, the Recommendation Engine 
Template supports 2 types of events: <strong>rate</strong> and 
<strong>buy</strong>. A user can give a rating score to an item or buy an item. 
This template requires user-view-item and user-buy-item events.</p><div 
class="alert-message info"><p>This template can easily be customized to 
consider more user events such as <em>like</em>, <em>dislike</em> 
etc.</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&#39;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>&lt;ACCCESS_KEY&gt;</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=&lt;ACCESS_KEY&gt;</code></p> <p><a 
href="#"></a></p> <h3 id='example-<strong>rate</strong>-event' 
class='header-anchors' >Example <strong>rate</strong> event</h3><p>A user (ID 
&quot;u0&quot;) gives an item (ID &quot;i0&quot;) a rating of 5 at 
<code>2014-11-02T09:39:45.618-08:00</code> (current time will be used if 
eventTime is not specified)</p><p>Run the following <code>curl</code> command 
to send the <code>rate</code> event:</p><div class="tabs"> <ul class="control"> 
<li data-lang="json"><a href="#tab-b42bfa95-243d-4684-9a7c-15aa588128f4">REST 
API</a></li> <li data-lang="python"><a 
href="#tab-234d8f67-beda-4916-a918-0f901d2c4c90">Python SDK</a></li> <li 
data-lang="php"><a href="#tab-4ba04d0f-30c4-4ecc-bf67-caa09f00ade1">PHP
  SDK</a></li> <li data-lang="ruby"><a 
href="#tab-9a756f35-9f5e-419e-af99-a26cfec93994">Ruby SDK</a></li> <li 
data-lang="java"><a href="#tab-2769cdc9-7429-4e14-adca-b989c9997644">Java 
SDK</a></li> </ul> <div data-tab="REST API" data-lang="json" 
id="tab-b42bfa95-243d-4684-9a7c-15aa588128f4"> <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&#39;s collect some training data. By default, the Recommendation Engine 
Template supports 2 types of events: <strong>rate</strong> and 
<strong>buy</strong>. A user can give a rating score to an item or buy an item. 
This template requires user-view-item and user-buy-item events.</p><div 
class="alert-message info"><p>This template can easily be customized to 
consider more user events such as <em>like</em>, <em>dislike</em> 
etc.</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&#39;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>&lt;ACCCESS_KEY&gt;</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=&lt;ACCESS_KEY&gt;</code></p> <p><a 
href="#"></a></p> <h3 id='example-<strong>rate</strong>-event' 
class='header-anchors' >Example <strong>rate</strong> event</h3><p>A user (ID 
&quot;u0&quot;) gives an item (ID &quot;i0&quot;) a rating of 5 at 
<code>2014-11-02T09:39:45.618-08:00</code> (current time will be used if 
eventTime is not specified)</p><p>Run the following <code>curl</code> command 
to send the <code>rate</code> event:</p><div class="tabs"> <ul class="control"> 
<li data-lang="json"><a href="#tab-09c83c09-105b-4eb8-87f3-6828d789d9fe">REST 
API</a></li> <li data-lang="python"><a 
href="#tab-d2b38268-69da-445f-8eed-4afd10df5e73">Python SDK</a></li> <li 
data-lang="php"><a href="#tab-3f2d3dd0-d17d-4c35-8795-c446a0c1d13e">PHP
  SDK</a></li> <li data-lang="ruby"><a 
href="#tab-818ebe8e-1b5a-4b82-a716-0bbbaf5640bd">Ruby SDK</a></li> <li 
data-lang="java"><a href="#tab-9987787a-1916-4562-a7b3-02d16493c007">Java 
SDK</a></li> </ul> <div data-tab="REST API" data-lang="json" 
id="tab-09c83c09-105b-4eb8-87f3-6828d789d9fe"> <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
@@ -57,7 +57,7 @@ Your system is all ready to go.
   }
   "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-234d8f67-beda-4916-a918-0f901d2c4c90"> <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-d2b38268-69da-445f-8eed-4afd10df5e73"> <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
@@ -92,7 +92,7 @@ Your system is all ready to go.
     <span class="n">target_entity_id</span><span class="o">=&lt;</span><span 
class="n">ITEM</span> <span class="n">ID</span><span class="o">&gt;</span><span 
class="p">,</span>
     <span class="n">properties</span><span class="o">=</span> <span 
class="p">{</span> <span class="s">"rating"</span> <span class="p">:</span> 
<span class="nb">float</span><span class="p">(</span><span 
class="o">&lt;</span><span class="n">RATING</span><span 
class="o">&gt;</span><span class="p">)</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-4ba04d0f-30c4-4ecc-bf67-caa09f00ade1"> <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-3f2d3dd0-d17d-4c35-8795-c446a0c1d13e"> <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
@@ -123,7 +123,7 @@ Your system is all ready to go.
    <span class="s1">'properties'</span> <span class="o">=&gt;</span> <span 
class="k">array</span><span class="p">(</span><span 
class="s1">'rating'</span><span class="o">=&gt;</span> <span 
class="o">&lt;</span><span class="nx">RATING</span><span 
class="o">&gt;</span><span class="p">)</span>
 <span class="p">));</span>
 <span class="cp">?&gt;</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK" 
data-lang="ruby" id="tab-9a756f35-9f5e-419e-af99-a26cfec93994"> <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-818ebe8e-1b5a-4b82-a716-0bbbaf5640bd"> <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
@@ -150,7 +150,7 @@ Your system is all ready to go.
   <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-2769cdc9-7429-4e14-adca-b989c9997644"> <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-9987787a-1916-4562-a7b3-02d16493c007"> <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
@@ -179,7 +179,7 @@ Your system is all ready to go.
     <span class="o">.</span><span class="na">property</span><span 
class="o">(</span><span class="s">"rating"</span><span class="o">,</span> <span 
class="k">new</span> <span class="n">Float</span><span 
class="o">(&lt;</span><span class="n">RATING</span><span 
class="o">&gt;));</span>
 <span class="n">client</span><span class="o">.</span><span 
class="na">createEvent</span><span class="o">(</span><span 
class="n">rateEvent</span><span class="o">);</span>
 
-</pre></td> </tr></tbody></table> </div> </div> </div> <h3 
id='example-<strong>buy</strong>-event' class='header-anchors' >Example 
<strong>buy</strong> event</h3><p>A user (ID &quot;u1&quot;) buys an item (ID 
&quot;i2&quot;) at <code>2014-11-10T12:34:56.123-08:00</code> (current time 
will be used if eventTime is not specified)</p><p>Run the following 
<code>curl</code> command to send the <code>buy</code> event:</p><div 
class="tabs"> <ul class="control"> <li data-lang="json"><a 
href="#tab-1e7bc755-98fe-4aa9-86ba-b9663b9d67f7">REST API</a></li> <li 
data-lang="python"><a href="#tab-6ca77cbe-b6ae-4caa-af07-7ae6b52b77aa">Python 
SDK</a></li> <li data-lang="php"><a 
href="#tab-b9d95420-28de-46e2-829a-5feace0ad5b2">PHP SDK</a></li> <li 
data-lang="ruby"><a href="#tab-1666a036-9304-4b50-840e-211a394d2128">Ruby 
SDK</a></li> <li data-lang="java"><a 
href="#tab-953cc8a6-5040-497c-b871-493f594a48f4">Java SDK</a></li> </ul> <div 
data-tab="REST API" data-lang="json" id="tab-1e7bc755-98fe-4aa9-86ba-b9
 663b9d67f7"> <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> <h3 
id='example-<strong>buy</strong>-event' class='header-anchors' >Example 
<strong>buy</strong> event</h3><p>A user (ID &quot;u1&quot;) buys an item (ID 
&quot;i2&quot;) at <code>2014-11-10T12:34:56.123-08:00</code> (current time 
will be used if eventTime is not specified)</p><p>Run the following 
<code>curl</code> command to send the <code>buy</code> event:</p><div 
class="tabs"> <ul class="control"> <li data-lang="json"><a 
href="#tab-a96eaf3e-a6f2-40f5-b5cb-ec8db8fb3f30">REST API</a></li> <li 
data-lang="python"><a href="#tab-28a95088-d88c-40d8-964e-cbcab3cb3c63">Python 
SDK</a></li> <li data-lang="php"><a 
href="#tab-b949a83e-c3e4-4c37-96bf-15827f8ec407">PHP SDK</a></li> <li 
data-lang="ruby"><a href="#tab-23918a32-85a5-48c3-a8ce-73268a142bca">Ruby 
SDK</a></li> <li data-lang="java"><a 
href="#tab-7258aad2-0051-4fbd-8730-b0b309d0897a">Java SDK</a></li> </ul> <div 
data-tab="REST API" data-lang="json" id="tab-a96eaf3e-a6f2-40f5-b5cb-ec
 8db8fb3f30"> <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
@@ -198,7 +198,7 @@ Your system is all ready to go.
   "targetEntityId" : "i2",
   "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-6ca77cbe-b6ae-4caa-af07-7ae6b52b77aa"> <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-28a95088-d88c-40d8-964e-cbcab3cb3c63"> <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
@@ -213,7 +213,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">=&lt;</span><span 
class="n">ITEM</span> <span class="n">ID</span><span class="o">&gt;</span>
 <span class="p">)</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK" 
data-lang="php" id="tab-b9d95420-28de-46e2-829a-5feace0ad5b2"> <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-b949a83e-c3e4-4c37-96bf-15827f8ec407"> <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
@@ -232,7 +232,7 @@ Your system is all ready to go.
    <span class="s1">'targetEntityId'</span> <span class="o">=&gt;</span> <span 
class="o">&lt;</span><span class="nx">ITEM</span> <span 
class="nx">ID</span><span class="o">&gt;</span>
 <span class="p">));</span>
 <span class="cp">?&gt;</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK" 
data-lang="ruby" id="tab-1666a036-9304-4b50-840e-211a394d2128"> <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-23918a32-85a5-48c3-a8ce-73268a142bca"> <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
@@ -249,7 +249,7 @@ Your system is all ready to go.
     <span class="s1">'targetEntityId'</span> <span class="o">=&gt;</span> 
<span class="o">&lt;</span><span class="no">ITEM</span> <span 
class="no">ID</span><span class="o">&gt;</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-953cc8a6-5040-497c-b871-493f594a48f4"> <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-7258aad2-0051-4fbd-8730-b0b309d0897a"> <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
@@ -297,17 +297,17 @@ Your system is all ready to go.
 </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 try to retrieve 
predicted results. To recommend 4 movies to user whose id is 1, you send this 
JSON <code>{ &quot;user&quot;: &quot;1&quot;, &quot;num&quot;: 4 }</code> to 
the deployed engine and it will return a JSON of the recommended movies. 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-250c9e58-753f-4656-94dc-d2a8a1e8a229">REST API</a></li> 
<li data-lang="python"><a 
href="#tab-7afc0aaa-1605-4a5a-b608-286b95e1e0a8">Python SDK</a></li> <li 
data-lang="php"><a href="#tab-e187a542-3823-435c-9807-bb96db349989">PHP 
SDK</a></li> <li data-lang="ruby"><a 
href="#tab-1ef5e1ee-61fc-46b9-b1ea-52c58d8699ea">Ruby SDK</a></li> <li 
data-lang="java"><a href="#tab-392b56b9-4c00-41c6-97f7-131f3bd3d929">Java 
SDK</a></li> </ul> <div data-tab="REST API" data-lang="json" 
id="tab-250c9e58-753f-4656-94dc-d2a8a1e8a229"> <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 try to retrieve 
predicted results. To recommend 4 movies to user whose id is 1, you send this 
JSON <code>{ &quot;user&quot;: &quot;1&quot;, &quot;num&quot;: 4 }</code> to 
the deployed engine and it will return a JSON of the recommended movies. 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-8e38c7b8-2185-4534-b81e-b7bdb72f8d15">REST API</a></li> 
<li data-lang="python"><a 
href="#tab-fb9a5f61-32ca-46ff-870d-53366db7642e">Python SDK</a></li> <li 
data-lang="php"><a href="#tab-10745a66-3359-4d70-9d90-7e65c6fbae65">PHP 
SDK</a></li> <li data-lang="ruby"><a 
href="#tab-b043c44e-e754-4561-848a-b9e3b3220e16">Ruby SDK</a></li> <li 
data-lang="java"><a href="#tab-15bc5cc6-c392-4694-a98c-a0d55505ef11">Java 
SDK</a></li> </ul> <div data-tab="REST API" data-lang="json" 
id="tab-8e38c7b8-2185-4534-b81e-b7bdb72f8d15"> <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</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": "1", "num": 4 }'</span> 
http://localhost:8000/queries.json
 
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Python SDK" 
data-lang="python" id="tab-7afc0aaa-1605-4a5a-b608-286b95e1e0a8"> <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-fb9a5f61-32ca-46ff-870d-53366db7642e"> <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</pre></td> <td class="code"><pre><span class="kn">import</span> <span 
class="nn">predictionio</span>
 <span class="n">engine_client</span> <span class="o">=</span> <span 
class="n">predictionio</span><span class="o">.</span><span 
class="n">EngineClient</span><span class="p">(</span><span 
class="n">url</span><span class="o">=</span><span 
class="s">"http://localhost:8000";</span><span class="p">)</span>
 <span class="k">print</span> <span class="n">engine_client</span><span 
class="o">.</span><span class="n">send_query</span><span 
class="p">({</span><span class="s">"user"</span><span class="p">:</span> <span 
class="s">"1"</span><span class="p">,</span> <span class="s">"num"</span><span 
class="p">:</span> <span class="mi">4</span><span class="p">})</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="PHP SDK" 
data-lang="php" id="tab-e187a542-3823-435c-9807-bb96db349989"> <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-10745a66-3359-4d70-9d90-7e65c6fbae65"> <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
@@ -326,7 +326,7 @@ Your system is all ready to go.
 <span class="nb">print_r</span><span class="p">(</span><span 
class="nv">$response</span><span class="p">);</span>
 
 <span class="cp">?&gt;</span>
-</pre></td> </tr></tbody></table> </div> </div> <div data-tab="Ruby SDK" 
data-lang="ruby" id="tab-1ef5e1ee-61fc-46b9-b1ea-52c58d8699ea"> <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-b043c44e-e754-4561-848a-b9e3b3220e16"> <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
@@ -339,7 +339,7 @@ Your system is all ready to go.
 <span class="n">response</span> <span class="o">=</span> <span 
class="n">client</span><span class="p">.</span><span 
class="nf">send_query</span><span class="p">(</span><span 
class="s1">'user'</span> <span class="o">=&gt;</span> <span 
class="o">&lt;</span><span class="no">USER</span> <span 
class="no">ID</span><span class="o">&gt;</span><span class="p">,</span> <span 
class="s1">'num'</span> <span class="o">=&gt;</span> <span 
class="o">&lt;</span><span class="no">NUMBER</span> <span 
class="p">(</span><span class="n">integer</span><span class="p">)</span><span 
class="o">&gt;</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-392b56b9-4c00-41c6-97f7-131f3bd3d929"> <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-15bc5cc6-c392-4694-a98c-a0d55505ef11"> <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

http://git-wip-us.apache.org/repos/asf/predictionio-site/blob/c17b9607/templates/similarproduct/dase/index.html
----------------------------------------------------------------------
diff --git a/templates/similarproduct/dase/index.html 
b/templates/similarproduct/dase/index.html
index 1db651c..63d1a65 100644
--- a/templates/similarproduct/dase/index.html
+++ b/templates/similarproduct/dase/index.html
@@ -503,7 +503,7 @@
   <span class="n">numIterations</span><span class="k">:</span> <span 
class="kt">Int</span><span class="o">,</span>
   <span class="n">lambda</span><span class="k">:</span> <span 
class="kt">Double</span><span class="o">,</span>
   <span class="n">seed</span><span class="k">:</span> <span 
class="kt">Option</span><span class="o">[</span><span 
class="kt">Long</span><span class="o">])</span> <span class="k">extends</span> 
<span class="nc">Params</span>
-</pre></td></tr></tbody></table> </div> <p>The <code>seed</code> parameter is 
an optional parameter, which is used by MLlib ALS algorithm internally to 
generate random values. If the <code>seed</code> is not specified, current 
system time would be used and hence each train may produce different reuslts. 
Specify a fixed value for the <code>seed</code> if you want to have 
deterministic result (For example, when you are 
testing).</p><p><code>ALS.trainImplicit()</code> then returns a 
<code>MatrixFactorizationModel</code> model which contains two RDDs: 
userFeatures and productFeatures. They correspond to the user X latent features 
matrix and item X latent features matrix, respectively. In this case, we will 
make use of the productFeatures matrix to find simliar products by comparing 
the similarity of the latent features. Hence, we store this productFeatures as 
defined in <code>ALSModel</code> class:</p><div class="highlight scala"><table 
style="border-spacing: 0"><tbody><tr><td class="gu
 tter gl" style="text-align: right"><pre class="lineno">1
+</pre></td></tr></tbody></table> </div> <p>The <code>seed</code> parameter is 
an optional parameter, which is used by MLlib ALS algorithm internally to 
generate random values. If the <code>seed</code> is not specified, current 
system time would be used and hence each train may produce different reuslts. 
Specify a fixed value for the <code>seed</code> if you want to have 
deterministic result (For example, when you are 
testing).</p><p><code>ALS.trainImplicit()</code> then returns a 
<code>MatrixFactorizationModel</code> model which contains two RDDs: 
userFeatures and productFeatures. They correspond to the user X latent features 
matrix and item X latent features matrix, respectively. In this case, we will 
make use of the productFeatures matrix to find similar products by comparing 
the similarity of the latent features. Hence, we store this productFeatures as 
defined in <code>ALSModel</code> class:</p><div class="highlight scala"><table 
style="border-spacing: 0"><tbody><tr><td class="gu
 tter gl" style="text-align: right"><pre class="lineno">1
 2
 3
 4

Reply via email to