Repository: incubator-hivemall-site
Updated Branches:
  refs/heads/asf-site fc345a565 -> 542ae788e


Added usage of each_top_k


Project: http://git-wip-us.apache.org/repos/asf/incubator-hivemall-site/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-hivemall-site/commit/542ae788
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-hivemall-site/tree/542ae788
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-hivemall-site/diff/542ae788

Branch: refs/heads/asf-site
Commit: 542ae788e2ac292fa54c54462362cbe7dadbb1eb
Parents: fc345a5
Author: myui <[email protected]>
Authored: Wed Nov 16 17:41:55 2016 +0900
Committer: myui <[email protected]>
Committed: Wed Nov 16 17:41:55 2016 +0900

----------------------------------------------------------------------
 userguide/misc/topk.html | 586 ++++++++++++++++++++++++++++++++++++++----
 1 file changed, 529 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hivemall-site/blob/542ae788/userguide/misc/topk.html
----------------------------------------------------------------------
diff --git a/userguide/misc/topk.html b/userguide/misc/topk.html
index 6ab13c2..92a9d2f 100644
--- a/userguide/misc/topk.html
+++ b/userguide/misc/topk.html
@@ -1651,17 +1651,133 @@
 -->
 <p><code>each_top_k(int k, ANY group, double value, arg1, arg2, ..., 
argN)</code> returns a top-k records for each <code>group</code>. It returns a 
relation consists of <code>(int rank, double value, arg1, arg2, .., 
argN)</code>.</p>
 <p>This function is particularly useful for applying a similarity/distance 
function where the computation complexity is <strong>O(nm)</strong>.</p>
-<p><code>each_top_k</code> is very fast when compared to other methods running 
top-k queries (e.g., <a 
href="https://ragrawal.wordpress.com/2011/11/18/extract-top-n-records-in-each-group-in-hadoophive/";
 target="_blank"><code>rank/distributed by</code></a>) in Hive.</p>
+<p><code>each_top_k</code> is very fast when compared to other methods running 
top-k queries (e.g., <a 
href="https://ragrawal.wordpress.com/2011/11/18/extract-top-n-records-in-each-group-in-hadoophive/";
 target="_blank"><code>rank/distribute by</code></a>) in Hive.</p>
 <h2 id="caution">Caution</h2>
 <ul>
 <li><code>each_top_k</code> is supported from Hivemall v0.3.2-3 or later.</li>
-<li>This UDTF assumes that input records are sorted by <code>group</code>. Use 
<code>DISTRIBUTED BY group SORTED BY group</code> to ensure that. Or, you can 
use <code>LEFT OUTER JOIN</code> for certain cases.</li>
+<li>This UDTF assumes that input records are sorted by <code>group</code>. Use 
<code>DISTRIBUTE BY group SORT BY group</code> to ensure that. Or, you can use 
<code>LEFT OUTER JOIN</code> for certain cases.</li>
 <li>It takes variable lengths arguments in <code>argN</code>. </li>
 <li>The third argument <code>value</code> is used for the comparison.</li>
 <li><code>Any number types</code> or <code>timestamp</code> are accepted for 
the type of <code>value</code>.</li>
 <li>If k is less than 0, reverse order is used and <code>tail-K</code> records 
are returned for each <code>group</code>.</li>
 <li>Note that this function returns <a 
href="http://www.michaelpollmeier.com/selecting-top-k-items-from-a-list-efficiently-in-java-groovy/";
 target="_blank">a pseudo ranking</a> for top-k. It always returns 
<code>at-most K</code> records for each group. The ranking scheme is similar to 
<code>dense_rank</code> but slightly different in certain cases.</li>
 </ul>
+<h1 id="efficient-top-k-query-processing-using-eachtopk">Efficient Top-k Query 
Processing using <code>each_top_k</code></h1>
+<p>Efficient processing of Top-k queries is a crucial requirement in many 
interactive environments that involve massive amounts of data. 
+Our Hive extension <code>each_top_k</code> helps running Top-k processing 
efficiently.</p>
+<ul>
+<li>Suppose the following table as the input</li>
+</ul>
+<table>
+<thead>
+<tr>
+<th style="text-align:center">student</th>
+<th style="text-align:center">class</th>
+<th style="text-align:center">score</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:center">1</td>
+<td style="text-align:center">b</td>
+<td style="text-align:center">70</td>
+</tr>
+<tr>
+<td style="text-align:center">2</td>
+<td style="text-align:center">a</td>
+<td style="text-align:center">80</td>
+</tr>
+<tr>
+<td style="text-align:center">3</td>
+<td style="text-align:center">a</td>
+<td style="text-align:center">90</td>
+</tr>
+<tr>
+<td style="text-align:center">4</td>
+<td style="text-align:center">b</td>
+<td style="text-align:center">50</td>
+</tr>
+<tr>
+<td style="text-align:center">5</td>
+<td style="text-align:center">a</td>
+<td style="text-align:center">70</td>
+</tr>
+<tr>
+<td style="text-align:center">6</td>
+<td style="text-align:center">b</td>
+<td style="text-align:center">60</td>
+</tr>
+</tbody>
+</table>
+<ul>
+<li>Then, list top-2 students for each class</li>
+</ul>
+<table>
+<thead>
+<tr>
+<th style="text-align:center">student</th>
+<th style="text-align:center">class</th>
+<th style="text-align:center">score</th>
+<th style="text-align:center">rank</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:center">3</td>
+<td style="text-align:center">a</td>
+<td style="text-align:center">90</td>
+<td style="text-align:center">1</td>
+</tr>
+<tr>
+<td style="text-align:center">2</td>
+<td style="text-align:center">a</td>
+<td style="text-align:center">80</td>
+<td style="text-align:center">2</td>
+</tr>
+<tr>
+<td style="text-align:center">1</td>
+<td style="text-align:center">b</td>
+<td style="text-align:center">70</td>
+<td style="text-align:center">1</td>
+</tr>
+<tr>
+<td style="text-align:center">6</td>
+<td style="text-align:center">b</td>
+<td style="text-align:center">60</td>
+<td style="text-align:center">2</td>
+</tr>
+</tbody>
+</table>
+<p>The standard way using SQL window function would be as follows:</p>
+<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> 
+  student, <span class="hljs-keyword">class</span>, score, <span 
class="hljs-keyword">rank</span>
+<span class="hljs-keyword">FROM</span> (
+  <span class="hljs-keyword">SELECT</span>
+    student, <span class="hljs-keyword">class</span>, score, 
+    <span class="hljs-keyword">rank</span>() <span 
class="hljs-keyword">over</span> (<span class="hljs-keyword">PARTITION</span> 
<span class="hljs-keyword">BY</span> <span class="hljs-keyword">class</span> 
<span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> 
score <span class="hljs-keyword">DESC</span>) <span 
class="hljs-keyword">as</span> <span class="hljs-keyword">rank</span>
+  <span class="hljs-keyword">FROM</span>
+    <span class="hljs-keyword">table</span>
+) t
+WHRE <span class="hljs-keyword">rank</span> &lt;= <span 
class="hljs-number">2</span>
+</code></pre>
+<p>An alternative and efficient way to compute top-k items using 
<code>each_top_k</code> is as follows:</p>
+<pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span> 
+  each_top_k(
+    <span class="hljs-number">2</span>, <span 
class="hljs-keyword">class</span>, score,
+    <span class="hljs-keyword">class</span>, student <span 
class="hljs-comment">-- output columns other in addition to rank and 
score</span>
+  ) <span class="hljs-keyword">as</span> (<span 
class="hljs-keyword">rank</span>, score, <span 
class="hljs-keyword">class</span>, student)
+<span class="hljs-keyword">FROM</span> (
+  <span class="hljs-keyword">SELECT</span> * <span 
class="hljs-keyword">FROM</span> <span class="hljs-keyword">table</span>
+  CLUSTER <span class="hljs-keyword">BY</span> <span 
class="hljs-keyword">class</span> <span class="hljs-comment">-- Mandatory for 
`each_top_k`</span>
+) t
+</code></pre>
+<div class="panel panel-primary"><div class="panel-heading"><h3 
class="panel-title" id="note"><i class="fa fa-edit"></i> Note</h3></div><div 
class="panel-body"><p><code>CLUSTER BY x</code> is a synonym of 
<code>DISTRIBUTE BY x CLASS SORT BY x</code> and required when using 
<code>each_top_k</code>.</p></div></div>
+<p>The function signature of <code>each_top_k</code> is <code>each_top_k(int 
k, ANY group, double value, arg1, arg2, ..., argN)</code> and it returns a 
relation <code>(int rank, double value, arg1, arg2, .., argN)</code>.</p>
+<p>Any number types or timestamp are accepted for the type of 
<code>value</code> but it MUST be not NULL. 
+Do null hanlding like <code>if(value is null, -1, value)</code> to avoid 
null.</p>
+<p>If <code>k</code> is less than 0, reverse order is used and tail-K records 
are returned for each <code>group</code>.</p>
+<p>The ranking semantics of <code>each_top_k</code> follows SQL&apos;s 
<code>dense_rank</code> and then limits results by <code>k</code>. </p>
+<div class="panel panel-warning"><div class="panel-heading"><h3 
class="panel-title" id="caution"><i class="fa fa-exclamation-triangle"></i> 
Caution</h3></div><div class="panel-body"><p><code>each_top_k</code> is 
benefical where the number of grouping keys are large. If the number of 
grouping keys are not so large (e.g., less than 100), consider using 
<code>rank() over</code> instead.</p></div></div>
 <h1 id="usage">Usage</h1>
 <h2 id="top-k-clicks">top-k clicks</h2>
 <p><a 
href="http://stackoverflow.com/questions/9390698/hive-getting-top-n-records-in-group-by-query/32559050#32559050";
 
target="_blank">http://stackoverflow.com/questions/9390698/hive-getting-top-n-records-in-group-by-query/32559050#32559050</a></p>
@@ -1699,33 +1815,202 @@
   test_hivemall t2 
   <span class="hljs-keyword">LEFT</span> <span 
class="hljs-keyword">OUTER</span> <span class="hljs-keyword">JOIN</span> 
train_hivemall t1;
 </code></pre>
-<pre><code>1       0.8594650626182556      12      10514   0
-2       0.8585299849510193      12      11719   0
-3       0.856602132320404       12      21009   0
-4       0.8562054634094238      12      17582   0
-5       0.8516314029693604      12      22006   0
-6       0.8499397039413452      12      25364   0
-7       0.8467264771461487      12      900     0
-8       0.8463355302810669      12      8018    0
-9       0.8439178466796875      12      7041    0
-10      0.8438876867294312      12      21595   0
-1       0.8390793800354004      25      21125   0
-2       0.8344510793685913      25      14073   0
-3       0.8340602517127991      25      9008    0
-4       0.8328862190246582      25      6598    0
-5       0.8301891088485718      25      943     0
-6       0.8271955251693726      25      20400   0
-7       0.8255619406700134      25      10922   0
-8       0.8241575956344604      25      8477    0
-9       0.822281539440155       25      25977   0
-10      0.8205751180648804      25      21115   0
-1       0.9761330485343933      34      2513    0
-2       0.9536819458007812      34      8697    0
-3       0.9531533122062683      34      7326    0
-4       0.9493276476860046      34      15173   0
-5       0.9480557441711426      34      19468   0
-...
-</code></pre><h3 
id="explicit-grouping-using-distribute-by-and-sort-by">Explicit grouping using 
<code>distribute by</code> and <code>sort by</code></h3>
+<table>
+<thead>
+<tr>
+<th style="text-align:center">rank</th>
+<th style="text-align:center">similarity</th>
+<th style="text-align:center">base_id</th>
+<th style="text-align:center">neighbor_id</th>
+<th style="text-align:center">y</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:center">1</td>
+<td style="text-align:center">0.8594650626182556</td>
+<td style="text-align:center">12</td>
+<td style="text-align:center">10514</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">2</td>
+<td style="text-align:center">0.8585299849510193</td>
+<td style="text-align:center">12</td>
+<td style="text-align:center">11719</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">3</td>
+<td style="text-align:center">0.856602132320404</td>
+<td style="text-align:center">12</td>
+<td style="text-align:center">21009</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">4</td>
+<td style="text-align:center">0.8562054634094238</td>
+<td style="text-align:center">12</td>
+<td style="text-align:center">17582</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">5</td>
+<td style="text-align:center">0.8516314029693604</td>
+<td style="text-align:center">12</td>
+<td style="text-align:center">22006</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">6</td>
+<td style="text-align:center">0.8499397039413452</td>
+<td style="text-align:center">12</td>
+<td style="text-align:center">25364</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">7</td>
+<td style="text-align:center">0.8467264771461487</td>
+<td style="text-align:center">12</td>
+<td style="text-align:center">900</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">8</td>
+<td style="text-align:center">0.8463355302810669</td>
+<td style="text-align:center">12</td>
+<td style="text-align:center">8018</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">9</td>
+<td style="text-align:center">0.8439178466796875</td>
+<td style="text-align:center">12</td>
+<td style="text-align:center">7041</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">10</td>
+<td style="text-align:center">0.8438876867294312</td>
+<td style="text-align:center">12</td>
+<td style="text-align:center">21595</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">1</td>
+<td style="text-align:center">0.8390793800354004</td>
+<td style="text-align:center">25</td>
+<td style="text-align:center">21125</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">2</td>
+<td style="text-align:center">0.8344510793685913</td>
+<td style="text-align:center">25</td>
+<td style="text-align:center">14073</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">3</td>
+<td style="text-align:center">0.8340602517127991</td>
+<td style="text-align:center">25</td>
+<td style="text-align:center">9008</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">4</td>
+<td style="text-align:center">0.8328862190246582</td>
+<td style="text-align:center">25</td>
+<td style="text-align:center">6598</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">5</td>
+<td style="text-align:center">0.8301891088485718</td>
+<td style="text-align:center">25</td>
+<td style="text-align:center">943</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">6</td>
+<td style="text-align:center">0.8271955251693726</td>
+<td style="text-align:center">25</td>
+<td style="text-align:center">20400</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">7</td>
+<td style="text-align:center">0.8255619406700134</td>
+<td style="text-align:center">25</td>
+<td style="text-align:center">10922</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">8</td>
+<td style="text-align:center">0.8241575956344604</td>
+<td style="text-align:center">25</td>
+<td style="text-align:center">8477</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">9</td>
+<td style="text-align:center">0.822281539440155</td>
+<td style="text-align:center">25</td>
+<td style="text-align:center">25977</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">10</td>
+<td style="text-align:center">0.8205751180648804</td>
+<td style="text-align:center">25</td>
+<td style="text-align:center">21115</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">1</td>
+<td style="text-align:center">0.9761330485343933</td>
+<td style="text-align:center">34</td>
+<td style="text-align:center">2513</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">2</td>
+<td style="text-align:center">0.9536819458007812</td>
+<td style="text-align:center">34</td>
+<td style="text-align:center">8697</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">3</td>
+<td style="text-align:center">0.9531533122062683</td>
+<td style="text-align:center">34</td>
+<td style="text-align:center">7326</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">4</td>
+<td style="text-align:center">0.9493276476860046</td>
+<td style="text-align:center">34</td>
+<td style="text-align:center">15173</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">5</td>
+<td style="text-align:center">0.9480557441711426</td>
+<td style="text-align:center">34</td>
+<td style="text-align:center">19468</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">..</td>
+<td style="text-align:center">..</td>
+<td style="text-align:center">..</td>
+<td style="text-align:center">..</td>
+<td style="text-align:center">..</td>
+</tr>
+</tbody>
+</table>
+<h3 id="explicit-grouping-using-distribute-by-and-sort-by">Explicit grouping 
using <code>distribute by</code> and <code>sort by</code></h3>
 <pre><code class="lang-sql"><span class="hljs-keyword">SELECT</span>
   each_top_k(
     <span class="hljs-number">10</span>, id1, angular_similarity(features1, 
features2), 
@@ -1887,33 +2172,220 @@ s05 <span class="hljs-keyword">as</span> (
   <span class="hljs-keyword">LEFT</span> <span 
class="hljs-keyword">OUTER</span> <span class="hljs-keyword">JOIN</span> 
train_hivemall t1
 <span class="hljs-comment">-- limit 25</span>
 </code></pre>
-<pre><code>1       0.4383084177970886      1       7503    0
-2       0.44166821241378784     1       10143   0
-3       0.4424300789833069      1       11073   0
-4       0.44254064559936523     1       17782   0
-5       0.4442034363746643      1       18556   0
-6       0.45163780450820923     1       3786    0
-7       0.45244503021240234     1       10242   0
-8       0.4525672197341919      1       21657   0
-9       0.4527127146720886      1       17218   0
-10      0.45314133167266846     1       25141   0
-1       0.44030147790908813     2       3786    0
-2       0.4408798813819885      2       23386   0
-3       0.44112563133239746     2       11073   0
-4       0.4415401816368103      2       22853   0
-5       0.4422193765640259      2       21657   0
-6       0.4429032802581787      2       10143   0
-7       0.4435907006263733      2       24413   0
-8       0.44569307565689087     2       7503    0
-9       0.4460843801498413      2       25141   0
-10      0.4464914798736572      2       24289   0
-1       0.43862903118133545     3       23150   1
-2       0.4398220181465149      3       9881    1
-3       0.44283604621887207     3       27121   0
-4       0.4432108402252197      3       26220   1
-5       0.44323229789733887     3       18541   0
-...
-</code></pre><p><div id="page-footer"><hr><p><sub><font color="gray">
+<table>
+<thead>
+<tr>
+<th style="text-align:center">rank</th>
+<th style="text-align:center">similarity</th>
+<th style="text-align:center">base_id</th>
+<th style="text-align:center">neighbor_id</th>
+<th style="text-align:center">y</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align:center">1</td>
+<td style="text-align:center">0.4383084177970886</td>
+<td style="text-align:center">1</td>
+<td style="text-align:center">7503</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">2</td>
+<td style="text-align:center">0.44166821241378784</td>
+<td style="text-align:center">1</td>
+<td style="text-align:center">10143</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">3</td>
+<td style="text-align:center">0.4424300789833069</td>
+<td style="text-align:center">1</td>
+<td style="text-align:center">11073</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">4</td>
+<td style="text-align:center">0.44254064559936523</td>
+<td style="text-align:center">1</td>
+<td style="text-align:center">17782</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">5</td>
+<td style="text-align:center">0.4442034363746643</td>
+<td style="text-align:center">1</td>
+<td style="text-align:center">18556</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">6</td>
+<td style="text-align:center">0.45163780450820923</td>
+<td style="text-align:center">1</td>
+<td style="text-align:center">3786</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">7</td>
+<td style="text-align:center">0.45244503021240234</td>
+<td style="text-align:center">1</td>
+<td style="text-align:center">10242</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">8</td>
+<td style="text-align:center">0.4525672197341919</td>
+<td style="text-align:center">1</td>
+<td style="text-align:center">21657</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">9</td>
+<td style="text-align:center">0.4527127146720886</td>
+<td style="text-align:center">1</td>
+<td style="text-align:center">17218</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">10</td>
+<td style="text-align:center">0.45314133167266846</td>
+<td style="text-align:center">1</td>
+<td style="text-align:center">25141</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">1</td>
+<td style="text-align:center">0.44030147790908813</td>
+<td style="text-align:center">2</td>
+<td style="text-align:center">3786</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">2</td>
+<td style="text-align:center">0.4408798813819885</td>
+<td style="text-align:center">2</td>
+<td style="text-align:center">23386</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">3</td>
+<td style="text-align:center">0.44112563133239746</td>
+<td style="text-align:center">2</td>
+<td style="text-align:center">11073</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">4</td>
+<td style="text-align:center">0.4415401816368103</td>
+<td style="text-align:center">2</td>
+<td style="text-align:center">22853</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">5</td>
+<td style="text-align:center">0.4422193765640259</td>
+<td style="text-align:center">2</td>
+<td style="text-align:center">21657</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">6</td>
+<td style="text-align:center">0.4429032802581787</td>
+<td style="text-align:center">2</td>
+<td style="text-align:center">10143</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">7</td>
+<td style="text-align:center">0.4435907006263733</td>
+<td style="text-align:center">2</td>
+<td style="text-align:center">24413</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">8</td>
+<td style="text-align:center">0.44569307565689087</td>
+<td style="text-align:center">2</td>
+<td style="text-align:center">7503</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">9</td>
+<td style="text-align:center">0.4460843801498413</td>
+<td style="text-align:center">2</td>
+<td style="text-align:center">25141</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">10</td>
+<td style="text-align:center">0.4464914798736572</td>
+<td style="text-align:center">2</td>
+<td style="text-align:center">24289</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">1</td>
+<td style="text-align:center">0.43862903118133545</td>
+<td style="text-align:center">3</td>
+<td style="text-align:center">23150</td>
+<td style="text-align:center">1</td>
+</tr>
+<tr>
+<td style="text-align:center">2</td>
+<td style="text-align:center">0.4398220181465149</td>
+<td style="text-align:center">3</td>
+<td style="text-align:center">9881</td>
+<td style="text-align:center">1</td>
+</tr>
+<tr>
+<td style="text-align:center">3</td>
+<td style="text-align:center">0.44283604621887207</td>
+<td style="text-align:center">3</td>
+<td style="text-align:center">27121</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">4</td>
+<td style="text-align:center">0.4432108402252197</td>
+<td style="text-align:center">3</td>
+<td style="text-align:center">26220</td>
+<td style="text-align:center">1</td>
+</tr>
+<tr>
+<td style="text-align:center">5</td>
+<td style="text-align:center">0.44323229789733887</td>
+<td style="text-align:center">3</td>
+<td style="text-align:center">18541</td>
+<td style="text-align:center">0</td>
+</tr>
+<tr>
+<td style="text-align:center">..</td>
+<td style="text-align:center">..</td>
+<td style="text-align:center">..</td>
+<td style="text-align:center">..</td>
+<td style="text-align:center">..</td>
+</tr>
+</tbody>
+</table>
+<p><div id="page-footer"><hr><!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<p><sub><font color="gray">
 Apache Hivemall is an effort undergoing incubation at The Apache Software 
Foundation (ASF), sponsored by the Apache Incubator.
 </font></sub></p>
 </div></p>
@@ -1950,7 +2422,7 @@ Apache Hivemall is an effort undergoing incubation at The 
Apache Software Founda
     <script>
         var gitbook = gitbook || [];
         gitbook.push(function() {
-            gitbook.page.hasChanged({"page":{"title":"Efficient Top-K query 
processing","level":"2.2","depth":1,"next":{"title":"English/Japanese Text 
Tokenizer","level":"2.3","depth":1,"path":"misc/tokenizer.md","ref":"misc/tokenizer.md","articles":[]},"previous":{"title":"List
 of generic Hivemall 
functions","level":"2.1","depth":1,"path":"misc/generic_funcs.md","ref":"misc/generic_funcs.md","articles":[]},"dir":"ltr"},"config":{"plugins":["theme-api","edit-link","github","splitter","sitemap","etoc","callouts","toggle-chapters","anchorjs","codeblock-filename","expandable-chapters","multipart","codeblock-filename","katex","emphasize","localized-footer"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"emphasize":{},"callouts":{},"etoc":{"maxdepth":3,"mindepth":1,"notoc":true},"github":{"url":"https://github.com/apache/incubator-hivemall/"},"splitt
 
er":{},"search":{},"downloadpdf":{"base":"https://github.com/apache/incubator-hivemall/docs/gitbook","label":"PDF","multilingual":false},"multipart":{},"localized-footer":{"filename":"FOOTER.md"},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"katex":{},"fontsettings":{"theme":"white","family":"sans","size":2,"font":"sans"},"highlight":{},"codeblock-filename":{},"sitemap":{"hostname":"http://hivemall.incubator.apache.org/"},"theme-api":{"languages":[],"split":false,"theme":"dark"},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"edit-link":{"label":"Edit","base":"https://github.com/apache/incubator-hivemall/docs/gitbook"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":true},"anchorjs":{"selector":"h1,h2,h3,
 *:not(.callout) > 
h4,h5"},"toggle-chapters":{},"expandable-chapters":{}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Hivemall
 User Manual","links":{"sidebar":{"<i class=\"fa fa-home\"></i> 
Home":"http://hivemall.incubator.apache.org/"}},"gitbook":"3.x.x","description":"User
 Manual for Apache 
Hivemall"},"file":{"path":"misc/topk.md","mtime":"2016-11-12T07:18:00.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2016-11-14T10:40:22.987Z"},"basePath":"..","book":{"language":""}});
+            gitbook.page.hasChanged({"page":{"title":"Efficient Top-K query 
processing","level":"2.2","depth":1,"next":{"title":"English/Japanese Text 
Tokenizer","level":"2.3","depth":1,"path":"misc/tokenizer.md","ref":"misc/tokenizer.md","articles":[]},"previous":{"title":"List
 of generic Hivemall 
functions","level":"2.1","depth":1,"path":"misc/generic_funcs.md","ref":"misc/generic_funcs.md","articles":[]},"dir":"ltr"},"config":{"plugins":["theme-api","edit-link","github","splitter","sitemap","etoc","callouts","toggle-chapters","anchorjs","codeblock-filename","expandable-chapters","multipart","codeblock-filename","katex","emphasize","localized-footer"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"emphasize":{},"callouts":{},"etoc":{"maxdepth":3,"mindepth":1,"notoc":true},"github":{"url":"https://github.com/apache/incubator-hivemall/"},"splitt
 
er":{},"search":{},"downloadpdf":{"base":"https://github.com/apache/incubator-hivemall/docs/gitbook","label":"PDF","multilingual":false},"multipart":{},"localized-footer":{"filename":"FOOTER.md"},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"katex":{},"fontsettings":{"theme":"white","family":"sans","size":2,"font":"sans"},"highlight":{},"codeblock-filename":{},"sitemap":{"hostname":"http://hivemall.incubator.apache.org/"},"theme-api":{"languages":[],"split":false,"theme":"dark"},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"edit-link":{"label":"Edit","base":"https://github.com/apache/incubator-hivemall/docs/gitbook"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":true},"anchorjs":{"selector":"h1,h2,h3,
 *:not(.callout) > 
h4,h5"},"toggle-chapters":{},"expandable-chapters":{}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Hivemall
 User Manual","links":{"sidebar":{"<i class=\"fa fa-home\"></i> 
Home":"http://hivemall.incubator.apache.org/"}},"gitbook":"3.x.x","description":"User
 Manual for Apache 
Hivemall"},"file":{"path":"misc/topk.md","mtime":"2016-11-16T08:32:05.000Z","type":"markdown"},"gitbook":{"version":"3.2.2","time":"2016-11-16T08:36:45.392Z"},"basePath":"..","book":{"language":""}});
         });
     </script>
 </div>

Reply via email to