incubator-blur-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From amccu...@apache.org
Subject svn commit: r1648906 [4/8] - in /incubator/blur/site/trunk/content/blur/docs/0.2.4: ./ resources/ resources/css/ resources/img/ resources/js/
Date Thu, 01 Jan 2015 17:21:48 GMT
Added: incubator/blur/site/trunk/content/blur/docs/0.2.4/data-model.html
URL: http://svn.apache.org/viewvc/incubator/blur/site/trunk/content/blur/docs/0.2.4/data-model.html?rev=1648906&view=auto
==============================================================================
--- incubator/blur/site/trunk/content/blur/docs/0.2.4/data-model.html (added)
+++ incubator/blur/site/trunk/content/blur/docs/0.2.4/data-model.html Thu Jan  1 17:21:48 2015
@@ -0,0 +1,646 @@
+<!DOCTYPE html>
+<!--
+  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.
+-->
+<html>
+  <head>
+    <title>Data Model - Apache Blur (Incubator) Documentation</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <!-- Bootstrap -->
+    <link href="resources/css/bootstrap.min.css" rel="stylesheet" media="screen">
+    <link href="resources/css/bs-docs.css" rel="stylesheet" media="screen">
+  </head>
+  <body>
+    <div class="navbar navbar-inverse navbar-fixed-top">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="http://incubator.apache.org/blur">Apache Blur (Incubator)</a>
+        </div>
+        <div class="collapse navbar-collapse">
+          <ul class="nav navbar-nav">
+	        <li><a href="index.html">Main</a></li>
+            <li><a href="getting-started.html">Getting Started</a></li>
+            <li><a href="platform.html">Platform</a></li>
+            <li class="active"><a href="data-model.html">Data Model</a></li>
+            <li><a href="cluster-setup.html">Cluster Setup</a></li>
+            <li><a href="using-blur.html">Using Blur</a></li>
+            <li><a href="Blur.html">Blur API</a></li>
+            <li><a href="console.html">Console</a></li>
+          </ul>
+        </div>
+      </div>
+    </div>
+    <div class="container bs-docs-container">
+      <div class="row">
+        <div class="col-md-3">
+          <div class="bs-sidebar hidden-print affix" role="complementary">
+            <ul class="nav bs-sidenav">
+              <li>
+                <a href="#structure">Structure</a>
+                <ul class="nav">
+                  <li><a href="#columns">Columns</a></li>
+                  <li><a href="#records">Records</a></li>
+                  <li><a href="#rows">Rows</a></li>
+                </ul>
+              </li>
+              <li>
+				<a href="#querying">Querying</a>
+				<ul class="nav">
+				  <li><a href="#row_query">Row Query</a></li>
+				  <li><a href="#text_query">Text</a></li>
+                  <li><a href="#string_query">String</a></li>
+                  <li><a href="#numeric_query">Numeric</a></li>
+                  <li><a href="#date_query">Date</a></li>
+                  <li><a href="#spatial_query">Spatial</a></li>
+                </ul>
+			  </li>
+              <li>
+				<a href="#types">Types</a>
+				<ul class="nav">
+                  <li><a href="#text_type">Text</a></li>
+                  <li><a href="#string_type">String</a></li>
+                  <li><a href="#long_type">Long</a></li>
+                  <li><a href="#int_type">Integer</a></li>
+                  <li><a href="#float_type">Float</a></li>
+                  <li><a href="#double_type">Double</a></li>
+                  <li><a href="#date_type">Date</a></li>
+                  <li><a href="#stored_type">Stored</a></li>
+	  			  <li><a href="#spatial_type">Spatial</a>
+				    <ul class="nav">
+                      <li><a href="#spatial_pointvector">&nbsp;&nbsp;Point Vector</a></li>
+                      <li><a href="#spatial_termprefix">&nbsp;&nbsp;Term Prefix</a></li>
+                      <li><a href="#spatial_recursiveprefix">&nbsp;&nbsp;Recursive Prefix</a></li>
+                    </ul>
+                  </li>
+                </ul>
+			  </li>
+			  <li>
+				<a href="#custom_types">Custom Types</a>
+				<ul class="nav">
+                  <li><a href="#custom_types_creating">Creating</a></li>
+                  <li><a href="#custom_types_distributing">Distributing</a></li>
+                  <li><a href="#custom_types_using">Using</a>
+				    <ul class="nav">
+                      <li><a href="#custom_types_using_cluster">&nbsp;&nbsp;Cluster Wide</a></li>
+                      <li><a href="#custom_types_using_table">&nbsp;&nbsp;Single Table</a></li>
+                    </ul>
+                  </li>
+                </ul>
+              </li>
+            </ul>
+          </div>
+        </div>
+        <div class="col-md-9" role="main">
+          <section>
+            <div class="page-header">
+              <h1 id="structure">Data Structure</h1>
+            </div>
+            <p class="lead">
+              Blur is a table based query system. So within a single shard cluster there can be many different tables, each with a different schema, shard size, analyzers, etc. Each table contains Rows. A Row contains a row id (Lucene StringField internally) and many Records. A record has a record id (Lucene StringField internally), a family (Lucene StringField internally), and many Columns. A column contains a name and value, both are Strings in the API but the value can be interpreted as different types. All base Lucene Field types are supported, Text, String, Long, Int, Double, and Float.
+            </p>
+            <p>Starting with the most basic structure and building on it.</p>
+            <h3 id="columns">Columns</h3>
+            <p>
+              Columns contain a name and value, both are strings in the API but can be interpreted as an Integer, Float, Long, Double, String, or Text. All Column types default to Text and will be analyzed during the indexing process.
+            </p>
+            <pre><code class="json">Column {"name" => "value"}</code></pre>
+            <h3 id="records">Records</h3>
+            <p>
+              Record contains a Record Id, Family, and one or more Columns
+            </p>
+            <pre><code class="json">Record {
+  "recordId" => "1234",
+  "family" => "family1",
+  "columns" => [
+    Column {"column1" => "value1"},
+    Column {"column2" => "value2"},
+    Column {"column2" => "value3"},
+    Column {"column3" => "value4"}
+  ]
+}</code></pre>
+            <div class="bs-callout bs-callout-info"><h4>Quick Tip!</h4><p>The column names do not have to be unique within the Record. So you can treat multiple Columns with the same name as an array of values. Also the order of the values will be maintained.</p></div>
+            <h3 id="rows">Rows</h3>
+            <p>
+              Rows contain a row id and a list of Records.
+            </p>
+            <pre><code class="json">Row {
+  "id" => "r-5678",
+  "records" => [
+    Record {
+      "recordId" => "1234",
+      "family" => "family1",
+      "columns" => [
+        Column {"column1" => "value1"},
+        Column {"column2" => "value2"},
+        Column {"column2" => "value3"},
+        Column {"column3" => "value4"}
+      ]
+    },
+    Record {
+      "recordId" => "9012",
+      "family" => "family1",
+      "columns" => [
+        Column {"column1" => "value1"}
+      ]
+    },
+    Record {
+      "recordId" => "4321",
+      "family" => "family2",
+      "columns" => [
+        Column {"column16" => "value1"}
+      ]
+    }
+  ]
+}</code></pre>
+          </section>
+          <section>
+            <div class="page-header">
+              <h1 id="querying">Querying</h1>
+				<p>
+				All queries follow the basic Lucene query syntax see (<a href="http://lucene.apache.org/core/4_4_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html">http://lucene.apache.org/core/4_4_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html</a>)
+				for an extensive explanation on the syntax.
+				</p>
+				<p>
+				All queries can have boolean logic like:
+				<pre><code class="json">+docs.body:hadoop +docs.author:jon</code></pre>
+                        </p><p>
+				Which is the same as:
+				<pre><code class="json">docs.body:hadoop AND docs.author:jon</code></pre>
+				</p>
+              <h3 id="row_query">Row Queries</h3>
+
+<p>
+Row queries allow you to execute queries across Records within the same Row.  Row queries are a similar idea to an inner join.
+Let's say you want to find all the Rows that contain a Record with the family &quot;author&quot; and has a &quot;name&quot; Column that has that contains a term &quot;Jon&quot; and another Record with the family &quot;docs&quot; and has a &quot;body&quot; Column with a term of &quot;Hadoop&quot;.
+<pre><code class="json">+&lt;author.name:Jon&gt; +&lt;docs.body:Hadoop&gt;</code></pre>
+</p>
+
+<p>
+The meaning of the modifier on the outside of the &lt; indicates how you want Rows with matching Records
+handled. In the case above, we've asked for Blur to include all Rows that match the criteria.  However,
+we could also have negated Rows with matching Records as well. Suppose, we're interested in books that
+contain Hadoop but we happen to already own the one written by Jon, so we'd like to exclude them:
+<pre><code class="json">-&lt;author.name:Jon&gt; +&lt;docs.body:Hadoop&gt;</code></pre>
+</p>
+
+<p>
+So far, we've included only simple term queries inside the &lt; &gt; operators, but they support full
+query expressions too.  Suppose our previous query excluded to many good books because of our author criteria.
+Well, we happen to know that the book we have was written by Jon in Atlanta, so let's further limit that part
+of our criteria:
+<pre><code class="json">-&lt;+author.name:Jon +author.city:Atlanta&gt; +&lt;docs.body:Hadoop&gt;</code></pre>
+
+Seeing that positive (+) criteria inside the negated clause can be confusing, so let's "read" what we're asking
+for from the inside out.  First, the record criteria - find any Row that contains a Record with an author named
+Jon AND in the city of Atlanta.  Now, the negation (-) outside the &lt; says that we want to take all Rows
+that match that criteria and exclude them from our results.
+</p>
+              <h3 id="text_query">Text</h3>
+<p>Text fields are analyzed with Lucene's standard analyzers, which mean that the string is broken down into terms
+and the terms capitalization is removed as well as any special punctuation.  See Lucene's documentation for further explanation.
+</p>
+<h4>Examples:</h4>
+<p>
+To run a query to find all the rows that contain a column with a term of &quot;hadoop&quot; where the family is &quot;docs&quot; and the column is  &quot;body&quot;.
+<pre><code class="json">docs.body:hadoop</code></pre>
+</p>
+<p>
+To run a query to find all the rows that contain a column with a term of &quot;hadoop&quot; and &quot;awesome&quot; where the family is &quot;docs&quot; and the column is &quot;body&quot;.
+<pre><code class="json">docs.body:(+hadoop +awesome)</code></pre>
+</p>
+<p>
+To run a query to find all the rows that contain a column with a phrase of &quot;hadoop is awesome&quot; where the family is &quot;docs&quot; and the column is &quot;body&quot;.
+<pre><code class="json">docs.body:&quot;hadoop is awesome&quot;</code></pre>
+</p>
+<p>
+To run a query to find all the rows that contain a column with a word of &quot;hadoop&quot; and we want to deal with misspellings (or a Fuzzy query) where the family is &quot;docs&quot; and the column is &quot;body&quot;.
+<pre><code class="json">docs.body:hadoop~</code></pre>
+</p>
+<p>
+To run a query to find all the rows that contain a column with a word that matches a wildcard pattern of &quot;h*d?op&quot; where the family is &quot;docs&quot; and the column is &quot;body&quot;.
+<pre><code class="json">docs.body:h*d?op</code></pre>
+</p>
+
+              <h3 id="string_query">String</h3>
+<p>String fields are indexed Columns that are not analyzed they are indexed as is.  Do not use String fields for
+large amount of text, this will increase the size of your index and probably not give you the desired behavior.
+So given the string "Hadoop" and "hadoop", these will be indexed as two different term because the String field
+is case sensitive.  Also if the string contains "The cow jumps over the moon." the single term that will be placed
+into the index is "The cow jumps over the moon." as a single string.  This field type is normally used for id or
+type lookups.
+</p>
+<h4>Examples:</h4>
+<p>
+To run a query to find all the rows that contain a column with a term of &quot;Hadoop&quot; where the family is &quot;docs&quot; and the column is  &quot;type&quot;.
+<pre><code class="json">docs.type:Hadoop</code></pre>
+</p>
+              <h3 id="numeric_query">Numeric</h3>
+<p>The numerics types are:
+<ul>
+<li>int</li>
+<li>long</li>
+<li>float</li>
+<li>double</li>
+</ul>
+All numerics types can perform two types of queries:
+<ul>
+<li>Exact Match</li>
+<li>Range</li>
+</ul>
+</p>
+
+<h4>Examples:</h4>
+<p>
+To run a query to find all the rows that contain a column with a value of &quot;12345&quot; where the family is &quot;docs&quot; and the column is &quot;id&quot;.
+<pre><code class="json">docs.id:12345</code></pre>
+</p>
+<p>
+To run a query to find all the rows that contain a column with a starting value of &quot;12345&quot; and an ending values of &quot;54321&quot; where the family is &quot;docs&quot; and the column is &quot;id&quot;.
+<pre><code class="json">docs.id:[12345 TO 54321]</code></pre>
+</p>
+
+<p>
+To run a query to find all the rows that contain a column with a value less than &quot;12345&quot; where the family is &quot;docs&quot; and the column is &quot;id&quot;.
+<pre><code class="json">docs.id:[MIN TO 12345}</code></pre>
+</p>
+
+<p>
+To run a query to find all the rows that contain a column with a value less than or equal to &quot;12345&quot; where the family is &quot;docs&quot; and the column is &quot;id&quot;.
+<pre><code class="json">docs.id:[MIN TO 12345]</code></pre>
+</p>
+
+<p>
+To run a query to find all the rows that contain a column with a value great than to &quot;12345&quot; where the family is &quot;docs&quot; and the column is &quot;id&quot;.
+<pre><code class="json">docs.id:{12345 TO MAX]</code></pre>
+</p>
+
+<p>
+To run a query to find all the rows that contain a column with a value great than or equal to &quot;12345&quot; where the family is &quot;docs&quot; and the column is &quot;id&quot;.
+<pre><code class="json">docs.id:[12345 TO MAX]</code></pre>
+</p>
+
+<h3 id="date_query">Date</h3>
+<p>Date types are basically a long field type with a date parser built-in.
+
+The date type can perform two types of queries:
+<ul>
+<li>Exact Match</li>
+<li>Range</li>
+</ul>
+</p>
+
+<h4>Examples:</h4>
+<p>
+To run a query to find all the rows that contain a column with a value of &quot;2012-09-11&quot; where the family is &quot;docs&quot; and the column is &quot;published_date&quot;.
+<pre><code class="json">docs.published_date:2013-09-11</code></pre>
+</p>
+<p>
+To run a query to find all the rows that contain a column with a starting value of &quot;2012-09-11&quot; and an ending values of &quot;2013-09-11&quot; where the family is &quot;docs&quot; and the column is &quot;published_date&quot;.
+<pre><code class="json">docs.published_date:[2012-09-11 TO 2013-09-11]</code></pre>
+</p>
+
+              <h3 id="spatial_query">Spatial</h3>
+<p>
+Spatial queries are supported through the Lucene spatial module.  There are currently three
+different types of strategies:
+<ul>
+<li>Point Vector</li>
+<li>Term Query Prefix Tree</li>
+<li>Recursive Prefix Tree</li>
+</ul>
+Currently all of the built in spatial types are using a GEO spatial context, meaning the assumed
+coordinates are on the planet Earth.  Each of these strategies support different indexing features
+such as the shapes they can index, the shapes they can query with, and the operations they
+support during the query.  See the type section below to get a list of supported operations and
+shapes per strategy.
+</p>
+<h4>Examples:</h4>
+<p>
+To run a query to find all the rows that contain a location within 10 km (0.089932 10 km in degrees) of gis coordinate &quot;33.0, -88.0&quot; where the family is &quot;docs&quot; and the column is &quot;location&quot;.
+<pre><code class="json">docs.location:"Intersects(Circle(33.0, -88.0 d=0.089932))"</code></pre>
+</p>
+<p>
+To run a query to find all the rows that contain a location within 10 km of gis coordinate &quot;33.0, -88.0&quot; where the family is &quot;docs&quot; and the column is &quot;location&quot;.
+<pre><code class="json">docs.location:"Intersects(Circle(33.0, -88.0 d=10.0km))"</code></pre>
+</p>
+<p>
+To run a query to find all the rows that contain a location within 10 miles of gis coordinate &quot;33.0, -88.0&quot; where the family is &quot;docs&quot; and the column is &quot;location&quot;.
+<pre><code class="json">docs.location:"Intersects(Circle(33.0, -88.0 d=10.0m))"</code></pre>
+</p>
+            </div>
+          </section>
+          <section>
+            <div class="page-header">
+              <h1 id="types">Types</h1>
+              <h3 id="text_type">Text</h3>
+              <p>
+              The Text Type has the type name of:
+<pre><code class="json">text</code></pre>
+              <h5>Property Options:</h5>
+              <ul>
+              <li>&quot;stopWordPath&quot; -Optional- default value is no stop words.  This should be a HDFS path.
+	<br/>This will load stop words into the StandardAnalyzer for this field, one term per line.</li>
+
+	          <li>&quot;analyzerClass&quot; -Optional- default value is a standard analyzer with no stop words.<br/>This could be any Analyzer class that has a default constructor or one that takes a Lucene Version enum.</li>
+              </ul>
+		  </p>
+              <h3 id="string_type">String</h3>
+              <p>
+              The String Type has the type name of:
+<pre><code class="json">string</code></pre>
+              <h5>Property Options:</h5>
+              <ul>
+              <li>None</li>
+              </ul>
+		  </p>
+              <h3 id="long_type">Long</h3>
+              <p>
+              The Long Type has the type name of:
+<pre><code class="json">long</code></pre>
+              <h5>Property Options:</h5>
+              <ul>
+              <li>&quot;numericPrecisionStep&quot; -Optional- default value is &quot;4&quot;</li>
+              </ul>
+		  </p>
+              <h3 id="int_type">Integer</h3>
+              <p>
+              The Integer Type has the type name of:
+<pre><code class="json">int</code></pre>
+              <h5>Property Options:</h5>
+              <ul>
+              <li>&quot;numericPrecisionStep&quot; -Optional- default value is &quot;4&quot;</li>
+              </ul>
+		  </p>
+              <h3 id="float_type">Float</h3>
+              <p>
+              The Float Type has the type name of:
+<pre><code class="json">float</code></pre>
+              <h5>Property Options:</h5>
+              <ul>
+              <li>&quot;numericPrecisionStep&quot; -Optional- default value is &quot;4&quot;</li>
+              </ul>
+		  </p>
+              <h3 id="double_type">Double</h3>
+              <p>
+              The Double Type has the type name of:
+<pre><code class="json">double</code></pre>
+              <h5>Property Options:</h5>
+              <ul>
+              <li>&quot;numericPrecisionStep&quot; -Optional- default value is &quot;4&quot;</li>
+              </ul>
+		  </p>
+		              <h3 id="date_type">Date</h3>
+		              <p>
+		              The Date Type has the type name of:
+		<pre><code class="json">date</code></pre>
+		              <h5>Property Options:</h5>
+		              <ul>
+		              <li>&quot;dateFormat&quot; -Required- Examples: &quot;yyyy-MM-dd&quot;, &quot;MM/dd/yyyy&quot; or anything that SimpleDateFormat can parse.</li>
+					  <li>&quot;timeUnit&quot; -Optional- Default is SECONDS.  Other options (DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS)</li>
+				      <li>&quot;numericPrecisionStep&quot; -Optional- default value is &quot;4&quot;</li>
+		              </ul>
+				  </p>
+
+              <h3 id="stored_type">Stored</h3>
+              <p>
+              The Stored Type has the type name of:
+<pre><code class="json">stored</code></pre>
+              <h5>Property Options:</h5>
+              <ul>
+              <li>None</li>
+              </ul>
+		  </p>
+              <h3 id="spatial_type">Spatial</h3>
+              <p></p>
+              <h4 id="spatial_pointvector">Point Vector</h4>
+              <p>
+              The Point Vector Spatial Type has the type name of:
+<pre><code class="json">geo-pointvector</code></pre>
+              <h5>Property Options:</h5>
+              <ul>
+              <li>None</li>
+              </ul>
+              <h5>Supported Indexing Shapes:</h5>
+              <ul>
+              <li>Point</li>
+              </ul>
+              <h5>Supported Querying Shapes:</h5>
+              <ul>
+              <li>Circle</li>
+              <li>Rectangle</li>
+              </ul>
+              <h5>Supported Querying Operations:</h5>
+              <ul>
+              <li>Intersects</li>
+              </ul>
+              </p>
+              <h4 id="spatial_termprefix">Term Prefix</h4>
+              <p>
+              The Term Prefix Spatial Type has the type name of:
+<pre><code class="json">geo-termprefix</code></pre>
+              <h5>Property Options:</h5>
+              <ul>
+              <li>&quot;spatialPrefixTree&quot; can either equal to &quot;GeohashPrefixTree&quot; or &quot;QuadPrefixTree&quot;</li>
+              <li>&quot;maxLevels&quot; -Optional- default value is &quot;11&quot;</li>
+              </ul>
+              <h5>Supported Indexing Shapes:</h5>
+              <ul>
+              <li>Point</li>
+              </ul>
+              <h5>Supported Querying Shapes:</h5>
+              <ul>
+              <li>Circle</li>
+              <li>Rectangle</li>
+              </ul>
+              <h5>Supported Querying Operations:</h5>
+              <ul>
+              <li>Intersects</li>
+              </ul>
+              </p>
+              <h4 id="spatial_recursiveprefix">Recursive Prefix</h4>
+              <p>
+              The Term Prefix Spatial Type has the type name of:
+<pre><code class="json">geo-recursiveprefix</code></pre>
+              <h5>Property Options:</h5>
+              <ul>
+              <li>&quot;spatialPrefixTree&quot; can either equal to &quot;GeohashPrefixTree&quot; or &quot;QuadPrefixTree&quot;</li>
+              <li>&quot;maxLevels&quot; -Optional- default value is &quot;11&quot;</li>
+              </ul>
+              <h5>Supported Indexing Shapes:</h5>
+              <ul>
+              <li>Point</li>
+              <li>Circle</li>
+              <li>Rectangle</li>
+              </ul>
+              <h5>Supported Querying Shapes:</h5>
+              <ul>
+              <li>Circle</li>
+              <li>Rectangle</li>
+              </ul>
+              <h5>Supported Querying Operations:</h5>
+              <ul>
+              <li>IsDisjointTo</li>
+              <li>Intersects</li>
+              <li>IsWithin</li>
+              <li>Contains</li>
+              </ul>
+              </p>
+            </div>
+          </section>
+          <section>
+	         <div class="page-header">
+                <h1 id="custom_types">Custom Types</h1>
+	         </div>
+	         <p class="lead">Custom types in Blur allow you to create your own types in Lucene
+		     as well as plugging into the query parser so that you can use your custom type.</p>
+	         <h3 id="custom_types_creating">Creating</h3>
+	         <p>
+You will need to extend the "org.apache.blur.analysis.FieldTypeDefinition" class found in the blur-query module.  If you need to use a different Analyzer than the StandardAnalyzer used in the "text" type just extend the "org.apache.blur.analysis.type.TextFieldTypeDefinition" and make the appropriate changes.
+		     </p>
+<p>
+For types that require custom query parsing	or custom "org.apache.lucene.index.IndexableField" manipulation without the use of an Analyzer.  Please extend "org.apache.blur.analysis.type.CustomFieldTypeDefinition".
+</p>
+<p>
+<h4>Example</h4>
+Below is a simple type that is basically the same as a "string" type, however it's implemented by extending "org.apache.blur.analysis.type.CustomFieldTypeDefinition".<br/><br/>
+<pre><code class="java">public class ExampleType extends CustomFieldTypeDefinition {
+
+  private String _fieldNameForThisInstance;
+
+  /**
+   * Get the name of the type.
+   *
+   * @return the name.
+   */
+  @Override
+  public String getName() {
+    return "example";
+  }
+
+  /**
+   * Configures this instance for the type.
+   *
+   * @param fieldNameForThisInstance
+   *          the field name for this instance.
+   * @param properties
+   *          the properties passed into this type definition from the
+   *          {@link Blur.Iface#addColumnDefinition(String, ColumnDefinition)}
+   *          method.
+   */
+  @Override
+  public void configure(String fieldNameForThisInstance, Map<String, String> properties,
+                        Configuration configuration) {
+    _fieldNameForThisInstance = fieldNameForThisInstance;
+  }
+
+  /**
+   * Create {@link Field}s for the index as well as for storing the original
+   * data for retrieval.
+   *
+   * @param family
+   *          the family name.
+   * @param column
+   *          the column that holds the name and value.
+   *
+   * @return the {@link Iterable} of {@link Field}s.
+   */
+  @Override
+  public Iterable&lt;? extends Field&gt; getFieldsForColumn(String family, Column column) {
+    String name = family + "." + column.getName();
+    String value = column.getValue();
+    return makeIterable(new StringField(name, value, Store.YES));
+  }
+
+  /**
+   * Create {@link Field}s for the index do NOT store the data because the is a
+   * sub column.
+   *
+   * @param family
+   *          the family name.
+   * @param column
+   *          the column that holds the name and value.
+   * @param subName
+   *          the sub column name.
+   *
+   * @return the {@link Iterable} of {@link Field}s.
+   */
+  @Override
+  public Iterable&lt;? extends Field&gt; getFieldsForSubColumn(String family, Column column,
+       String subName) {
+    String name = family + "." + column.getName() + "." + subName;
+    String value = column.getValue();
+    return makeIterable(new StringField(name, value, Store.NO));
+  }
+
+  /**
+   * Gets the query from the text provided by the query parser.
+   *
+   * @param text
+   *          the text provided by the query parser.
+   * @return the {@link Query}.
+   */
+  @Override
+  public Query getCustomQuery(String text) {
+    return new TermQuery(new Term(_fieldNameForThisInstance, text));
+  }
+
+}
+</code></pre>
+
+</p>
+
+	         <h3 id="custom_types_distributing">Distributing</h3>
+	         <p>Once you have created and tested your custom type you will need to copy the jar file containing your custom type to all the servers in the cluster.  The jar file will need to be located within the $BLUR_HOME/lib directory.  Once there all the servers will need to be restarted to have the jar file be picked up in the classpath.<br/><br/>In a later version of Blur we hope to have this be a dynamic operation that can be performed without restarting the cluster.</p>
+	         <h3 id="custom_types_using">Using</h3>
+			 <p>You can either add your custom type to the entire cluster or per table.</p>
+	         <h4 id="custom_types_using_cluster">Cluster Wide</h4>
+	         <p>For cluster wide configuration you will need to add the new field types into the blur-site.properties file on each server.
+<pre><code class="bash">blur.fieldtype.customtype1=org.apache.blur.analysis.type.ExampleType1
+blur.fieldtype.customtype2=org.apache.blur.analysis.type.ExampleType2
+...</code></pre>
+
+Please note that the prefix of "blur.fieldtype." is all that is used from the property name because the type gets it's name from the internal method of "getName".  However the property names will need to be unique within the file.
+</p>
+	         <h4 id="custom_types_using_table">Single Table</h4>
+	         <p>For a single table configuration you will need to add the new field types into the tableProperties map in the TableDescriptor as you define the table.
+<pre><code class="java">tableDescriptor.putToTableProperties("blur.fieldtype.customtype1",
+	"org.apache.blur.analysis.type.ExampleType1");
+tableDescriptor.putToTableProperties("blur.fieldtype.customtype2",
+	"org.apache.blur.analysis.type.ExampleType2");
+...</code></pre>
+
+Please note that the prefix of "blur.fieldtype." is all that is used from the property name because the type gets it's name from the internal method of "getName".  However the property names will need to be unique within the map.</p>
+	      </section>
+        </div>
+      </div>
+    </div>
+
+<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
+
+    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+    <script src="resources/js/jquery-2.0.3.min.js"></script>
+    <!-- Include all compiled plugins (below), or include individual files as needed -->
+    <script src="resources/js/bootstrap.min.js"></script>
+    <!-- Enable responsive features in IE8 with Respond.js (https://github.com/scottjehl/Respond) -->
+    <script src="resources/js/respond.min.js"></script>
+    <script src="resources/js/docs.js"></script>
+  </body>
+</html>

Added: incubator/blur/site/trunk/content/blur/docs/0.2.4/extra.html
URL: http://svn.apache.org/viewvc/incubator/blur/site/trunk/content/blur/docs/0.2.4/extra.html?rev=1648906&view=auto
==============================================================================
--- incubator/blur/site/trunk/content/blur/docs/0.2.4/extra.html (added)
+++ incubator/blur/site/trunk/content/blur/docs/0.2.4/extra.html Thu Jan  1 17:21:48 2015
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<!-- 
+  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.
+-->
+<html>
+  <head>
+    <title>Extra - Apache Blur (Incubator) Documentation</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <!-- Bootstrap -->
+    <link href="resources/css/bootstrap.min.css" rel="stylesheet" media="screen">
+    <link href="resources/css/bs-docs.css" rel="stylesheet" media="screen">
+  </head>
+  <body>
+    <div class="navbar navbar-inverse navbar-fixed-top">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="http://incubator.apache.org/blur">Apache Blur (Incubator)</a>
+        </div>
+        <div class="collapse navbar-collapse">
+          <ul class="nav navbar-nav">
+	        <li><a href="index.html">Main</a></li>
+            <li><a href="getting-started.html">Getting Started</a></li>
+            <li><a href="data-model.html">Data Model</a></li>
+            <li><a href="cluster-setup.html">Cluster Setup</a></li>
+            <li><a href="using-blur.html">Using Blur</a></li>
+            <li class="active"><a href="extra.html">Extra</a></li>
+          </ul>
+        </div>
+      </div>
+    </div>
+    <div class="container bs-docs-container">
+      <div class="row">
+        <div class="col-md-3">
+          <div class="bs-sidebar hidden-print affix" role="complementary">
+            <ul class="nav bs-sidenav">
+              
+            </ul>
+          </div>
+        </div>
+        <div class="col-md-9" role="main">
+          
+        </div>
+      </div>
+    </div>
+    
+    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+    <script src="resources/js/jquery-2.0.3.min.js"></script>
+    <!-- Include all compiled plugins (below), or include individual files as needed -->
+    <script src="resources/js/bootstrap.min.js"></script>
+    <!-- Enable responsive features in IE8 with Respond.js (https://github.com/scottjehl/Respond) -->
+    <script src="resources/js/respond.min.js"></script>
+    <script src="resources/js/docs.js"></script>
+  </body>
+</html>

Added: incubator/blur/site/trunk/content/blur/docs/0.2.4/getting-started.html
URL: http://svn.apache.org/viewvc/incubator/blur/site/trunk/content/blur/docs/0.2.4/getting-started.html?rev=1648906&view=auto
==============================================================================
--- incubator/blur/site/trunk/content/blur/docs/0.2.4/getting-started.html (added)
+++ incubator/blur/site/trunk/content/blur/docs/0.2.4/getting-started.html Thu Jan  1 17:21:48 2015
@@ -0,0 +1,276 @@
+<!DOCTYPE html>
+<!--
+  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.
+-->
+<html>
+  <head>
+    <title>Getting started - Apache Blur (Incubator) Documentation</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <!-- Bootstrap -->
+    <link href="resources/css/bootstrap.min.css" rel="stylesheet" media="screen">
+    <link href="resources/css/bs-docs.css" rel="stylesheet" media="screen">
+  </head>
+  <body>
+    <div class="navbar navbar-inverse navbar-fixed-top">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="http://incubator.apache.org/blur">Apache Blur (Incubator)</a>
+        </div>
+        <div class="collapse navbar-collapse">
+          <ul class="nav navbar-nav">
+	        <li><a href="index.html">Main</a></li>
+            <li class="active"><a href="getting-started.html">Getting Started</a></li>
+            <li><a href="platform.html">Platform</a></li>
+            <li><a href="data-model.html">Data Model</a></li>
+            <li><a href="cluster-setup.html">Cluster Setup</a></li>
+            <li><a href="using-blur.html">Using Blur</a></li>
+            <li><a href="Blur.html">Blur API</a></li>
+            <li><a href="console.html">Console</a></li>
+          </ul>
+        </div>
+      </div>
+    </div>
+    <div class="container bs-docs-container">
+      <div class="row">
+        <div class="col-md-3">
+          <div class="bs-sidebar hidden-print affix" role="complementary">
+            <ul class="nav bs-sidenav">
+              <li><a href="#prerequisites">Prerequisites</a></li>
+              <li><a href="#download">Download</a></li>
+              <li><a href="#compile">Compile</a></li>
+              <li><a href="#install">Install</a></li>
+              <li><a href="#min-config">Minimum Configuration</a></li>
+              <li><a href="#start">Starting Apache Blur</a></li>
+              <li><a href="#shell">Shell</a></li>
+              <li><a href="#shell-example">Simple Shell Example</a>
+	            <ul class="nav">
+					<li><a href="#shell-create">Create Table</a></li>
+					<li><a href="#shell-mutate">Mutate</a></li>
+					<li><a href="#shell-query">Query</a></li>
+					<li><a href="#shell-enable-highlighting">Enable Highlighting</a></li>
+					<li><a href="#shell-query-highlight">Query with Highlights</a></li>
+                </ul>
+	          </li>
+            </ul>
+          </div>
+        </div>
+        <div class="col-md-9" role="main">
+          <section>
+            <div class="page-header">
+              <h1 id="prerequisites">Prerequisites</h1>
+            </div>
+            <p class="lead">
+              You will at a minimum need the following:
+            </p>
+            <ul>
+              <li>Java 6 or Java 7 (Java 7 is recommended)</li>
+            </ul>
+            <h3>Setup passphraseless ssh</h3>
+            <p>These instructions are taken from the Hadoop Quick Start Guide.</p>
+            <p>Now check that you can ssh to the localhost without a passphrase:</p>
+            <pre><code class="bash">ssh localhost</code></pre>
+            <p>If you cannot ssh to localhost without a passphrase, execute the following commands:</p>
+            <pre><code class="bash">ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
+cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys</code></pre>
+            <div class="bs-callout bs-callout-info"><h4>Heads Up!</h4><p>Also you will need to know the location of the JAVA_HOME directory.</p></div>
+          </section>
+          <section>
+            <div class="page-header">
+              <h1 id="download">Download</h1>
+            </div>
+            <h3>Download Source and Binary Artifacts</h3>
+            <p>
+	Both the source and binary artifacts are provided via mirrors here:<br/><br/>
+              <a href="http://www.apache.org/dyn/closer.cgi/incubator/blur/0.2.4-incubating-SNAPSHOT/apache-blur-0.2.4-incubating-src.tar.gz" class="btn btn-large btn-primary">Apache Blur 0.2.4 Source</a>
+              <a href="http://www.apache.org/dyn/closer.cgi/incubator/blur/0.2.4-incubating-SNAPSHOT/apache-blur-0.2.4-incubating-hadoop1-bin.tar.gz" class="btn btn-large btn-primary">Apache Blur 0.2.4 Hadoop1 Binary</a>
+              <a href="http://www.apache.org/dyn/closer.cgi/incubator/blur/0.2.4-incubating-SNAPSHOT/apache-blur-0.2.4-incubating-hadoop2-bin.tar.gz" class="btn btn-large btn-primary">Apache Blur 0.2.4 Hadoop2 Binary</a>
+            </p>
+          </section>
+          <section>
+            <div class="page-header">
+              <h1 id="compile">Compile Hadoop</h1>
+            </div>
+            <p class="lead">
+              If building from source, the distribution needs to be compiled before use
+            </p>
+            <p>Clone master</p>
+            <pre><code class="bash">git clone https://git-wip-us.apache.org/repos/asf/incubator-blur.git</code></pre>
+            <h4>Hadoop 1</h4>
+            <p>Build the artifacts for Hadoop 1 (if you want to run the tests remove the "-DskipTests")</p>
+            <pre><code class="bash">cd incubator-blur/
+mvn install -DskipTests -Dhadoop1</code></pre>
+            <p>The binary artifact is located <code>distribution/target/apache-blur-0.2.4-incubating-SNAPSHOT-hadoop1-bin.tar.gz</code>.</p>
+            <h4>Hadoop 2</h4>
+            <div class="bs-callout bs-callout-info"><h4>Heads Up!</h4><p>While all the tests pass on Hadoop 2, Blur has not be tested at scale on Hadoop 2 and bin/blur-config.sh script will likely require modification to include the correct Hadoop 2 libraries.</p></div>
+            <p>Build the artifacts for Hadoop 2 (if you want to run the tests remove the "-DskipTests")</p>
+			<pre><code class="bash">cd incubator-blur/
+mvn install -DskipTests -Dhadoop2</code></pre>
+			<p>The binary artifact is located <code>distribution/target/apache-blur-0.2.4-incubating-SNAPSHOT-hadoop2-bin.tar.gz</code>.</p>
+          </section>
+          <section>
+            <div class="page-header">
+              <h1 id="install">Install</h1>
+            </div>
+            <p class="lead">
+              Once a distribution is available, follow the simple steps to install.
+            </p>
+            <p>Extract the contents of the distribution</p>
+            <pre><code class="bash">tar -xzvf apache-blur-*-bin.tar.gz</code></pre>
+            <div class="bs-callout bs-callout-info">While it's not required it is a good idea to set BLUR_HOME in your environment variables.</div>
+            <p>For bash edit .bash_profile and add:</p>
+            <pre><code class="bash">export BLUR_HOME=&lt;directory where Blur was extracted&gt;</code></pre>
+          </section>
+          <section>
+            <div class="page-header">
+              <h1 id="min-config">Minimum Configuration</h1>
+            </div>
+            <p class="lead">
+              There are a few things at a minimum that will need to be configured to start Apache Blur
+            </p>
+            <p>Edit $BLUR_HOME/conf/blur-env.sh and set JAVA_HOME:</p>
+            <pre><code class="bash">export JAVA_HOME=&lt;Java Home Directory&gt;</code></pre>
+            <div class="bs-callout bs-callout-warning"><h4>Caution</h4>If this variable is not set, then the script will attempt to locate JAVA_HOME by using the location of the "java" command.</div>
+          </section>
+          <section>
+            <div class="page-header">
+              <h1 id="start">Starting Apache Blur</h1>
+            </div>
+            <p class="lead">
+              Starting Apache blur is a simple one command step
+            </p>
+            <p>To start Apache Blur run the following command:</p>
+            <pre><code class="bash">$BLUR_HOME/bin/start-all.sh</code></pre>
+            <p>
+              This will start a single Controller server and a single Shard server on your localhost.
+            </p>
+            <p>
+              You should see:
+            </p>
+            <pre><code class="bash">blur@blurvm:~$ apache-blur-0.2.4-incubating-SNAPSHOT/bin/start-all.sh
+localhost: ZooKeeper starting as process 6650.
+localhost: Shard [0] starting as process 6783.
+localhost: Controller [0] starting as process 6933.</code></pre>
+            <p>If you run the start command again you should see:</p>
+            <pre><code class="bash">blur@blurvm:~$ apache-blur-0.2.4-incubating-SNAPSHOT/bin/stop-all.sh
+localhost: Stopping Controller [0] server with pid [6933].
+localhost: Stopping Shard [0] server with pid [6783].
+localhost: Stopping ZooKeeper with pid [6650].</code></pre>
+            <p>If you see it starting the servers again, then there is likely some issue with startup. Look in the $BLUR_HOME/logs directory for log and out files.</p>
+          </section>
+          <section>
+            <div class="page-header">
+              <h1 id="shell">Shell</h1>
+            </div>
+            <p class="lead">
+              Once the servers have been started, you can use the shell to interact with Blur.
+            </p>
+            <p>The shell command can be found in the bin directory</p>
+            <p>Auto detect the controller servers from the $BLUR_HOME/conf/controllers file</p>
+            <pre><code class="bash">$BLUR_HOME/bin/blur shell</code></pre>
+            <p>You can also explicitly call out the controller servers.</p>
+            <pre><code class="bash">$BLUR_HOME/bin/blur shell controller1:40010,controller2:40010</code></pre>
+            <p>Once in the shell, tables can be created, enabled, disabled, and removed. Type help to get a list of the commands.</p>
+          </section>
+          <section>
+            <div class="page-header">
+              <h1 id="shell-example">Shell Example</h1>
+            </div>
+            <p class="lead">
+              The below example creates a table and stores the contents of the table in a local directory of /data/testTableName which will only work if you are running blur in a single instance. Normally if you are running a hadoop cluster this will be a hdfs URI for example hdfs://host:port/blur/tables/testTableName.
+            </p>
+<h3 id="shell-create">Create Table</h3>
+<p>
+            <pre><code class="bash">blur> #Creates a table called testtable in the hdfs directory of /data/testtable with 11 shards
+blur> create -t testtable -c 11 -l hdfs://namenode/data/testtable
+</code></pre>
+            <div class="bs-callout bs-callout-info"><h4>Note</h4><p>The local directory can be used however the integrity of the data may be compromised.</p></div>
+            <pre><code class="bash">blur> #Creates a table called testtable in the local directory of /data/testtable with 11 shards
+blur> create -t testtable -c 11 -l file:///data/testtable
+</code></pre>
+</p>
+<h3 id="shell-mutate">Mutate</h3>
+<p>
+<pre><code class="bash">blur> #Adds a row to testtable
+blur> mutate testtable rowid1 recordid1 fam0 col1:value1
+</code></pre>
+</p>
+<h3 id="shell-query">Query</h3>
+<p>
+<pre><code class="bash">blur> #Runs a query on testtable
+blur> query testtable fam0.col1:value1
+ - Results Summary -
+    total : 1
+    time  : 7.874 ms
+-----------------------------------------------------------------------------------------------------
+      hit : 0
+    score : 1.4142135381698608
+       id : rowid1
+ recordId : recordid1
+   family : fam0
+     col1 : value1
+-----------------------------------------------------------------------------------------------------
+ - Results Summary -
+    total : 1
+    time  : 7.874 ms
+</code></pre>
+</p>
+<h3 id="shell-enable-highlighting">Enable Highlighting</h3>
+<p>
+<pre><code class="bash">blur> #Turns highlighting on
+blur> highlight
+highlight of query command is now on
+</code></pre>
+</p>
+<h3 id="shell-query-highlight">Query with Highlights</h3>
+<p>
+<pre><code class="bash">blur> #Runs a query on testtable with highlighting on, notice &lt;&lt;&lt;value1&gt;&gt;&gt; is highlighted
+blur> query testtable2 fam0.col1:value1
+ - Results Summary -
+    total : 1
+    time  : 13.395 ms
+-----------------------------------------------------------------------------------------------------
+      hit : 0
+    score : 1.4142135381698608
+       id : rowid1
+ recordId : recordid1
+   family : fam0
+     col1 : &lt;&lt;&lt;value1&gt;&gt;&gt;
+-----------------------------------------------------------------------------------------------------
+ - Results Summary -
+    total : 1
+    time  : 13.395 ms
+blur></code></pre>
+          </section>
+        </div>
+      </div>
+    </div>
+
+<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
+
+    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+    <script src="resources/js/jquery-2.0.3.min.js"></script>
+    <!-- Include all compiled plugins (below), or include individual files as needed -->
+    <script src="resources/js/bootstrap.min.js"></script>
+    <!-- Enable responsive features in IE8 with Respond.js (https://github.com/scottjehl/Respond) -->
+    <script src="resources/js/respond.min.js"></script>
+    <script src="resources/js/docs.js"></script>
+  </body>
+</html>

Added: incubator/blur/site/trunk/content/blur/docs/0.2.4/index.html
URL: http://svn.apache.org/viewvc/incubator/blur/site/trunk/content/blur/docs/0.2.4/index.html?rev=1648906&view=auto
==============================================================================
--- incubator/blur/site/trunk/content/blur/docs/0.2.4/index.html (added)
+++ incubator/blur/site/trunk/content/blur/docs/0.2.4/index.html Thu Jan  1 17:21:48 2015
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<!--
+  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.
+-->
+<html>
+  <head>
+    <title>Apache Blur (Incubator) Documentation</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <!-- Bootstrap -->
+    <link href="resources/css/bootstrap.min.css" rel="stylesheet" media="screen">
+    <link href="resources/css/bs-docs.css" rel="stylesheet" media="screen">
+  </head>
+  <body>
+    <div class="navbar navbar-inverse navbar-fixed-top">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="http://incubator.apache.org/blur">Apache Blur (Incubator)</a>
+        </div>
+        <div class="collapse navbar-collapse">
+          <ul class="nav navbar-nav">
+	        <li class="active"><a href="index.html">Main</a></li>
+            <li><a href="getting-started.html">Getting Started</a></li>
+            <li><a href="platform.html">Platform</a></li>
+            <li><a href="data-model.html">Data Model</a></li>
+            <li><a href="cluster-setup.html">Cluster Setup</a></li>
+            <li><a href="using-blur.html">Using Blur</a></li>
+            <li><a href="Blur.html">Blur API</a></li>
+            <li><a href="console.html">Console</a></li>
+          </ul>
+        </div>
+      </div>
+    </div>
+    <div class="container">
+      <div class="jumbotron">
+        <h1>Apache Blur (Incubator)</h1>
+        <p>
+          Blur is an open source search platform capable of querying massive amounts of data at incredible speeds. Blur is built on top of Lucene, Hadoop, Thrift, and ZooKeeper. Tables consist of a series of shards (Lucene indexes) that are distributed across a cluster of commodity servers. All index information is stored in HDFS, cluster coordination is handled by Apache ZooKeeper, Apache Thrift is used for the RPC, and Lucene handles all of the indexing and data storage.
+        </p>
+        <a href="getting-started.html" class="btn btn-primary btn-large">Get Started &raquo;</a>
+        <a href="release-notes.html" class="btn btn-primary btn-large">View Release Notes &raquo;</a>
+      </div>
+    </div>
+
+    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+    <script src="resources/js/jquery-2.0.3.min.js"></script>
+    <!-- Include all compiled plugins (below), or include individual files as needed -->
+    <script src="resources/js/bootstrap.min.js"></script>
+    <!-- Enable responsive features in IE8 with Respond.js (https://github.com/scottjehl/Respond) -->
+    <script src="resources/js/respond.min.js"></script>
+  </body>
+</html>

Added: incubator/blur/site/trunk/content/blur/docs/0.2.4/platform.html
URL: http://svn.apache.org/viewvc/incubator/blur/site/trunk/content/blur/docs/0.2.4/platform.html?rev=1648906&view=auto
==============================================================================
--- incubator/blur/site/trunk/content/blur/docs/0.2.4/platform.html (added)
+++ incubator/blur/site/trunk/content/blur/docs/0.2.4/platform.html Thu Jan  1 17:21:48 2015
@@ -0,0 +1,278 @@
+<!DOCTYPE html>
+<!-- 
+  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.
+-->
+<html>
+  <head>
+    <title>Platform - Apache Blur (Incubator) Documentation</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <!-- Bootstrap -->
+    <link href="resources/css/bootstrap.min.css" rel="stylesheet" media="screen">
+    <link href="resources/css/bs-docs.css" rel="stylesheet" media="screen">
+  </head>
+  <body>
+    <div class="navbar navbar-inverse navbar-fixed-top">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="http://incubator.apache.org/blur">Apache Blur (Incubator)</a>
+        </div>
+        <div class="collapse navbar-collapse">
+          <ul class="nav navbar-nav">
+            <li><a href="index.html">Main</a></li>
+            <li><a href="getting-started.html">Getting Started</a></li>
+            <li class="active"><a href="platform.html">Platform</a></li>
+            <li><a href="data-model.html">Data Model</a></li>
+            <li><a href="cluster-setup.html">Cluster Setup</a></li>
+            <li><a href="using-blur.html">Using Blur</a></li>
+            <li><a href="Blur.html">Blur API</a></li>
+            <li><a href="console.html">Console</a></li>
+          </ul>
+        </div>
+      </div>
+    </div>
+    <div class="container bs-docs-container">
+      <div class="row">
+        <div class="col-md-3">
+          <div class="bs-sidebar hidden-print affix" role="complementary">
+            <ul class="nav bs-sidenav">
+            <li><a href="#intro">Introduction</a></li>
+            <li><a href="#motivation">Motivation</a></li>
+            <li><a href="#arch">Blur Architecture Review</a></li>  
+            <li><a href="#affordances">Platform Affordances</a></li>             
+            <li><a href="#commands">Command Overview</a></li>
+            <li><a href="#arguments">Arguments</a></li>
+            <li><a href="#installation">Installation</a></li>
+            <li><a href="#docs">Documentation</a></li>            
+            <li><a href="#cli">CLI</a></li>
+            </ul>
+          </div>
+        </div>
+        <div class="col-md-9" role="main">
+        <!-- In some places, we need to describe both where the system is heading and 
+           describe its current limitations.  For ease of documentation maintenance, let
+           us try to write in a way that disclaimers are in their own paragraphs that can
+           easily be stripped out when they no longer apply, thus not requiring a bunch
+           of re-writing.  
+        -->
+          <section>
+            <div class="page-header">
+              <h1 id="intro">Introduction</h1>
+            </div>
+            <p class="lead">
+      				While many users of Blur will find the search system sufficient for their
+      				needs out of the box, the Blur platform exposes a simple set of lower-level 
+      				primitives that allow the user to easily and quickly introduce new system behavior.
+          </p>
+          <!-- Disclaimer para for 0.2.4 -->
+          <p class="lead">
+          With this release, we expose the initial read-only constructs for the platform.  
+          Future releases, will allow introduce more rich read-write constructs.
+          </p>
+          <!-- Disclaimer para for 0.2.4 -->
+          <p class="alert">
+          <strong>NOTE:</strong> In 0.2.4, the platform capability described here exists,
+          but existing functionality of Blur has not yet been ported to use it.
+          </p>
+          </section>
+          <section>
+            <div class="page-header">
+              <h2 id="motivation">Motivation</h2>
+            </div>
+            <p>
+							In modern open source search platforms, we find Lucene at the very core and 
+							a monolithic application stack implemented on top of it handling the distributed 
+							indexing, searching, failures, features, etc. Indeed, this was true of Blur
+							as well.
+						</p>	
+						<p>We wanted more flexibility.  We wanted to rapidly be able to introduce brand new
+							features into the system.  So, we supposed it would be helpful if an 
+							intermediate abstraction could be introduced providing the primitives for a 
+							distributed Lucene server on which specific search applications could be built. 
+          	</p>
+          	<p>Some specific goals we had in mind:</p>
+          	<ul>
+          	  <li>To allow for indexing/searching based on other/new data models (e.g. 
+          	  		more than just the Row/Record constructs).</li>
+							<li>Allow implementations to build whole new APIs given direct access to the Lucene primitives.</li>
+							<li>Allow flexibility to build totally custom applications.</li>
+							<li>Remove the complexities of threading, networking and concurrency from 
+									new feature creation.</li>
+ 						</ul>
+          </section>
+          <section>
+            <div class="page-header">
+              <h2 id="arch">Blur Architecture Review</h2>
+            </div>
+          	<p>
+          		The Blur platform provides a set of <code>Command</code> classes that can 
+							be implemented to achieve new functionality.  A basic understanding of how Blur
+							works will greatly help in understanding how to implement commands.  So let's
+							take a moment to review.
+          	</p>
+          	<!-- 
+          		@TODO: Does this content exist somewhere we can just point to? 
+          	  @TODO: If the answer is no, we should beef up this quick-n-dirty explanation.
+          	-->
+          	<p>In Blur, we refer to a logical Lucene index as a table.  Tables are typically
+          	very large, and so we divide them up into 'shards'.  Now, each shard is exposed 
+          	through a Shard Server, which is sort of a container of shards.  The Shard Server(s)
+          	are organized into a cluster that work together to make all the shards of the table(s)
+          	available.  For scalability, we've divided up the logical table into shards spread
+          	across the Shard Server(s).  We then put another type of server, called a Controller, 
+          	in front of the cluster to present all the shards as a single logical table.
+          	</p>
+          	<!-- 
+          	  @TODO: Find a graphic of the architecture so the bevy of words above can be simplified.
+             -->
+          	<p>For the controller to present all the shards as a single index, it needs to accept 
+          	a request, then scatter the request to all the shard servers, combine the results in 
+          	some meaningful way, and send them back to the client.
+          	</p>         	 
+          </section>
+          <section>
+            <div class="page-header">
+              <h2 id="affordances">Platform Affordances</h2>
+            </div>
+            <p>
+							<code>@TODO</code>
+						</p>	
+						
+          </section>          
+          <section>
+            <div class="page-header">
+              <h2 id="commands">Command Overview</h2>
+            </div>
+            <p>
+						As we've gathered from above, the heart of a distributed search system is the ability
+						to execute some function across a set of indices and combine the results in a logical 
+						way to be returned to the user. Not surprisingly, this is also at the heart of the 
+						Blur Platform.  As an introduction, we'll explore how to take a look at finding the number
+						of documents that contain a particular term across all shards in a table.
+						</p>	
+						<p>Our first step will be to find the answer for a single shard/index.  Lucene's 
+						<code>IndexReader</code>, to which we'll have access in our command, conveniently 
+						gives us that.  Getting the answer for a single index requires implementing an <code>execute</code>
+						method.
+						</p>
+						<pre>@Override
+public Long execute(IndexContext context) throws IOException {
+  return (long) context.getIndexReader().numDocs();
+}</pre>
+						<p>We'll learn where the field name and term are defined later in the Arguments
+						 section. Inside of the <code>execute</code> method, we're focused on finding the answer for
+						 a single shard/index.  To find our answer, we're given an <code>IndexContext</code> which
+						 provides us access to the underlying Lucene index, so for our trivial command we can simply
+						 return the answer directly from the IndexReader.
+						 </p>
+						 <p>Now we need to let Blur know how to combine the results from the individual shards
+						 into a single logical response.  We do this by implementing the <code>combine</code> method.
+						 </p>
+						 <pre>@Override
+public Long combine(CombiningContext context, Map&lt;? extends Location&lt;?&gt;, Long&gt; results) throws IOException {
+  long total = 0;
+  for (Long l : results.values()) {
+    total += l;
+  }
+  return total;
+}</pre>
+						 <p>
+						 Again, we're given some execution context (which we don't need for our sample command) and we're
+						 given an <code>Map&lt;? extends Location&lt;?&gt;, Long&gt;</code> of result values.
+						 </p>
+
+          </section>  
+          <section>
+            <div class="page-header">
+              <h2 id="arguments">Arguments</h2>
+            </div>
+            <p>
+							Recall from above that in the execute method we were able to use some member variables that
+							were treated like arguments to the command.  Now, let's take a closer look how they were provided.
+						</p>	
+						<p>
+							We've kept it very simple for you to declare arguments and for your users	to provide arguments. We provide
+							two simple annotations that you can place right on your member field declarations indicating whether 
+							they are required or optional.  You can [and are encouraged to] provide some helpful documentation
+							on the intent of the argument.  As an example, by extending the <code>TableReadCommand</code> you get
+							the <code>table</code> argument as required for free.  Let's look at how it's declared:
+						</p>
+						<pre>
+@RequiredArgument("The name of the table.")
+private String table;						
+						</pre>
+						<p>Naturally, we can also declare optional arguments as well:</p>
+						<pre>
+@OptionalArgument("The number of results to be returned. default=10")
+private short size = 10;						
+						</pre>
+						<p>
+						  By annotating your parameters, the Blur Platform is able to do the basic requirement checking for you 
+						  allowing you to keep the inside of your execute/combine clean of argument validation.
+						</p>
+          </section>  
+          <section>
+            <div class="page-header">
+              <h2 id="installation">Installation</h2>
+            </div>
+            <p>
+							<code>@TODO</code>			
+						</p>	
+
+          </section>   
+          <section>
+            <div class="page-header">
+              <h2 id="docs">Documentation</h2>
+            </div>
+            <p>
+							Commands should be self-documenting starting with a good name.  But good naming
+							is not sufficient, so Blur offers a <code>@Description</code> annotation to provide
+							a nice way to better express what your command does.  It's simply used like so:	
+						</p>	
+						<pre>
+@Description("Returns the number of documents containing the term in the given field.")
+public class DocFreqCommand extends TableReadCommand<Long> {
+  ...
+}						
+						</pre>
+
+          </section>             
+          <section>
+            <div class="page-header">
+              <h2 id="cli">CLI</h2>
+            </div>
+            <p>
+See Using Blur -> Shell -> <a href="using-blur.html#shell_platform_commands">Platform Commands</a>.
+						</p>	
+
+          </section>                             
+        </div>
+      </div>
+    </div>
+    
+    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+    <script src="resources/js/jquery-2.0.3.min.js"></script>
+    <!-- Include all compiled plugins (below), or include individual files as needed -->
+    <script src="resources/js/bootstrap.min.js"></script>
+    <!-- Enable responsive features in IE8 with Respond.js (https://github.com/scottjehl/Respond) -->
+    <script src="resources/js/respond.min.js"></script>
+    <script src="resources/js/docs.js"></script>
+  </body>
+</html>

Added: incubator/blur/site/trunk/content/blur/docs/0.2.4/release-notes.html
URL: http://svn.apache.org/viewvc/incubator/blur/site/trunk/content/blur/docs/0.2.4/release-notes.html?rev=1648906&view=auto
==============================================================================
--- incubator/blur/site/trunk/content/blur/docs/0.2.4/release-notes.html (added)
+++ incubator/blur/site/trunk/content/blur/docs/0.2.4/release-notes.html Thu Jan  1 17:21:48 2015
@@ -0,0 +1,159 @@
+<!DOCTYPE html>
+<!--
+  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.
+-->
+<!-- Header for Release Notes -->
+<html>
+  <head>
+    <title>Apache Blur (Incubator) Documentation</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <!-- Bootstrap -->
+    <link href="resources/css/bootstrap.min.css" rel="stylesheet" media="screen">
+    <link href="resources/css/bs-docs.css" rel="stylesheet" media="screen">
+  </head>
+  <body>
+    <div class="navbar navbar-inverse navbar-fixed-top">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="http://incubator.apache.org/blur">Apache Blur (Incubator)</a>
+        </div>
+        <div class="collapse navbar-collapse">
+          <ul class="nav navbar-nav">
+	        <li><a href="index.html">Main</a></li>
+            <li><a href="getting-started.html">Getting Started</a></li>
+            <li><a href="platform.html">Platform</a></li>
+            <li><a href="data-model.html">Data Model</a></li>
+            <li><a href="cluster-setup.html">Cluster Setup</a></li>
+            <li><a href="using-blur.html">Using Blur</a></li>
+            <li><a href="Blur.html">Blur API</a></li>
+            <li><a href="console.html">Console</a></li>
+			<li><a href="site/index.html" target="_blank">Maven Site</a></li>
+			<li><a href="site/apidocs/index.html" target="_blank">Javadocs</a></li>
+          </ul>
+        </div>
+      </div>
+    </div>
+    <div class="container">
+      <div class="jumbotron">
+        <h1>Apache Blur (Incubator)</h1>
+        <p>
+<!-- Header for Release Notes -->
+
+        Release Notes - Apache Blur - Version 0.2.3<br/><br/>
+
+<b>** Apache Blur 0.2.3 is a re-release of 0.2.2 with a few bug fixes and a new version of Apache Blur Console.</b><br/>
+<br/>
+
+
+
+        Release Notes - Apache Blur - Version 0.2.2
+
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-297'>BLUR-297</a>] -         The ShardServerEventHandler class is log noisy when clients disconnect
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-298'>BLUR-298</a>] -         ZooKeeperClusterStatus has several methods that are not working
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-299'>BLUR-299</a>] -         Custom types at the system/cluster level aren&#39;t registered when the OutputFormat creates the table.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-300'>BLUR-300</a>] -         System types need to be registered before the tablecontext is loaded
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-301'>BLUR-301</a>] -         List command should be sorted
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-303'>BLUR-303</a>] -         Change class sig for DefaultBlurReducer
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-305'>BLUR-305</a>] -         Blur CombineInputFormat doesn&#39;t work at all
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-306'>BLUR-306</a>] -         Tables with the same name errors
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-307'>BLUR-307</a>] -         CsvBlurMapper not does work with combined input format
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-308'>BLUR-308</a>] -         The MR jobs tmpjars contains more jar than needed
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-309'>BLUR-309</a>] -         CsvBlurMapper has an extra comma in the error message
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-310'>BLUR-310</a>] -         Remove the index size gathering code
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-318'>BLUR-318</a>] -         Bug in TypeDefinitions while having separate analyzers for index and query
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-319'>BLUR-319</a>] -         Custom TypeDef&#39;s can get Blur into a state where one cannot make new tables.
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-324'>BLUR-324</a>] -         SpatialPointVectorStrategyFieldTypeDefinition is throwing an exception during indexing
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-325'>BLUR-325</a>] -         The MasterBasedDistributedLayout is not removing the layout when a table is deleted
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-326'>BLUR-326</a>] -         The thrift call shardServerList is failing
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-328'>BLUR-328</a>] -         Index curruption during mutateBatch calls
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-329'>BLUR-329</a>] -         Shard server query cache bug
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-330'>BLUR-330</a>] -         Remove the ZooKeeper trace store
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-331'>BLUR-331</a>] -         Large Row Paging issue
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-332'>BLUR-332</a>] -         FileNotFoundException during stats call
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-337'>BLUR-337</a>] -         Shard server should fail hard on a bad misconfiguration
+</li>
+</ul>
+
+<h2>        Improvement
+</h2>
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-302'>BLUR-302</a>] -         start-all script sometimes causes errors
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-317'>BLUR-317</a>] -         Enable Changing of Compression alg and chunk size in Codec
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-323'>BLUR-323</a>] -         Improve error message on CustomFieldTypeDefinition
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-327'>BLUR-327</a>] -         Schedule a daily optimize of each shard
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-333'>BLUR-333</a>] -         Remove polling from the index importer
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-334'>BLUR-334</a>] -         Add sorting
+</li>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-335'>BLUR-335</a>] -         Field existence query
+</li>
+</ul>
+
+<h2>        New Feature
+</h2>
+<ul>
+<li>[<a href='https://issues.apache.org/jira/browse/BLUR-314'>BLUR-314</a>] -         Allow configurable Thrift frame size
+</li>
+</ul>
+
+
+<!-- Footer for Release Notes -->
+</p>
+</div>
+</div>
+<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+<script src="resources/js/jquery-2.0.3.min.js"></script>
+<!-- Include all compiled plugins (below), or include individual files as needed -->
+<script src="resources/js/bootstrap.min.js"></script>
+<!-- Enable responsive features in IE8 with Respond.js (https://github.com/scottjehl/Respond) -->
+<script src="resources/js/respond.min.js"></script>
+</body>
+</html>
+<!-- Footer for Release Notes -->

Added: incubator/blur/site/trunk/content/blur/docs/0.2.4/release-notes.template.html
URL: http://svn.apache.org/viewvc/incubator/blur/site/trunk/content/blur/docs/0.2.4/release-notes.template.html?rev=1648906&view=auto
==============================================================================
--- incubator/blur/site/trunk/content/blur/docs/0.2.4/release-notes.template.html (added)
+++ incubator/blur/site/trunk/content/blur/docs/0.2.4/release-notes.template.html Thu Jan  1 17:21:48 2015
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<!--
+  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.
+-->
+<!-- Header for Release Notes -->
+<html>
+  <head>
+    <title>Apache Blur (Incubator) Documentation</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <!-- Bootstrap -->
+    <link href="resources/css/bootstrap.min.css" rel="stylesheet" media="screen">
+    <link href="resources/css/bs-docs.css" rel="stylesheet" media="screen">
+  </head>
+  <body>
+    <div class="navbar navbar-inverse navbar-fixed-top">
+      <div class="container">
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <a class="navbar-brand" href="http://incubator.apache.org/blur">Apache Blur (Incubator)</a>
+        </div>
+        <div class="collapse navbar-collapse">
+          <ul class="nav navbar-nav">
+	        <li><a href="index.html">Main</a></li>
+            <li><a href="getting-started.html">Getting Started</a></li>
+            <li><a href="platform.html">Platform</a></li>
+            <li><a href="data-model.html">Data Model</a></li>
+            <li><a href="cluster-setup.html">Cluster Setup</a></li>
+            <li><a href="using-blur.html">Using Blur</a></li>
+            <li><a href="Blur.html">Blur API</a></li>
+            <li><a href="console.html">Console</a></li>
+			<li><a href="site/index.html" target="_blank">Maven Site</a></li>
+			<li><a href="site/apidocs/index.html" target="_blank">Javadocs</a></li>
+          </ul>
+        </div>
+      </div>
+    </div>
+    <div class="container">
+      <div class="jumbotron">
+        <h1>Apache Blur (Incubator)</h1>
+        <p>
+<!-- Header for Release Notes -->
+
+PUT HTML RELEASE NOTES HERE
+
+<!-- Footer for Release Notes -->
+</p>
+</div>
+</div>
+<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+<script src="resources/js/jquery-2.0.3.min.js"></script>
+<!-- Include all compiled plugins (below), or include individual files as needed -->
+<script src="resources/js/bootstrap.min.js"></script>
+<!-- Enable responsive features in IE8 with Respond.js (https://github.com/scottjehl/Respond) -->
+<script src="resources/js/respond.min.js"></script>
+</body>
+</html>
+<!-- Footer for Release Notes -->



Mime
View raw message