You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ct...@apache.org on 2017/05/09 19:22:32 UTC

svn commit: r1011953 [21/32] - in /websites/production/lucene/content/solr/guide/test-10290: ./ fonts/mplus1mn/ images/a-quick-overview/ images/other-parsers/

Modified: websites/production/lucene/content/solr/guide/test-10290/parallel-sql-interface.html
==============================================================================
--- websites/production/lucene/content/solr/guide/test-10290/parallel-sql-interface.html (original)
+++ websites/production/lucene/content/solr/guide/test-10290/parallel-sql-interface.html Tue May  9 19:22:29 2017
@@ -1280,44 +1280,47 @@ $('#toc').on('click', 'a', function() {
   <div id="preamble">
 <div class="sectionbody">
 <div class="paragraph">
-<p>Solr&#8217;s Parallel SQL Interface brings the power of SQL to SolrCloud. The SQL interface seamlessly combines SQL with Solr&#8217;s full-text search capabilities. Both MapReduce style and JSON Facet API aggregations are supported, which means the SQL interface can be used to support both <strong>high query volume</strong> and <strong>high cardinality</strong> use cases.</p>
+<p>Solr&#8217;s Parallel SQL Interface brings the power of SQL to SolrCloud.</p>
+</div>
+<div class="paragraph">
+<p>The SQL interface seamlessly combines SQL with Solr&#8217;s full-text search capabilities. Both MapReduce style and JSON Facet API aggregations are supported, which means the SQL interface can be used to support both <strong>high query volume</strong> and <strong>high cardinality</strong> use cases.</p>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="ParallelSQLInterface-SQLArchitecture">SQL Architecture</h2>
+<h2 id="sql-architecture">SQL Architecture</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The SQL interface allows sending a SQL query to Solr and getting documents streamed back in response. Under the covers, Solr&#8217;s SQL interface uses the Apache Calcite SQL engine to translate SQL queries to physical query plans implemented as <a href="streaming-expressions.html#streaming-expressions">Streaming Expressions</a>.</p>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-SolrCollectionsandDBTables">Solr Collections and DB Tables</h3>
+<h3 id="solr-collections-and-db-tables">Solr Collections and DB Tables</h3>
 <div class="paragraph">
-<p>In a standard <code>SELECT</code> statement such as &#8220;SELECT &lt;expressions&gt; FROM &lt;table&gt;&#8221;, the table names correspond to Solr collection names. Table names are case insensitive.</p>
+<p>In a standard <code>SELECT</code> statement such as <code>SELECT &lt;expressions&gt; FROM &lt;table&gt;</code>, the table names correspond to Solr collection names. Table names are case insensitive.</p>
 </div>
 <div class="paragraph">
 <p>Column names in the SQL query map directly to fields in the Solr index for the collection being queried. These identifiers are case sensitive. Aliases are supported, and can be referenced in the <code>ORDER BY</code> clause.</p>
 </div>
 <div class="paragraph">
-<p>The * syntax to indicate all fields is not supported in either limited or unlimited queries. The <code>score</code> field can be used only with queries that contain a <code>LIMIT</code> clause.</p>
+<p>The <code>*</code> syntax to indicate all fields is not supported in either limited or unlimited queries. The <code>score</code> field can be used only with queries that contain a <code>LIMIT</code> clause.</p>
 </div>
 <div class="paragraph">
 <p>For example, we could index Solr&#8217;s sample documents and then construct an SQL query like this:</p>
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java">SELECT manu as mfr<span style="color: #666666">,</span> price as retail FROM techproducts</code></pre>
+<pre class="pygments highlight"><code data-lang="sql"><span style="color: #008000; font-weight: bold">SELECT</span> manu <span style="color: #008000; font-weight: bold">as</span> mfr, price <span style="color: #008000; font-weight: bold">as</span> retail <span style="color: #008000; font-weight: bold">FROM</span> techproducts</code></pre>
 </div>
 </div>
 <div class="paragraph">
 <p>The collection in Solr we are using is "techproducts", and we&#8217;ve asked for the "manu" and "price" fields to be returned and aliased with new names. While this example does not use those aliases, we could build on this to ORDER BY one or more of those fields.</p>
 </div>
 <div class="paragraph">
-<p>More information about how to structure SQL queries for Solr is included in the section <a href="#ParallelSQLInterface-SolrSQLSyntax">Solr SQL Syntax</a>.</p>
+<p>More information about how to structure SQL queries for Solr is included in the section <a href="#solr-sql-syntax">Solr SQL Syntax</a> below.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-AggregationModes">Aggregation Modes</h3>
+<h3 id="aggregation-modes">Aggregation Modes</h3>
 <div class="paragraph">
 <p>The SQL feature of Solr can work with aggregations (grouping of results) in two ways:</p>
 </div>
@@ -1337,20 +1340,17 @@ $('#toc').on('click', 'a', function() {
 <div class="paragraph">
 <p>As noted, the choice between aggregation modes depends on the cardinality of the fields you are working with. If you have low-to-moderate cardinality in the fields you are grouping by, the 'facet' aggregation mode will give you a higher performance because only the final groups are returned, very similar to how facets work today. If, however, you have high cardinality in the fields, the "map_reduce" aggregation mode with worker nodes provide a much more performant option.</p>
 </div>
-<div class="paragraph">
-<p>More detail on the architecture of the "map_reduce" query is in the section <a href="#ParallelSQLInterface-ParallelQueryArchitecture">Parallel Query Architecture</a>.</p>
-</div>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="ParallelSQLInterface-Configuration">Configuration</h2>
+<h2 id="configuration">Configuration</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The request handlers used for the SQL interface are configured to load implicitly, meaning there is little to do to start using this feature.</p>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-_sqlRequestHandler">/sql Request Handler</h3>
+<h3 id="sql-request-handler">/sql Request Handler</h3>
 <div class="paragraph">
 <p>The <code>/sql</code> handler is the front end of the Parallel SQL interface. All SQL queries are sent to the <code>/sql</code> handler to be processed. The handler also coordinates the distributed MapReduce jobs when running <code>GROUP BY</code> and <code>SELECT DISTINCT</code> queries in <code>map_reduce</code> mode. By default the <code>/sql</code> handler will choose worker nodes from its own collection to handle the distributed operations. In this default scenario the collection where the <code>/sql</code> handler resides acts as the default worker collection for MapReduce queries.</p>
 </div>
@@ -1365,7 +1365,7 @@ $('#toc').on('click', 'a', function() {
 </td>
 <td class="content">
 <div class="paragraph">
-<p>As described below in the section <a href="#ParallelSQLInterface-BestPractices">Best Practices</a>, you may want to set up a separate collection for parallelized SQL queries. If you have high cardinality fields and a large amount of data, please be sure to review that section and consider using a separate collection.</p>
+<p>As described below in the section <a href="#best-practices">Best Practices</a>, you may want to set up a separate collection for parallelized SQL queries. If you have high cardinality fields and a large amount of data, please be sure to review that section and consider using a separate collection.</p>
 </div>
 </td>
 </tr>
@@ -1373,28 +1373,31 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-_streamand_exportRequestHandlers">/stream and /export Request Handlers</h3>
+<h3 id="stream-and-export-request-handlers">/stream and /export Request Handlers</h3>
+<div class="paragraph">
+<p>The Streaming API is an extensible parallel computing framework for SolrCloud. <a href="streaming-expressions.html#streaming-expressions">Streaming Expressions</a> provide a query language and a serialization format for the Streaming API.</p>
+</div>
 <div class="paragraph">
-<p>The Streaming API is an extensible parallel computing framework for SolrCloud. <a href="streaming-expressions.html#streaming-expressions">Streaming Expressions</a> provide a query language and a serialization format for the Streaming API. The Streaming API provides support for fast MapReduce allowing it to perform parallel relational algebra on extremely large data sets. Under the covers the SQL interface parses SQL queries using the Apache Calcite SQL Parser. It then translates the queries to the parallel query plan. The parallel query plan is expressed using the Streaming API and Streaming Expressions.</p>
+<p>The Streaming API provides support for fast MapReduce allowing it to perform parallel relational algebra on extremely large data sets. Under the covers the SQL interface parses SQL queries using the Apache Calcite SQL Parser. It then translates the queries to the parallel query plan. The parallel query plan is expressed using the Streaming API and Streaming Expressions.</p>
 </div>
 <div class="paragraph">
 <p>Like the <code>/sql</code> request handler, the <code>/stream</code> and <code>/export</code> request handlers are configured as implicit handlers, and no further configuration is required.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-Fields">Fields</h3>
+<h3 id="fields">Fields</h3>
 <div class="paragraph">
 <p>In some cases, fields used in SQL queries must be configured as DocValue fields. If queries are unlimited, all fields must be DocValue fields. If queries are limited (with the <code>limit</code> clause) then fields do not have to be have DocValues enabled.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-SendingQueries">Sending Queries</h3>
+<h3 id="sending-queries">Sending Queries</h3>
 <div class="paragraph">
 <p>The SQL Interface provides a basic JDBC driver and an HTTP interface to perform queries.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-JDBCDriver">JDBC Driver</h3>
+<h3 id="jdbc-driver">JDBC Driver</h3>
 <div class="paragraph">
 <p>The JDBC Driver ships with SolrJ. Below is sample code for creating a connection and executing a query with the JDBC driver:</p>
 </div>
@@ -1422,7 +1425,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-HTTPInterface">HTTP Interface</h3>
+<h3 id="http-interface">HTTP Interface</h3>
 <div class="paragraph">
 <p>Solr accepts parallel SQL queries through the <code>/sql</code> handler.</p>
 </div>
@@ -1431,8 +1434,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="bash">curl --data-urlencode <span style="color: #BA2121">&#39;stmt=SELECT to, count(*) FROM collection4 GROUP BY to ORDER BY count(*) desc LIMIT 10&#39;</span>
-   http://localhost:8983/solr/collection4/sql?aggregationMode<span style="color: #666666">=</span>facet</code></pre>
+<pre class="pygments highlight"><code data-lang="bash">curl --data-urlencode <span style="color: #BA2121">&#39;stmt=SELECT to, count(*) FROM collection4 GROUP BY to ORDER BY count(*) desc LIMIT 10&#39;</span> http://localhost:8983/solr/collection4/sql?aggregationMode<span style="color: #666666">=</span>facet</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1440,19 +1442,19 @@ $('#toc').on('click', 'a', function() {
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java"><span style="color: #666666">{</span><span style="color: #BA2121">&quot;result-set&quot;</span><span style="color: #666666">:{</span><span style="color: #BA2121">&quot;docs&quot;</span><span style="color: #666666">:[</span>
-   <span style="color: #666666">{</span><span style="color: #BA2121">&quot;count(*)&quot;</span><span style="color: #666666">:9158,</span><span style="color: #BA2121">&quot;to&quot;</span><span style="color: #666666">:</span><span style="color: #BA2121">&quot;pete.davis@enron.com&quot;</span><span style="color: #666666">},</span>
-   <span style="color: #666666">{</span><span style="color: #BA2121">&quot;count(*)&quot;</span><span style="color: #666666">:6244,</span><span style="color: #BA2121">&quot;to&quot;</span><span style="color: #666666">:</span><span style="color: #BA2121">&quot;tana.jones@enron.com&quot;</span><span style="color: #666666">},</span>
-   <span style="color: #666666">{</span><span style="color: #BA2121">&quot;count(*)&quot;</span><span style="color: #666666">:5874,</span><span style="color: #BA2121">&quot;to&quot;</span><span style="color: #666666">:</span><span style="color: #BA2121">&quot;jeff.dasovich@enron.com&quot;</span><span style="color: #666666">},</span>
-   <span style="color: #666666">{</span><span style="color: #BA2121">&quot;count(*)&quot;</span><span style="color: #666666">:5867,</span><span style="color: #BA2121">&quot;to&quot;</span><span style="color: #666666">:</span><span style="color: #BA2121">&quot;sara.shackleton@enron.com&quot;</span><span style="color: #666666">},</span>
-   <span style="color: #666666">{</span><span style="color: #BA2121">&quot;count(*)&quot;</span><span style="color: #666666">:5595,</span><span style="color: #BA2121">&quot;to&quot;</span><span style="color: #666666">:</span><span style="color: #BA2121">&quot;steven.kean@enron.com&quot;</span><span style="color: #666666">},</span>
-   <span style="color: #666666">{</span><span style="color: #BA2121">&quot;count(*)&quot;</span><span style="color: #666666">:4904,</span><span style="color: #BA2121">&quot;to&quot;</span><span style="color: #666666">:</span><span style="color: #BA2121">&quot;vkaminski@aol.com&quot;</span><span style="color: #666666">},</span>
-   <span style="color: #666666">{</span><span style="color: #BA2121">&quot;count(*)&quot;</span><span style="color: #666666">:4622,</span><span style="color: #BA2121">&quot;to&quot;</span><span style="color: #666666">:</span><span style="color: #BA2121">&quot;mark.taylor@enron.com&quot;</span><span style="color: #666666">},</span>
-   <span style="color: #666666">{</span><span style="color: #BA2121">&quot;count(*)&quot;</span><span style="color: #666666">:3819,</span><span style="color: #BA2121">&quot;to&quot;</span><span style="color: #666666">:</span><span style="color: #BA2121">&quot;kay.mann@enron.com&quot;</span><span style="color: #666666">},</span>
-   <span style="color: #666666">{</span><span style="color: #BA2121">&quot;count(*)&quot;</span><span style="color: #666666">:3678,</span><span style="color: #BA2121">&quot;to&quot;</span><span style="color: #666666">:</span><span style="color: #BA2121">&quot;richard.shapiro@enron.com&quot;</span><span style="color: #666666">},</span>
-   <span style="color: #666666">{</span><span style="color: #BA2121">&quot;count(*)&quot;</span><span style="color: #666666">:3653,</span><span style="color: #BA2121">&quot;to&quot;</span><span style="color: #666666">:</span><span style="color: #BA2121">&quot;kate.symes@enron.com&quot;</span><span style="color: #666666">},</span>
-   <span style="color: #666666">{</span><span style="color: #BA2121">&quot;EOF&quot;</span><span style="color: #666666">:</span><span style="color: #BA2121">&quot;true&quot;</span><span style="color: #666666">,</span><span style="color: #BA2121">&quot;RESPONSE_TIME&quot;</span><span style="color: #666666">:10}]}</span>
-<span style="color: #666666">}</span></code></pre>
+<pre class="pygments highlight"><code data-lang="json">{<span style="color: #008000; font-weight: bold">&quot;result-set&quot;</span>:{<span style="color: #008000; font-weight: bold">&quot;docs&quot;</span>:[
+   {<span style="color: #008000; font-weight: bold">&quot;count(*)&quot;</span>:<span style="color: #666666">9158</span>,<span style="color: #008000; font-weight: bold">&quot;to&quot;</span>:<span style="color: #BA2121">&quot;pete.davis@enron.com&quot;</span>},
+   {<span style="color: #008000; font-weight: bold">&quot;count(*)&quot;</span>:<span style="color: #666666">6244</span>,<span style="color: #008000; font-weight: bold">&quot;to&quot;</span>:<span style="color: #BA2121">&quot;tana.jones@enron.com&quot;</span>},
+   {<span style="color: #008000; font-weight: bold">&quot;count(*)&quot;</span>:<span style="color: #666666">5874</span>,<span style="color: #008000; font-weight: bold">&quot;to&quot;</span>:<span style="color: #BA2121">&quot;jeff.dasovich@enron.com&quot;</span>},
+   {<span style="color: #008000; font-weight: bold">&quot;count(*)&quot;</span>:<span style="color: #666666">5867</span>,<span style="color: #008000; font-weight: bold">&quot;to&quot;</span>:<span style="color: #BA2121">&quot;sara.shackleton@enron.com&quot;</span>},
+   {<span style="color: #008000; font-weight: bold">&quot;count(*)&quot;</span>:<span style="color: #666666">5595</span>,<span style="color: #008000; font-weight: bold">&quot;to&quot;</span>:<span style="color: #BA2121">&quot;steven.kean@enron.com&quot;</span>},
+   {<span style="color: #008000; font-weight: bold">&quot;count(*)&quot;</span>:<span style="color: #666666">4904</span>,<span style="color: #008000; font-weight: bold">&quot;to&quot;</span>:<span style="color: #BA2121">&quot;vkaminski@aol.com&quot;</span>},
+   {<span style="color: #008000; font-weight: bold">&quot;count(*)&quot;</span>:<span style="color: #666666">4622</span>,<span style="color: #008000; font-weight: bold">&quot;to&quot;</span>:<span style="color: #BA2121">&quot;mark.taylor@enron.com&quot;</span>},
+   {<span style="color: #008000; font-weight: bold">&quot;count(*)&quot;</span>:<span style="color: #666666">3819</span>,<span style="color: #008000; font-weight: bold">&quot;to&quot;</span>:<span style="color: #BA2121">&quot;kay.mann@enron.com&quot;</span>},
+   {<span style="color: #008000; font-weight: bold">&quot;count(*)&quot;</span>:<span style="color: #666666">3678</span>,<span style="color: #008000; font-weight: bold">&quot;to&quot;</span>:<span style="color: #BA2121">&quot;richard.shapiro@enron.com&quot;</span>},
+   {<span style="color: #008000; font-weight: bold">&quot;count(*)&quot;</span>:<span style="color: #666666">3653</span>,<span style="color: #008000; font-weight: bold">&quot;to&quot;</span>:<span style="color: #BA2121">&quot;kate.symes@enron.com&quot;</span>},
+   {<span style="color: #008000; font-weight: bold">&quot;EOF&quot;</span>:<span style="color: #BA2121">&quot;true&quot;</span>,<span style="color: #008000; font-weight: bold">&quot;RESPONSE_TIME&quot;</span>:<span style="color: #666666">10</span>}]}
+}</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1462,7 +1464,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect1">
-<h2 id="ParallelSQLInterface-SolrSQLSyntax">Solr SQL Syntax</h2>
+<h2 id="solr-sql-syntax">Solr SQL Syntax</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Solr supports a broad range of SQL syntax.</p>
@@ -1483,37 +1485,38 @@ $('#toc').on('click', 'a', function() {
 </table>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-EscapingReservedWords">Escaping Reserved Words</h3>
+<h3 id="escaping-reserved-words">Escaping Reserved Words</h3>
 <div class="paragraph">
 <p>The SQL parser will return an error if a reserved word is used in the SQL query. Reserved words can be escaped and included in the query using the back tick. For example:</p>
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java">select <span style="border: 1px solid #FF0000">`</span>from<span style="border: 1px solid #FF0000">`</span> from emails</code></pre>
+<pre class="pygments highlight"><code data-lang="sql"><span style="color: #008000; font-weight: bold">select</span> <span style="color: #666666">`</span><span style="color: #008000; font-weight: bold">from</span><span style="color: #666666">`</span> <span style="color: #008000; font-weight: bold">from</span> emails</code></pre>
 </div>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-SELECTStatements">SELECT Statements</h3>
+<h3 id="select-statements">SELECT Statements</h3>
 <div class="paragraph">
 <p>Solr supports limited and unlimited select queries. The syntax between the two types of queries are identical except for the <code>LIMIT</code> clause in the SQL statement. However, they have very different execution plans and different requirements for how the data is stored. The sections below explores both types of queries.</p>
 </div>
 <div class="sect3">
-<h4 id="ParallelSQLInterface-BasicSELECTstatementwithLIMIT">Basic SELECT statement with LIMIT</h4>
+<h4 id="basic-select-statement-with-limit">Basic SELECT statement with LIMIT</h4>
 <div class="paragraph">
 <p>A limited select query follows this basic syntax:</p>
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java">SELECT fieldA as fa<span style="color: #666666">,</span> fieldB as fb<span style="color: #666666">,</span> fieldC as fc FROM tableA WHERE fieldC <span style="color: #666666">=</span> <span style="border: 1px solid #FF0000">&#39;</span>term1 term2<span style="border: 1px solid #FF0000">&#39;</span> ORDER BY fa desc LIMIT <span style="color: #666666">100</span></code></pre>
+<pre class="pygments highlight"><code data-lang="sql"><span style="color: #008000; font-weight: bold">SELECT</span> fieldA <span style="color: #008000; font-weight: bold">as</span> fa, fieldB <span style="color: #008000; font-weight: bold">as</span> fb, fieldC <span style="color: #008000; font-weight: bold">as</span> fc <span style="color: #008000; font-weight: bold">FROM</span> tableA <span style="color: #008000; font-weight: bold">WHERE</span> fieldC <span style="color: #666666">=</span> <span style="color: #BA2121">&#39;term1 term2&#39;</span> <span style="color: #008000; font-weight: bold">ORDER</span> <span style="color: #008000; font-weight: bold">BY</span> fa <span style="color: #008000; font-weight: bold">desc</span> <span style="color: #008000; font-weight: bold">LIMIT</span> <span style="color: #666666">100</span></code></pre>
 </div>
 </div>
 <div class="paragraph">
 <p>We&#8217;ve covered many syntax options with this example, so let&#8217;s walk through what&#8217;s possible below.</p>
 </div>
 </div>
-<div class="sect3">
-<h4 id="ParallelSQLInterface-WHEREClauseandBooleanPredicates"><strong>WHERE</strong> Clause <strong>and Boolean Predicates</strong></h4>
+</div>
+<div class="sect2">
+<h3 id="code-where-code-clause-and-boolean-predicates"><code>WHERE</code> Clause and Boolean Predicates</h3>
 <div class="admonitionblock important">
 <table>
 <tr>
@@ -1522,7 +1525,7 @@ $('#toc').on('click', 'a', function() {
 </td>
 <td class="content">
 <div class="paragraph">
-<p>The WHERE clause must have a field on one side of the predicate. Two constants (5 &lt; 10) or two fields (fielda &gt; fieldb) is not supported. Subqueries are also not supported.</p>
+<p>The WHERE clause must have a field on one side of the predicate. Two constants <code>(5 &lt; 10</code>) or two fields <code>(fielda &gt; fieldb)</code> is not supported. Subqueries are also not supported.</p>
 </div>
 </td>
 </tr>
@@ -1533,7 +1536,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java">WHERE fieldC <span style="color: #666666">=</span> <span style="border: 1px solid #FF0000">&#39;</span>term1 term2<span style="border: 1px solid #FF0000">&#39;</span></code></pre>
+<pre class="pygments highlight"><code data-lang="sql"><span style="color: #008000; font-weight: bold">WHERE</span> fieldC <span style="color: #666666">=</span> <span style="color: #BA2121">&#39;term1 term2&#39;</span></code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1544,7 +1547,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java">WHERE fieldC <span style="color: #666666">=</span> <span style="border: 1px solid #FF0000">&#39;</span><span style="color: #666666">(</span>term1 term2<span style="color: #666666">)</span><span style="border: 1px solid #FF0000">&#39;</span></code></pre>
+<pre class="pygments highlight"><code data-lang="sql"><span style="color: #008000; font-weight: bold">WHERE</span> fieldC <span style="color: #666666">=</span> <span style="color: #BA2121">&#39;(term1 term2)&#39;</span></code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1555,7 +1558,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java">WHERE fieldC <span style="color: #666666">=</span> <span style="border: 1px solid #FF0000">&#39;</span><span style="color: #666666">[0</span> TO <span style="color: #666666">100]</span><span style="border: 1px solid #FF0000">&#39;</span></code></pre>
+<pre class="pygments highlight"><code data-lang="sql"><span style="color: #008000; font-weight: bold">WHERE</span> fieldC <span style="color: #666666">=</span> <span style="color: #BA2121">&#39;[0 TO 100]&#39;</span></code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1563,7 +1566,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java">WHERE <span style="color: #666666">((</span>fieldC <span style="color: #666666">=</span> <span style="border: 1px solid #FF0000">&#39;</span>term1<span style="border: 1px solid #FF0000">&#39;</span> AND fieldA <span style="color: #666666">=</span> <span style="border: 1px solid #FF0000">&#39;</span>term2<span style="border: 1px solid #FF0000">&#39;</span><span style="color: #666666">)</span> OR <span style="color: #666666">(</span>fieldB <span style="color: #666666">=</span> <span style="border: 1px solid #FF0000">&#39;</span>term3<span style="border: 1px solid #FF0000">&#39;</span><span style="color: #666666">))</span></code></pre>
+<pre class="pygments highlight"><code data-lang="sql"><span style="color: #008000; font-weight: bold">WHERE</span> ((fieldC <span style="color: #666666">=</span> <span style="color: #BA2121">&#39;term1&#39;</span> <span style="color: #008000; font-weight: bold">AND</span> fieldA <span style="color: #666666">=</span> <span style="color: #BA2121">&#39;term2&#39;</span>) <span style="color: #008000; font-weight: bold">OR</span> (fieldB <span style="color: #666666">=</span> <span style="color: #BA2121">&#39;term3&#39;</span>))</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1571,12 +1574,11 @@ $('#toc').on('click', 'a', function() {
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java">WHERE <span style="color: #666666">(</span>fieldA <span style="color: #666666">=</span> <span style="border: 1px solid #FF0000">&#39;</span>term1<span style="border: 1px solid #FF0000">&#39;</span><span style="color: #666666">)</span> AND <span style="color: #0000FF">NOT</span> <span style="color: #666666">(</span>fieldB <span style="color: #666666">=</span> <span style="border: 1px solid #FF0000">&#39;</span>term2<span style="border: 1px solid #FF0000">&#39;</span><span style="color: #666666">)</span></code></pre>
-</div>
+<pre class="pygments highlight"><code data-lang="sql"><span style="color: #008000; font-weight: bold">WHERE</span> (fieldA <span style="color: #666666">=</span> <span style="color: #BA2121">&#39;term1&#39;</span>) <span style="color: #008000; font-weight: bold">AND</span> <span style="color: #008000; font-weight: bold">NOT</span> (fieldB <span style="color: #666666">=</span> <span style="color: #BA2121">&#39;term2&#39;</span>)</code></pre>
 </div>
 </div>
 <div class="sect3">
-<h4 id="ParallelSQLInterface-SupportedWHEREOperators">Supported WHERE <strong>Operators</strong></h4>
+<h4 id="supported-code-where-code-operators">Supported <code>WHERE</code> Operators</h4>
 <div class="paragraph">
 <p>The parallel SQL interface supports and pushes down most common SQL operators, specifically:</p>
 </div>
@@ -1618,41 +1620,25 @@ $('#toc').on('click', 'a', function() {
 <td class="tableblock halign-left valign-top"><p class="tableblock">&gt;</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Greater than</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>fielda &gt; 10</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="literalblock">
-<div class="content">
-<pre>fielda:{10 TO *]</pre>
-</div>
-</div></div></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>fielda:{10 TO *]</code></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">&gt;=</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Greater than or equals</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>fielda &gt;= 10</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="literalblock">
-<div class="content">
-<pre>fielda:[10 TO *]</pre>
-</div>
-</div></div></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>fielda:[10 TO *]</code></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">&lt;</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Less than</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>fielda &lt; 10</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="literalblock">
-<div class="content">
-<pre>fielda:[* TO 10}</pre>
-</div>
-</div></div></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>fielda:[* TO 10}</code></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">&#8656;</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Less than or equals</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>fielda &#8656; 10</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="literalblock">
-<div class="content">
-<pre>fielda:[* TO 10]</pre>
-</div>
-</div></div></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>fielda:[* TO 10]</code></p></td>
 </tr>
 </tbody>
 </table>
@@ -1670,8 +1656,9 @@ $('#toc').on('click', 'a', function() {
 </ul>
 </div>
 </div>
-<div class="sect3">
-<h4 id="ParallelSQLInterface-ORDERBYClause"><strong>ORDER</strong> BY <strong>Clause</strong></h4>
+</div>
+<div class="sect2">
+<h3 id="code-order-by-code-clause"><code>ORDER BY</code> Clause</h3>
 <div class="paragraph">
 <p>The <code>ORDER BY</code> clause maps directly to Solr fields. Multiple <code>ORDER BY</code> fields and directions are supported.</p>
 </div>
@@ -1679,11 +1666,14 @@ $('#toc').on('click', 'a', function() {
 <p>The <code>score</code> field is accepted in the <code>ORDER BY</code> clause in queries where a limit is specified.</p>
 </div>
 <div class="paragraph">
+<p>If the <code>ORDER BY</code> clause contains the exact fields in the <code>GROUP BY</code> clause, then there is no-limit placed on the returned results. If the <code>ORDER BY</code> clause contains different fields than the <code>GROUP BY</code> clause, a limit of 100 is automatically applied. To increase this limit you must specify a value in the <code>LIMIT</code> clause.</p>
+</div>
+<div class="paragraph">
 <p>Order by fields are case sensitive.</p>
 </div>
 </div>
-<div class="sect3">
-<h4 id="ParallelSQLInterface-LIMITClause"><strong>LIMIT Clause</strong></h4>
+<div class="sect2">
+<h3 id="code-limit-code-clause"><code>LIMIT</code> Clause</h3>
 <div class="paragraph">
 <p>Limits the result set to the specified size. In the example above the clause <code>LIMIT 100</code> will limit the result set to 100 records.</p>
 </div>
@@ -1704,8 +1694,8 @@ $('#toc').on('click', 'a', function() {
 </ul>
 </div>
 </div>
-<div class="sect3">
-<h4 id="ParallelSQLInterface-SELECTDISTINCTQueries">SELECT DISTINCT Queries</h4>
+<div class="sect2">
+<h3 id="code-select-distinct-code-queries"><code>SELECT DISTINCT</code> Queries</h3>
 <div class="paragraph">
 <p>The SQL interface supports both MapReduce and Facet implementations for <code>SELECT DISTINCT</code> queries.</p>
 </div>
@@ -1720,13 +1710,12 @@ $('#toc').on('click', 'a', function() {
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java">SELECT distinct fieldA as fa<span style="color: #666666">,</span> fieldB as fb FROM tableA ORDER BY fa desc<span style="color: #666666">,</span> fb desc</code></pre>
-</div>
+<pre class="pygments highlight"><code data-lang="sql"><span style="color: #008000; font-weight: bold">SELECT</span> <span style="color: #008000; font-weight: bold">distinct</span> fieldA <span style="color: #008000; font-weight: bold">as</span> fa, fieldB <span style="color: #008000; font-weight: bold">as</span> fb <span style="color: #008000; font-weight: bold">FROM</span> tableA <span style="color: #008000; font-weight: bold">ORDER</span> <span style="color: #008000; font-weight: bold">BY</span> fa <span style="color: #008000; font-weight: bold">desc</span>, fb <span style="color: #008000; font-weight: bold">desc</span></code></pre>
 </div>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-Statistics">Statistics</h3>
+<h3 id="statistics">Statistics</h3>
 <div class="paragraph">
 <p>The SQL interface supports simple statistics calculated on numeric fields. The supported functions are <code>count(*)</code>, <code>min</code>, <code>max</code>, <code>sum</code>, and <code>avg</code>.</p>
 </div>
@@ -1735,12 +1724,12 @@ $('#toc').on('click', 'a', function() {
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java">SELECT <span style="color: #0000FF">count</span><span style="color: #666666">(*)</span> as count<span style="color: #666666">,</span> sum<span style="color: #666666">(</span>fieldB<span style="color: #666666">)</span> as sum FROM tableA WHERE fieldC <span style="color: #666666">=</span> <span style="border: 1px solid #FF0000">&#39;</span>Hello<span style="border: 1px solid #FF0000">&#39;</span></code></pre>
+<pre class="pygments highlight"><code data-lang="sql"><span style="color: #008000; font-weight: bold">SELECT</span> <span style="color: #008000; font-weight: bold">count</span>(<span style="color: #666666">*</span>) <span style="color: #008000; font-weight: bold">as</span> <span style="color: #008000; font-weight: bold">count</span>, <span style="color: #008000; font-weight: bold">sum</span>(fieldB) <span style="color: #008000; font-weight: bold">as</span> <span style="color: #008000; font-weight: bold">sum</span> <span style="color: #008000; font-weight: bold">FROM</span> tableA <span style="color: #008000; font-weight: bold">WHERE</span> fieldC <span style="color: #666666">=</span> <span style="color: #BA2121">&#39;Hello&#39;</span></code></pre>
 </div>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-GROUPBYAggregations">GROUP BY Aggregations</h3>
+<h3 id="code-group-by-code-aggregations"><code>GROUP BY</code> Aggregations</h3>
 <div class="paragraph">
 <p>The SQL interface also supports <code>GROUP BY</code> aggregate queries.</p>
 </div>
@@ -1748,14 +1737,14 @@ $('#toc').on('click', 'a', function() {
 <p>As with <code>SELECT DISTINCT</code> queries, the SQL interface supports both a MapReduce implementation and a Facet implementation. The MapReduce implementation can build aggregations over extremely high cardinality fields. The Facet implementations provides high performance aggregation over fields with moderate levels of cardinality.</p>
 </div>
 <div class="sect3">
-<h4 id="ParallelSQLInterface-BasicGROUPBYwithAggregates"><strong>Basic <code>GROUP BY</code> with Aggregates</strong></h4>
+<h4 id="basic-code-group-by-code-with-aggregates">Basic <code>GROUP BY</code> with Aggregates</h4>
 <div class="paragraph">
 <p>Here is a basic example of a GROUP BY query that requests aggregations:</p>
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java">SELECT fieldA as fa<span style="color: #666666">,</span> fieldB as fb<span style="color: #666666">,</span> count<span style="color: #666666">(*)</span> as count<span style="color: #666666">,</span> sum<span style="color: #666666">(</span>fieldC<span style="color: #666666">)</span> as sum<span style="color: #666666">,</span> avg<span style="color: #666666">(</span>fieldY<span style="color: #666666">)</span> as avg FROM tableA WHERE fieldC <span style="color: #666666">=</span> <span style="border: 1px solid #FF0000">&#39;</span>term1 term2<span style="border: 1px solid #FF0000">&#39;</span>
-GROUP BY fa<span style="color: #666666">,</span> fb HAVING sum <span style="color: #666666">&gt;</span> <span style="color: #666666">1000</span> ORDER BY sum asc LIMIT <span style="color: #666666">100</span></code></pre>
+<pre class="pygments highlight"><code data-lang="sql"><span style="color: #008000; font-weight: bold">SELECT</span> fieldA <span style="color: #008000; font-weight: bold">as</span> fa, fieldB <span style="color: #008000; font-weight: bold">as</span> fb, <span style="color: #008000; font-weight: bold">count</span>(<span style="color: #666666">*</span>) <span style="color: #008000; font-weight: bold">as</span> <span style="color: #008000; font-weight: bold">count</span>, <span style="color: #008000; font-weight: bold">sum</span>(fieldC) <span style="color: #008000; font-weight: bold">as</span> <span style="color: #008000; font-weight: bold">sum</span>, <span style="color: #008000; font-weight: bold">avg</span>(fieldY) <span style="color: #008000; font-weight: bold">as</span> <span style="color: #008000; font-weight: bold">avg</span> <span style="color: #008000; font-weight: bold">FROM</span> tableA <span style="color: #008000; font-weight: bold">WHERE</span> fieldC <span style="color:
  #666666">=</span> <span style="color: #BA2121">&#39;term1 term2&#39;</span>
+<span style="color: #008000; font-weight: bold">GROUP</span> <span style="color: #008000; font-weight: bold">BY</span> fa, fb <span style="color: #008000; font-weight: bold">HAVING</span> <span style="color: #008000; font-weight: bold">sum</span> <span style="color: #666666">&gt;</span> <span style="color: #666666">1000</span> <span style="color: #008000; font-weight: bold">ORDER</span> <span style="color: #008000; font-weight: bold">BY</span> <span style="color: #008000; font-weight: bold">sum</span> <span style="color: #008000; font-weight: bold">asc</span> <span style="color: #008000; font-weight: bold">LIMIT</span> <span style="color: #666666">100</span></code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1763,7 +1752,7 @@ GROUP BY fa<span style="color: #666666">
 </div>
 </div>
 <div class="sect3">
-<h4 id="ParallelSQLInterface-TheColumnIdentifiersandAliases"><strong>The Column Identifiers and Aliases</strong></h4>
+<h4 id="column-identifiers-and-aliases">Column Identifiers and Aliases</h4>
 <div class="paragraph">
 <p>The Column Identifiers can contain both fields in the Solr index and aggregate functions. The supported aggregate functions are:</p>
 </div>
@@ -1790,65 +1779,59 @@ GROUP BY fa<span style="color: #666666">
 <p>The non-function fields in the field list determine the fields to calculate the aggregations over.</p>
 </div>
 <div class="paragraph">
-<p><strong>GROUP BY Clause</strong></p>
+<p><strong><code>GROUP BY</code> Clause</strong></p>
 </div>
 <div class="paragraph">
 <p>The <code>GROUP BY</code> clause can contain up to 4 fields in the Solr index. These fields should correspond with the non-function fields in the field list.</p>
 </div>
 </div>
-<div class="sect3">
-<h4 id="ParallelSQLInterface-HAVINGClause"><strong>HAVING Clause</strong></h4>
+</div>
+<div class="sect2">
+<h3 id="code-having-code-clause"><code>HAVING</code> Clause</h3>
 <div class="paragraph">
 <p>The <code>HAVING</code> clause may contain any function listed in the field list. Complex <code>HAVING</code> clauses such as this are supported:</p>
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java">SELECT fieldA<span style="color: #666666">,</span> fieldB<span style="color: #666666">,</span> count<span style="color: #666666">(*),</span> sum<span style="color: #666666">(</span>fieldC<span style="color: #666666">),</span> avg<span style="color: #666666">(</span>fieldY<span style="color: #666666">)</span>
-FROM tableA
-WHERE fieldC <span style="color: #666666">=</span> <span style="border: 1px solid #FF0000">&#39;</span>term1 term2<span style="border: 1px solid #FF0000">&#39;</span>
-GROUP BY fieldA<span style="color: #666666">,</span> fieldB
-<span style="color: #0000FF">HAVING</span> <span style="color: #666666">((</span>sum<span style="color: #666666">(</span>fieldC<span style="color: #666666">)</span> <span style="color: #666666">&gt;</span> <span style="color: #666666">1000)</span> AND <span style="color: #666666">(</span>avg<span style="color: #666666">(</span>fieldY<span style="color: #666666">)</span> <span style="color: #666666">&lt;=</span> <span style="color: #666666">10))</span>
-ORDER BY <span style="color: #0000FF">sum</span><span style="color: #666666">(</span>fieldC<span style="color: #666666">)</span> asc
-LIMIT <span style="color: #666666">100</span></code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="ParallelSQLInterface-ORDERBYClause.1"><strong>ORDER BY Clause</strong></h4>
-<div class="paragraph">
-<p>The <code>ORDER BY</code> clause contains any field or function in the field list.</p>
-</div>
-<div class="paragraph">
-<p>If the <code>ORDER BY</code> clause contains the exact fields in the <code>GROUP BY</code> clause, then there is no-limit placed on the returned results. If the <code>ORDER BY</code> clause contains different fields than the <code>GROUP BY</code> clause, a limit of 100 is automatically applied. To increase this limit you must specify a value in the <code>LIMIT</code> clause.</p>
+<pre class="pygments highlight"><code data-lang="sql"><span style="color: #008000; font-weight: bold">SELECT</span> fieldA, fieldB, <span style="color: #008000; font-weight: bold">count</span>(<span style="color: #666666">*</span>), <span style="color: #008000; font-weight: bold">sum</span>(fieldC), <span style="color: #008000; font-weight: bold">avg</span>(fieldY)
+<span style="color: #008000; font-weight: bold">FROM</span> tableA
+<span style="color: #008000; font-weight: bold">WHERE</span> fieldC <span style="color: #666666">=</span> <span style="color: #BA2121">&#39;term1 term2&#39;</span>
+<span style="color: #008000; font-weight: bold">GROUP</span> <span style="color: #008000; font-weight: bold">BY</span> fieldA, fieldB
+<span style="color: #008000; font-weight: bold">HAVING</span> ((<span style="color: #008000; font-weight: bold">sum</span>(fieldC) <span style="color: #666666">&gt;</span> <span style="color: #666666">1000</span>) <span style="color: #008000; font-weight: bold">AND</span> (<span style="color: #008000; font-weight: bold">avg</span>(fieldY) <span style="color: #666666">&lt;=</span> <span style="color: #666666">10</span>))
+<span style="color: #008000; font-weight: bold">ORDER</span> <span style="color: #008000; font-weight: bold">BY</span> <span style="color: #008000; font-weight: bold">sum</span>(fieldC) <span style="color: #008000; font-weight: bold">asc</span>
+<span style="color: #008000; font-weight: bold">LIMIT</span> <span style="color: #666666">100</span></code></pre>
 </div>
 </div>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="ParallelSQLInterface-BestPractices">Best Practices</h2>
+<h2 id="best-practices">Best Practices</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="ParallelSQLInterface-SeparateCollections">Separate Collections</h3>
+<h3 id="separate-collections">Separate Collections</h3>
+<div class="paragraph">
+<p>It makes sense to create a separate SolrCloud collection just for the <code>/sql</code> handler. This collection can be created using SolrCloud&#8217;s standard collection API.</p>
+</div>
 <div class="paragraph">
-<p>It makes sense to create a separate SolrCloud collection just for the <code>/sql</code> handler. This collection can be created using SolrCloud&#8217;s standard collection API. Since this collection only exists to handle <code>/sql</code> requests and provide a pool of worker nodes, this collection does not need to hold any data. Worker nodes are selected randomly from the entire pool of available nodes in the <code>/sql</code> handler&#8217;s collection. So to grow this collection dynamically replicas can be added to existing shards. New replicas will automatically be put to work after they&#8217;ve been added.</p>
+<p>Since this collection only exists to handle <code>/sql</code> requests and provide a pool of worker nodes, this collection does not need to hold any data. Worker nodes are selected randomly from the entire pool of available nodes in the <code>/sql</code> handler&#8217;s collection. So to grow this collection dynamically replicas can be added to existing shards. New replicas will automatically be put to work after they&#8217;ve been added.</p>
 </div>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="ParallelSQLInterface-ParallelSQLQueries">Parallel SQL Queries</h2>
+<h2 id="parallel-sql-queries">Parallel SQL Queries</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>An earlier section describes how the SQL interface translates the SQL statement to a streaming expression. One of the parameters of the request is the <code>aggregationMode</code>, which defines if the query should use a MapReduce-like shuffling technique or push the operation down into the search engine.</p>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-ParallelizedQueries">Parallelized Queries</h3>
+<h3 id="parallelized-queries">Parallelized Queries</h3>
 <div class="paragraph">
 <p>The Parallel SQL architecture consists of three logical tiers: a <strong>SQL</strong> tier, a <strong>Worker</strong> tier, and a <strong>Data Table</strong> tier. By default the SQL and Worker tiers are collapsed into the same physical SolrCloud collection.</p>
 </div>
 <div class="sect3">
-<h4 id="ParallelSQLInterface-SQLTier">SQL Tier</h4>
+<h4 id="sql-tier">SQL Tier</h4>
 <div class="paragraph">
 <p>The SQL tier is where the <code>/sql</code> handler resides. The <code>/sql</code> handler takes the SQL query and translates it to a parallel query plan. It then selects worker nodes to execute the plan and sends the query plan to each worker node to be run in parallel.</p>
 </div>
@@ -1857,13 +1840,13 @@ LIMIT <span style="color: #666666">100</
 </div>
 </div>
 <div class="sect3">
-<h4 id="ParallelSQLInterface-WorkerTier">Worker Tier</h4>
+<h4 id="worker-tier">Worker Tier</h4>
 <div class="paragraph">
 <p>The workers in the worker tier receive the query plan from the <code>/sql</code> handler and execute the parallel query plan. The parallel execution plan includes the queries that need to be made on the Data Table tier and the relational algebra needed to satisfy the query. Each worker node assigned to the query is shuffled 1/N of the tuples from the Data Tables. The worker nodes execute the query plan and stream tuples back to the worker nodes.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="ParallelSQLInterface-DataTableTier">Data Table Tier</h4>
+<h4 id="data-table-tier">Data Table Tier</h4>
 <div class="paragraph">
 <p>The Data Table tier is where the tables reside. Each table is its own SolrCloud collection. The Data Table layer receives queries from the worker nodes and emits tuples (search results). The Data Table tier also handles the initial sorting and partitioning of tuples sent to the workers. This means the tuples are always sorted and partitioned before they hit the network. The partitioned tuples are sent directly to the correct worker nodes in the proper sort order, ready to be reduced.</p>
 </div>
@@ -1871,6 +1854,7 @@ LIMIT <span style="color: #666666">100</
 <div class="content">
 <img src="images/parallel-sql-interface/cluster.png" alt="image" width="492" height="250">
 </div>
+<div class="title">Figure 1. How Parallel SQL Queries are Distributed</div>
 </div>
 <div class="paragraph">
 <p>The image above shows the three tiers broken out into different SolrCloud collections for clarity. In practice the <code>/sql</code> handler and worker collection by default share the same collection.</p>
@@ -1917,13 +1901,13 @@ LIMIT <span style="color: #666666">100</
 </div>
 </div>
 <div class="sect1">
-<h2 id="ParallelSQLInterface-SQLClientsandDatabaseVisualizationTools">SQL Clients and Database Visualization Tools</h2>
+<h2 id="sql-clients-and-database-visualization-tools">SQL Clients and Database Visualization Tools</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The SQL interface supports queries sent from SQL clients and database visualization tools such as DbVisualizer and Apache Zeppelin.</p>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-Generic">Generic</h3>
+<h3 id="generic-clients">Generic Clients</h3>
 <div class="paragraph">
 <p>For most Java based clients, the following jars will need to be placed on the client classpath:</p>
 </div>
@@ -1945,39 +1929,39 @@ LIMIT <span style="color: #666666">100</
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="java"><span style="color: #A0A000">jdbc:</span>solr<span style="color: #666666">:</span><span style="color: #408080; font-style: italic">//SOLR_ZK_CONNECTION_STRING?collection=COLLECTION_NAME</span></code></pre>
+<pre class="pygments highlight"><code data-lang="plain">jdbc:solr://SOLR_ZK_CONNECTION_STRING?collection=COLLECTION_NAME</code></pre>
 </div>
 </div>
 <div class="paragraph">
-<p>There are other parameters that can be optionally added to the connection string like <code>aggregationMode</code> and <code>numWorkers</code>. An example of a Java connection is available in the section <a href="#ParallelSQLInterface-JDBCDriver">JDBC Driver</a>.</p>
+<p>There are other parameters that can be optionally added to the connection string like <code>aggregationMode</code> and <code>numWorkers</code>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-DbVisualizer">DbVisualizer</h3>
+<h3 id="dbvisualizer">DbVisualizer</h3>
 <div class="paragraph">
 <p>A step-by-step guide for setting up <a href="https://www.dbvis.com/">DbVisualizer</a> is in the section <a href="solr-jdbc-dbvisualizer.html#solr-jdbc-dbvisualizer">Solr JDBC - DbVisualizer</a>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-SQuirreLSQL">SQuirreL SQL</h3>
+<h3 id="squirrel-sql">SQuirreL SQL</h3>
 <div class="paragraph">
 <p>A step-by-step guide for setting up <a href="http://squirrel-sql.sourceforge.net">SQuirreL SQL</a> is in the section <a href="solr-jdbc-squirrel-sql.html#solr-jdbc-squirrel-sql">Solr JDBC - SQuirreL SQL</a>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-ApacheZeppelin_incubating_">Apache Zeppelin (incubating)</h3>
+<h3 id="apache-zeppelin-incubating">Apache Zeppelin (incubating)</h3>
 <div class="paragraph">
 <p>A step-by-step guide for setting up <a href="http://zeppelin.apache.org/">Apache Zeppelin</a> is in the section <a href="solr-jdbc-apache-zeppelin.html#solr-jdbc-apache-zeppelin">Solr JDBC - Apache Zeppelin</a>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-Python_Jython">Python/Jython</h3>
+<h3 id="python-jython">Python/Jython</h3>
 <div class="paragraph">
 <p>Examples of using Python and Jython for connecting to Solr with the Solr JDBC driver are available in the section <a href="solr-jdbc-python-jython.html#solr-jdbc-python-jython">Solr JDBC - Python/Jython</a>.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="ParallelSQLInterface-R">R</h3>
+<h3 id="r">R</h3>
 <div class="paragraph">
 <p>Examples of using R for connecting to Solr with the Solr JDBC driver are available in the section <a href="solr-jdbc-r.html#solr-jdbc-r">Solr JDBC - R</a> .</p>
 </div>
@@ -2020,7 +2004,7 @@ LIMIT <span style="color: #666666">100</
             <div class="row">
                 <div class="col-lg-12 footer">
                &copy;2017 Apache Software Foundation. All rights reserved. <br />
- Site last generated: 2017-05-03 <br />
+ Site last generated: 2017-05-09 <br />
 <p><img src="solr-sunOnly-small.png" alt="Apache Solr"/></p>
                 </div>
             </div>

Modified: websites/production/lucene/content/solr/guide/test-10290/parameter-reference.html
==============================================================================
--- websites/production/lucene/content/solr/guide/test-10290/parameter-reference.html (original)
+++ websites/production/lucene/content/solr/guide/test-10290/parameter-reference.html Tue May  9 19:22:29 2017
@@ -1277,13 +1277,14 @@ $('#toc').on('click', 'a', function() {
     
 
 <div id="main-content">
-  <div class="sect2">
-<h3 id="ParameterReference-ClusterParameters">Cluster Parameters</h3>
+  <div class="sect1">
+<h2 id="cluster-parameters">Cluster Parameters</h2>
+<div class="sectionbody">
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
-<col style="width: 34%;">
-<col style="width: 33%;">
-<col style="width: 33%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 60%;">
 </colgroup>
 <tbody>
 <tr>
@@ -1294,16 +1295,18 @@ $('#toc').on('click', 'a', function() {
 </tbody>
 </table>
 </div>
-<div class="sect2">
-<h3 id="ParameterReference-SolrCloudInstanceParameters">SolrCloud Instance Parameters</h3>
+</div>
+<div class="sect1">
+<h2 id="solrcloud-instance-parameters">SolrCloud Instance Parameters</h2>
+<div class="sectionbody">
 <div class="paragraph">
 <p>These are set in <code>solr.xml</code>, but by default the <code>host</code> and <code>hostContext</code> parameters are set up to also work with system properties.</p>
 </div>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
-<col style="width: 34%;">
-<col style="width: 33%;">
-<col style="width: 33%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 60%;">
 </colgroup>
 <tbody>
 <tr>
@@ -1324,13 +1327,15 @@ $('#toc').on('click', 'a', function() {
 </tbody>
 </table>
 </div>
-<div class="sect2">
-<h3 id="ParameterReference-SolrCloudInstanceZooKeeperParameters">SolrCloud Instance ZooKeeper Parameters</h3>
+</div>
+<div class="sect1">
+<h2 id="solrcloud-instance-zookeeper-parameters">SolrCloud Instance ZooKeeper Parameters</h2>
+<div class="sectionbody">
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
-<col style="width: 34%;">
-<col style="width: 33%;">
-<col style="width: 33%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 60%;">
 </colgroup>
 <tbody>
 <tr>
@@ -1354,13 +1359,15 @@ $('#toc').on('click', 'a', function() {
 <p><code>zkRun</code> and <code>zkHost</code> are set up using system properties. <code>zkClientTimeout</code> is set up in <code>solr.xml</code> by default, but can also be set using a system property.</p>
 </div>
 </div>
-<div class="sect2">
-<h3 id="ParameterReference-SolrCloudCoreParameters">SolrCloud Core Parameters</h3>
+</div>
+<div class="sect1">
+<h2 id="solrcloud-core-parameters">SolrCloud Core Parameters</h2>
+<div class="sectionbody">
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
-<col style="width: 34%;">
-<col style="width: 33%;">
-<col style="width: 33%;">
+<col style="width: 20%;">
+<col style="width: 20%;">
+<col style="width: 60%;">
 </colgroup>
 <tbody>
 <tr>
@@ -1378,6 +1385,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 </div>
+</div>
 
 <!-- Adds tags, if any -->
     <div class="tags">
@@ -1413,7 +1421,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                &copy;2017 Apache Software Foundation. All rights reserved. <br />
- Site last generated: 2017-05-03 <br />
+ Site last generated: 2017-05-09 <br />
 <p><img src="solr-sunOnly-small.png" alt="Apache Solr"/></p>
                 </div>
             </div>

Modified: websites/production/lucene/content/solr/guide/test-10290/performance-statistics-reference.html
==============================================================================
--- websites/production/lucene/content/solr/guide/test-10290/performance-statistics-reference.html (original)
+++ websites/production/lucene/content/solr/guide/test-10290/performance-statistics-reference.html Tue May  9 19:22:29 2017
@@ -1280,7 +1280,10 @@ $('#toc').on('click', 'a', function() {
   <div id="preamble">
 <div class="sectionbody">
 <div class="paragraph">
-<p>This page explains some of the <a href="using-jmx-with-solr.html#using-jmx-with-solr">JMX</a> statistics that Solr exposes. The same statistics are also exposed via the<a href="mbean-request-handler.html#mbean-request-handler">MBean Request Handler</a> when statistics are requested.</p>
+<p>This page explains some of the <a href="using-jmx-with-solr.html#using-jmx-with-solr">JMX</a> statistics that Solr exposes.</p>
+</div>
+<div class="paragraph">
+<p>The same statistics are also exposed via the<a href="mbean-request-handler.html#mbean-request-handler">MBean Request Handler</a> when statistics are requested.</p>
 </div>
 <div class="paragraph">
 <p>These statistics are per core. When you are running in SolrCloud mode these statistics would co-relate to each performance of an individual replica.</p>
@@ -1288,10 +1291,10 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect1">
-<h2 id="PerformanceStatisticsReference-RequestHandlers">Request Handlers</h2>
+<h2 id="request-handlers">Request Handlers</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="PerformanceStatisticsReference-UpdateRequestHandler">Update Request Handler</h3>
+<h3 id="update-request-handler">Update Request Handler</h3>
 <div class="paragraph">
 <p>The update request handler is an endpoint to send data to Solr. We can see how many update requests are being fired, how fast is it performing, and other valuable information regarding requests.</p>
 </div>
@@ -1300,7 +1303,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect2">
-<h3 id="PerformanceStatisticsReference-SearchRequestHandler">Search Request Handler</h3>
+<h3 id="search-request-handler">Search Request Handler</h3>
 <div class="paragraph">
 <p>Can be useful to measure and track number of search queries , response times etc. If you are not using the “select” handler then the path needs to be changed appropriately. Similarly if you are using the “sql” handler or “export” handler , the realtime handler “get”, or any other handler similar statistics can be found for that as well.</p>
 </div>
@@ -1312,8 +1315,8 @@ $('#toc').on('click', 'a', function() {
 </div>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
-<col style="width: 50%;">
-<col style="width: 50%;">
+<col style="width: 30%;">
+<col style="width: 70%;">
 </colgroup>
 <thead>
 <tr>
@@ -1392,7 +1395,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect1">
-<h2 id="PerformanceStatisticsReference-UpdateHandler">Update Handler</h2>
+<h2 id="update-handler">Update Handler</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p><strong>Update Handler:</strong> This section has information on the total number of adds, how many commits have been fired against a solr core.</p>
@@ -1402,8 +1405,8 @@ $('#toc').on('click', 'a', function() {
 </div>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
-<col style="width: 50%;">
-<col style="width: 50%;">
+<col style="width: 30%;">
+<col style="width: 70%;">
 </colgroup>
 <thead>
 <tr>
@@ -1489,10 +1492,10 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect1">
-<h2 id="PerformanceStatisticsReference-Caches">Caches</h2>
+<h2 id="caches">Caches</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="PerformanceStatisticsReference-DocumentCache">Document Cache</h3>
+<h3 id="document-cache">Document Cache</h3>
 <div class="paragraph">
 <p>This cache holds Lucene Document objects (the stored fields for each document). Since Lucene internal document IDs are transient, this cache cannot be auto-warmed.</p>
 </div>
@@ -1501,7 +1504,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect2">
-<h3 id="PerformanceStatisticsReference-QueryResultCache">Query Result Cache</h3>
+<h3 id="query-result-cache">Query Result Cache</h3>
 <div class="paragraph">
 <p>This cache holds the results of previous searches: ordered lists of document IDs based on a query, a sort, and the range of documents requested</p>
 </div>
@@ -1510,7 +1513,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect2">
-<h3 id="PerformanceStatisticsReference-FilterCache">Filter Cache</h3>
+<h3 id="filter-cache">Filter Cache</h3>
 <div class="paragraph">
 <p>This cache is used for filters for unordered sets of all documents that match a query.</p>
 </div>
@@ -1519,8 +1522,8 @@ $('#toc').on('click', 'a', function() {
 </div>
 <table class="tableblock frame-all grid-all spread">
 <colgroup>
-<col style="width: 50%;">
-<col style="width: 50%;">
+<col style="width: 30%;">
+<col style="width: 70%;">
 </colgroup>
 <thead>
 <tr>
@@ -1621,7 +1624,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                &copy;2017 Apache Software Foundation. All rights reserved. <br />
- Site last generated: 2017-05-03 <br />
+ Site last generated: 2017-05-09 <br />
 <p><img src="solr-sunOnly-small.png" alt="Apache Solr"/></p>
                 </div>
             </div>

Modified: websites/production/lucene/content/solr/guide/test-10290/phonetic-matching.html
==============================================================================
--- websites/production/lucene/content/solr/guide/test-10290/phonetic-matching.html (original)
+++ websites/production/lucene/content/solr/guide/test-10290/phonetic-matching.html Tue May  9 19:22:29 2017
@@ -1360,7 +1360,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect1">
-<h2 id="PhoneticMatching-Daitch-MokotoffSoundex">Daitch-Mokotoff Soundex</h2>
+<h2 id="daitch-mokotoff-soundex">Daitch-Mokotoff Soundex</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>To use this encoding in your analyzer, see <a href="filter-descriptions.html#FilterDescriptions-Daitch-MokotoffSoundexFilter">Daitch-Mokotoff Soundex Filter</a> in the Filter Descriptions section.</p>
@@ -1396,7 +1396,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect1">
-<h2 id="PhoneticMatching-DoubleMetaphone">Double Metaphone</h2>
+<h2 id="double-metaphone">Double Metaphone</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>To use this encoding in your analyzer, see <a href="filter-descriptions.html#FilterDescriptions-DoubleMetaphoneFilter">Double Metaphone Filter</a> in the Filter Descriptions section. Alternatively, you may specify <code>encoding="DoubleMetaphone"</code> with the <a href="filter-descriptions.html#FilterDescriptions-PhoneticFilter">Phonetic Filter</a>, but note that the Phonetic Filter version will <strong>not</strong> provide the second ("alternate") encoding that is generated by the Double Metaphone Filter for some tokens.</p>
@@ -1407,7 +1407,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect1">
-<h2 id="PhoneticMatching-Metaphone">Metaphone</h2>
+<h2 id="metaphone">Metaphone</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>To use this encoding in your analyzer, specify <code>encoding="Metaphone"</code> with the <a href="filter-descriptions.html#FilterDescriptions-PhoneticFilter">Phonetic Filter</a>.</p>
@@ -1416,12 +1416,12 @@ $('#toc').on('click', 'a', function() {
 <p>Encodes tokens using the Metaphone algorithm by Lawrence Philips, described in "Hanging on the Metaphone" in Computer Language, Dec. 1990.</p>
 </div>
 <div class="paragraph">
-<p>See <a href="http://en.wikipedia.org/wiki/Metaphone" class="bare">http://en.wikipedia.org/wiki/Metaphone</a></p>
+<p>Another reference for more information is <a href="http://www.drdobbs.com/the-double-metaphone-search-algorithm/184401251?pgno=2">Double Metaphone Search Algorithm</a>, by Lawrence Philips.</p>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="PhoneticMatching-Soundex">Soundex</h2>
+<h2 id="soundex">Soundex</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>To use this encoding in your analyzer, specify <code>encoding="Soundex"</code> with the <a href="filter-descriptions.html#FilterDescriptions-PhoneticFilter">Phonetic Filter</a>.</p>
@@ -1430,12 +1430,12 @@ $('#toc').on('click', 'a', function() {
 <p>Encodes tokens using the Soundex algorithm, which is used to relate similar names, but can also be used as a general purpose scheme to find words with similar phonemes.</p>
 </div>
 <div class="paragraph">
-<p><a href="http://www.drdobbs.com/the-double-metaphone-search-algorithm/184401251?pgno=2">See</a> <a href="http://en.wikipedia.org/wiki/Soundex" class="bare">http://en.wikipedia.org/wiki/Soundex</a></p>
+<p>See also <a href="http://en.wikipedia.org/wiki/Soundex" class="bare">http://en.wikipedia.org/wiki/Soundex</a>.</p>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="PhoneticMatching-RefinedSoundex">Refined Soundex</h2>
+<h2 id="refined-soundex">Refined Soundex</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>To use this encoding in your analyzer, specify <code>encoding="RefinedSoundex"</code> with the <a href="filter-descriptions.html#FilterDescriptions-PhoneticFilter">Phonetic Filter</a>.</p>
@@ -1444,12 +1444,12 @@ $('#toc').on('click', 'a', function() {
 <p>Encodes tokens using an improved version of the Soundex algorithm.</p>
 </div>
 <div class="paragraph">
-<p>See <a href="http://en.wikipedia.org/wiki/Soundex" class="bare">http://en.wikipedia.org/wiki/Soundex</a></p>
+<p>See <a href="http://en.wikipedia.org/wiki/Soundex" class="bare">http://en.wikipedia.org/wiki/Soundex</a>.</p>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="PhoneticMatching-Caverphone">Caverphone</h2>
+<h2 id="caverphone">Caverphone</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>To use this encoding in your analyzer, specify <code>encoding="Caverphone"</code> with the <a href="filter-descriptions.html#FilterDescriptions-PhoneticFilter">Phonetic Filter</a>.</p>
@@ -1463,7 +1463,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect1">
-<h2 id="PhoneticMatching-K_lnerPhonetika.k.a.ColognePhonetic">Kölner Phonetik a.k.a. Cologne Phonetic</h2>
+<h2 id="kölner-phonetik-a-k-a-cologne-phonetic">Kölner Phonetik a.k.a. Cologne Phonetic</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>To use this encoding in your analyzer, specify <code>encoding="ColognePhonetic"</code> with the <a href="filter-descriptions.html#FilterDescriptions-PhoneticFilter">Phonetic Filter</a>.</p>
@@ -1477,7 +1477,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect1">
-<h2 id="PhoneticMatching-NYSIIS">NYSIIS</h2>
+<h2 id="nysiis">NYSIIS</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>To use this encoding in your analyzer, specify <code>encoding="Nysiis"</code> with the <a href="filter-descriptions.html#FilterDescriptions-PhoneticFilter">Phonetic Filter</a>.</p>
@@ -1526,7 +1526,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                &copy;2017 Apache Software Foundation. All rights reserved. <br />
- Site last generated: 2017-05-03 <br />
+ Site last generated: 2017-05-09 <br />
 <p><img src="solr-sunOnly-small.png" alt="Apache Solr"/></p>
                 </div>
             </div>

Modified: websites/production/lucene/content/solr/guide/test-10290/ping.html
==============================================================================
--- websites/production/lucene/content/solr/guide/test-10290/ping.html (original)
+++ websites/production/lucene/content/solr/guide/test-10290/ping.html Tue May  9 19:22:29 2017
@@ -1286,6 +1286,7 @@ $('#toc').on('click', 'a', function() {
 <div class="content">
 <img src="images/ping/ping.png" alt="image" width="171" height="195">
 </div>
+<div class="title">Figure 1. Ping Option in Core Dropdown</div>
 </div>
 <div class="paragraph">
 <p>The search executed by a Ping is configured with the <a href="request-parameters-api.html#request-parameters-api">Request Parameters API</a>. See <a href="implicit-requesthandlers.html#implicit-requesthandlers">Implicit RequestHandlers</a> for the paramset to use for the <code>/admin/ping</code> endpoint.</p>
@@ -1296,7 +1297,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect1">
-<h2 id="Ping-APIExamples">API Examples</h2>
+<h2 id="api-examples">API Examples</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>While the UI screen makes it easy to see the ping response time, the underlying ping command can be more useful when executed by remote monitoring tools:</p>
@@ -1306,7 +1307,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="xml">http://localhost:8983/solr/<span style="color: #008000; font-weight: bold">&lt;core-name&gt;</span>/admin/ping</code></pre>
+<pre class="pygments highlight"><code data-lang="text">http://localhost:8983/solr/&lt;core-name&gt;/admin/ping</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1317,7 +1318,7 @@ $('#toc').on('click', 'a', function() {
 </div>
 <div class="listingblock">
 <div class="content">
-<pre class="pygments highlight"><code data-lang="xml">  http://localhost:8983/solr/<span style="color: #008000; font-weight: bold">&lt;collection-name&gt;</span>admin/ping?wt=json<span style="border: 1px solid #FF0000">&amp;</span>distrib=true<span style="border: 1px solid #FF0000">&amp;</span>indent=true</code></pre>
+<pre class="pygments highlight"><code data-lang="text">  http://localhost:8983/solr/&lt;collection-name&gt;admin/ping?wt=json&amp;distrib=true&amp;indent=true</code></pre>
 </div>
 </div>
 <div class="paragraph">
@@ -1396,7 +1397,7 @@ rsp <span style="color: #666666">=</span
             <div class="row">
                 <div class="col-lg-12 footer">
                &copy;2017 Apache Software Foundation. All rights reserved. <br />
- Site last generated: 2017-05-03 <br />
+ Site last generated: 2017-05-09 <br />
 <p><img src="solr-sunOnly-small.png" alt="Apache Solr"/></p>
                 </div>
             </div>

Modified: websites/production/lucene/content/solr/guide/test-10290/plugins-stats-screen.html
==============================================================================
--- websites/production/lucene/content/solr/guide/test-10290/plugins-stats-screen.html (original)
+++ websites/production/lucene/content/solr/guide/test-10290/plugins-stats-screen.html Tue May  9 19:22:29 2017
@@ -1287,9 +1287,7 @@ $('#toc').on('click', 'a', function() {
 <div class="content">
 <img src="images/plugins-stats-screen/plugin-searcher.png" alt="image" width="462" height="250">
 </div>
-</div>
-<div class="paragraph">
-<p><em>Searcher Statistics</em></p>
+<div class="title">Figure 1. Searcher Statistics</div>
 </div>
 <div class="paragraph">
 <p>The display is a snapshot taken when the page is loaded. You can get updated status by choosing to either <strong>Watch Changes</strong> or <strong>Refresh Values</strong>. Watching the changes will highlight those areas that have changed, while refreshing the values will reload the page with updated information.</p>
@@ -1330,7 +1328,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                &copy;2017 Apache Software Foundation. All rights reserved. <br />
- Site last generated: 2017-05-03 <br />
+ Site last generated: 2017-05-09 <br />
 <p><img src="solr-sunOnly-small.png" alt="Apache Solr"/></p>
                 </div>
             </div>

Modified: websites/production/lucene/content/solr/guide/test-10290/post-tool.html
==============================================================================
--- websites/production/lucene/content/solr/guide/test-10290/post-tool.html (original)
+++ websites/production/lucene/content/solr/guide/test-10290/post-tool.html Tue May  9 19:22:29 2017
@@ -1280,7 +1280,10 @@ $('#toc').on('click', 'a', function() {
   <div id="preamble">
 <div class="sectionbody">
 <div class="paragraph">
-<p>Solr includes a simple command line tool for POSTing various types of content to a Solr server. The tool is <code>bin/post</code>. The bin/post tool is a Unix shell script; for Windows (non-Cygwin) usage, see the <a href="#PostTool-WindowsSupport">Windows section</a> below.</p>
+<p>Solr includes a simple command line tool for POSTing various types of content to a Solr server.</p>
+</div>
+<div class="paragraph">
+<p>The tool is <code>bin/post</code>. The bin/post tool is a Unix shell script; for Windows (non-Cygwin) usage, see the <a href="#PostTool-WindowsSupport">Windows section</a> below.</p>
 </div>
 <div class="paragraph">
 <p>To run it, open a window and enter:</p>
@@ -1291,12 +1294,12 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="paragraph">
-<p>This will contact the server at <code>localhost:8983. S`pecifying the `collection/core name</code> is <strong>mandatory</strong>. The '-help' (or simply '-h') option will output information on its usage (i.e., <code>bin/post -help)</code>.</p>
+<p>This will contact the server at <code>localhost:8983</code>. Specifying the <code>collection/core name</code> is <strong>mandatory</strong>. The <code>-help</code> (or simply <code>-h</code>) option will output information on its usage (i.e., <code>bin/post -help)</code>.</p>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="PostTool-Usingthebin_postTool">Using the bin/post Tool</h2>
+<h2 id="using-the-bin-post-tool">Using the bin/post Tool</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Specifying either the <code>collection/core name</code> or the full update <code>url</code> is <strong>mandatory</strong> when using <code>bin/post</code>.</p>
@@ -1343,13 +1346,13 @@ OPTIONS
 </div>
 </div>
 <div class="sect1">
-<h2 id="PostTool-Examples">Examples</h2>
+<h2 id="a-id-bin_post_examples-a-examples"><a id="bin_post_examples"></a>Examples</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>There are several ways to use <code>bin/post</code>. This section presents several examples.</p>
 </div>
 <div class="sect2">
-<h3 id="PostTool-IndexingXML">Indexing XML</h3>
+<h3 id="indexing-xml">Indexing XML</h3>
 <div class="paragraph">
 <p>Add all documents with file extension <code>.xml</code> to collection or core named <code>gettingstarted</code>.</p>
 </div>
@@ -1376,7 +1379,7 @@ OPTIONS
 </div>
 </div>
 <div class="sect2">
-<h3 id="PostTool-IndexingCSV">Indexing CSV</h3>
+<h3 id="indexing-csv">Indexing CSV</h3>
 <div class="paragraph">
 <p>Index all CSV files into <code>gettingstarted</code>:</p>
 </div>
@@ -1398,7 +1401,7 @@ OPTIONS
 </div>
 </div>
 <div class="sect2">
-<h3 id="PostTool-IndexingJSON">Indexing JSON</h3>
+<h3 id="indexing-json">Indexing JSON</h3>
 <div class="paragraph">
 <p>Index all JSON files into <code>gettingstarted</code>.</p>
 </div>
@@ -1409,7 +1412,7 @@ OPTIONS
 </div>
 </div>
 <div class="sect2">
-<h3 id="PostTool-IndexingRichDocuments_PDF_Word_HTML_etc_">Indexing Rich Documents (PDF, Word, HTML, etc)</h3>
+<h3 id="indexing-rich-documents-pdf-word-html-etc">Indexing Rich Documents (PDF, Word, HTML, etc)</h3>
 <div class="paragraph">
 <p>Index a PDF file into <code>gettingstarted</code>.</p>
 </div>
@@ -1436,7 +1439,7 @@ OPTIONS
 </div>
 </div>
 <div class="sect2">
-<h3 id="PostTool-IndexingtoapasswordprotectedSolr_basicauth_">Indexing to a password protected Solr (basic auth)</h3>
+<h3 id="indexing-to-a-password-protected-solr-basic-auth">Indexing to a Password Protected Solr (Basic Auth)</h3>
 <div class="paragraph">
 <p>Index a pdf as the user solr with password <code>SolrRocks</code>:</p>
 </div>
@@ -1452,15 +1455,18 @@ OPTIONS
 <h2 id="PostTool-WindowsSupport">Windows Support</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p><code>bin/post</code> exists currently only as a Unix shell script, however it delegates its work to a cross-platform capable Java program. The <a href="#PostTool-SimplePostTool"><code>SimplePostTool</code></a> can be run directly in supported environments, including Windows.</p>
+<p><code>bin/post</code> exists currently only as a Unix shell script, however it delegates its work to a cross-platform capable Java program. The <a href="#simpleposttool">SimplePostTool</a> can be run directly in supported environments, including Windows.</p>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="PostTool-SimplePostTool">SimplePostTool</h2>
+<h2 id="simpleposttool">SimplePostTool</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>The <code>bin/post</code> script currently delegates to a standalone Java program called <code>SimplePostTool</code>. This tool, bundled into a executable JAR, can be run directly using <code>java -jar example/exampledocs/post.jar</code>. See the help output and take it from there to post files, recurse a website or file system folder, or send direct commands to a Solr server.</p>
+<p>The <code>bin/post</code> script currently delegates to a standalone Java program called <code>SimplePostTool</code>.</p>
+</div>
+<div class="paragraph">
+<p>This tool, bundled into a executable JAR, can be run directly using <code>java -jar example/exampledocs/post.jar</code>. See the help output and take it from there to post files, recurse a website or file system folder, or send direct commands to a Solr server.</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1510,7 +1516,7 @@ Usage: java [SystemProperties] -jar post
             <div class="row">
                 <div class="col-lg-12 footer">
                &copy;2017 Apache Software Foundation. All rights reserved. <br />
- Site last generated: 2017-05-03 <br />
+ Site last generated: 2017-05-09 <br />
 <p><img src="solr-sunOnly-small.png" alt="Apache Solr"/></p>
                 </div>
             </div>

Modified: websites/production/lucene/content/solr/guide/test-10290/putting-the-pieces-together.html
==============================================================================
--- websites/production/lucene/content/solr/guide/test-10290/putting-the-pieces-together.html (original)
+++ websites/production/lucene/content/solr/guide/test-10290/putting-the-pieces-together.html Tue May  9 19:22:29 2017
@@ -1280,7 +1280,10 @@ $('#toc').on('click', 'a', function() {
   <div id="preamble">
 <div class="sectionbody">
 <div class="paragraph">
-<p>At the highest level, <code>schema.xml</code> is structured as follows. This example is not real XML, but it gives you an idea of the structure of the file.</p>
+<p>At the highest level, <code>schema.xml</code> is structured as follows.</p>
+</div>
+<div class="paragraph">
+<p>This example is not real XML, but it gives you an idea of the structure of the file.</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1293,7 +1296,16 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="paragraph">
-<p>Obviously, most of the excitement is in <code>types</code> and <code>fields</code>, where the field types and the actual field definitions live. These are supplemented by <code>copyFields</code>. The <code>uniqueKey</code> must always be defined. In older Solr versions you would find <code>defaultSearchField</code> and <code>solrQueryParser</code> tags as well, but although these still work they are deprecated and discouraged, see <a href="other-schema-elements.html#other-schema-elements">Other Schema Elements</a>.</p>
+<p>Obviously, most of the excitement is in <code>types</code> and <code>fields</code>, where the field types and the actual field definitions live.</p>
+</div>
+<div class="paragraph">
+<p>These are supplemented by <code>copyFields</code>.</p>
+</div>
+<div class="paragraph">
+<p>The <code>uniqueKey</code> must always be defined.</p>
+</div>
+<div class="paragraph">
+<p>In older Solr versions you would find <code>defaultSearchField</code> and <code>solrQueryParser</code> tags as well, but although these still work they are deprecated and discouraged, see <a href="other-schema-elements.html#other-schema-elements">Other Schema Elements</a>.</p>
 </div>
 <div class="admonitionblock note">
 <table>
@@ -1313,24 +1325,27 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 <div class="sect1">
-<h2 id="PuttingthePiecesTogether-ChoosingAppropriateNumericTypes">Choosing Appropriate Numeric Types</h2>
+<h2 id="choosing-appropriate-numeric-types">Choosing Appropriate Numeric Types</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>For general numeric needs, consider using one of the` IntPointField`, <code>LongPointField</code>, <code>FloatPointField</code>, or <code>DoublePointField</code> classes, depending on the specific values you expect. These "Dimensional Point" based numeric classes use specially encoded data structures to support efficient range queries regardless of the size of the ranges used. Enable <a href="docvalues.html#docvalues">DocValues</a> on these fields as needed for sorting and/or faceting.</p>
 </div>
 <div class="paragraph">
-<p>Some Solr features may not yet work with "Dimensional Points", in which case you may want to consider the equivilent <code>TrieIntField</code>, <code>TrieLongField</code>, <code>TrieFloatField</code>, and <code>TrieDoubleField</code> classes. Configure a <code>precisionStep="0"</code> if you wish to minimize index size, but if you expect users to make frequent range queries on numeric types, use the default <code>precisionStep</code> (by not specifying it) or specify it as <code>precisionStep="8"</code> (which is the default). This offers faster speed for range queries at the expense of increasing index size.</p>
+<p>Some Solr features may not yet work with "Dimensional Points", in which case you may want to consider the equivalent <code>TrieIntField</code>, <code>TrieLongField</code>, <code>TrieFloatField</code>, and <code>TrieDoubleField</code> classes. Configure a <code>precisionStep="0"</code> if you wish to minimize index size, but if you expect users to make frequent range queries on numeric types, use the default <code>precisionStep</code> (by not specifying it) or specify it as <code>precisionStep="8"</code> (which is the default). This offers faster speed for range queries at the expense of increasing index size.</p>
 </div>
 </div>
 </div>
 <div class="sect1">
-<h2 id="PuttingthePiecesTogether-WorkingWithText">Working With Text</h2>
+<h2 id="working-with-text">Working With Text</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Handling text properly will make your users happy by providing them with the best possible results for text searches.</p>
 </div>
 <div class="paragraph">
-<p>One technique is using a text field as a catch-all for keyword searching. Most users are not sophisticated about their searches and the most common search is likely to be a simple keyword search. You can use <code>copyField</code> to take a variety of fields and funnel them all into a single text field for keyword searches. In the schema.xml file for the &#8220;<code>techproducts</code>&#8221; example included with Solr, <code>copyField</code> declarations are used to dump the contents of <code>cat</code>, <code>name</code>, <code>manu</code>, <code>features</code>, and <code>includes</code> into a single field, <code>text</code>. In addition, it could be a good idea to copy <code>ID</code> into <code>text</code> in case users wanted to search for a particular product by passing its product number to a keyword search.</p>
+<p>One technique is using a text field as a catch-all for keyword searching. Most users are not sophisticated about their searches and the most common search is likely to be a simple keyword search. You can use <code>copyField</code> to take a variety of fields and funnel them all into a single text field for keyword searches.</p>
+</div>
+<div class="paragraph">
+<p>In the schema.xml file for the &#8220;<code>techproducts</code>&#8221; example included with Solr, <code>copyField</code> declarations are used to dump the contents of <code>cat</code>, <code>name</code>, <code>manu</code>, <code>features</code>, and <code>includes</code> into a single field, <code>text</code>. In addition, it could be a good idea to copy <code>ID</code> into <code>text</code> in case users wanted to search for a particular product by passing its product number to a keyword search.</p>
 </div>
 <div class="paragraph">
 <p>Another technique is using <code>copyField</code> to use the same field in different ways. Suppose you have a field that is a list of authors, like this:</p>
@@ -1358,18 +1373,6 @@ $('#toc').on('click', 'a', function() {
 </div>
 </div>
 </div>
-<div class="sect1">
-<h2 id="PuttingthePiecesTogether-RelatedTopics">Related Topics</h2>
-<div class="sectionbody">
-<div class="ulist">
-<ul>
-<li>
-<p><a href="http://wiki.apache.org/solr/SchemaXml">SchemaXML</a></p>
-</li>
-</ul>
-</div>
-</div>
-</div>
 </div>
 
 <!-- Adds tags, if any -->
@@ -1406,7 +1409,7 @@ $('#toc').on('click', 'a', function() {
             <div class="row">
                 <div class="col-lg-12 footer">
                &copy;2017 Apache Software Foundation. All rights reserved. <br />
- Site last generated: 2017-05-03 <br />
+ Site last generated: 2017-05-09 <br />
 <p><img src="solr-sunOnly-small.png" alt="Apache Solr"/></p>
                 </div>
             </div>