incubator-blur-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From amccu...@apache.org
Subject [2/20] git commit: First commit of api changes.
Date Sun, 28 Oct 2012 00:20:59 GMT
First commit of api changes.


Project: http://git-wip-us.apache.org/repos/asf/incubator-blur/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-blur/commit/1e930bbc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-blur/tree/1e930bbc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-blur/diff/1e930bbc

Branch: refs/heads/lucene-4.0.0-api
Commit: 1e930bbce96a7c5c73d3d551923856da69953f13
Parents: 7d1562c
Author: Aaron McCurry <amccurry@gmail.com>
Authored: Sat Oct 27 09:12:31 2012 -0400
Committer: Aaron McCurry <amccurry@gmail.com>
Committed: Sat Oct 27 09:12:31 2012 -0400

----------------------------------------------------------------------
 interface/Blur.thrift                              |  140 +
 interface/gen-html/Blur.html                       |  161 +-
 interface/gen-html/index.html                      |   28 +
 .../apache/blur/thrift/generated/Attribute.java    |  543 +
 .../org/apache/blur/thrift/generated/Blur.java     |  192 +-
 .../apache/blur/thrift/generated/DocLocation.java  |  422 +
 .../org/apache/blur/thrift/generated/Document.java |  376 +
 .../org/apache/blur/thrift/generated/Field.java    |  632 +
 .../org/apache/blur/thrift/generated/Lucene.java   | 9318 +++++++++++++++
 .../apache/blur/thrift/generated/QueryArgs.java    | 1012 ++
 .../apache/blur/thrift/generated/QuerySession.java |  428 +
 .../org/apache/blur/thrift/generated/ScoreDoc.java |  556 +
 .../org/apache/blur/thrift/generated/Session.java  |  472 +
 .../org/apache/blur/thrift/generated/Sort.java     |  376 +
 .../apache/blur/thrift/generated/SortField.java    |  532 +
 .../org/apache/blur/thrift/generated/SortType.java |  135 +
 .../org/apache/blur/thrift/generated/TYPE.java     |   81 +
 .../org/apache/blur/thrift/generated/Term.java     |  438 +
 .../apache/blur/thrift/generated/TopFieldDocs.java |  676 ++
 interface/gen-perl/Blur/Blur.pm                    |  218 +-
 interface/gen-perl/Blur/Lucene.pm                  | 2797 +++++
 interface/gen-perl/Blur/Types.pm                   | 1293 ++
 interface/gen-rb/blur_types.rb                     |  299 +
 interface/gen-rb/lucene.rb                         |  701 ++
 src/blur-new-api-prototype/service.thrift          |  134 +-
 .../java/org/apache/blur/core/ShardServer.java     |   54 -
 .../lucene/serializer/AbtractQueryWritable.java    |   10 +
 .../lucene/serializer/BooleanClauseWritable.java   |   71 +
 .../lucene/serializer/BooleanQueryWritable.java    |   57 +
 .../blur/lucene/serializer/FuzzyQueryWritable.java |   89 +
 .../blur/lucene/serializer/ProtoSerializer.java    |   63 +
 .../apache/blur/lucene/serializer/QUERY_TYPE.java  |  113 +
 .../blur/lucene/serializer/QueryWritable.java      |   51 +
 .../blur/lucene/serializer/SerializerUtil.java     |   37 +
 .../blur/lucene/serializer/TermQueryWritable.java  |   46 +
 .../blur/lucene/serializer/TermWritable.java       |   46 +
 .../org/apache/blur/thrift/generated/Blur.java     | 7007 +++++++++++
 .../apache/blur/thrift/generated/BlurShard.java    | 2994 +++--
 .../apache/blur/thrift/generated/DocLocation.java  |  403 +
 .../org/apache/blur/thrift/generated/Document.java |  357 +
 .../org/apache/blur/thrift/generated/Field.java    |  613 +
 .../org/apache/blur/thrift/generated/Lucene.java   | 9299 ++++++++++++++
 .../apache/blur/thrift/generated/QueryArgs.java    |  993 ++
 .../org/apache/blur/thrift/generated/Record.java   |  357 +
 .../org/apache/blur/thrift/generated/ScoreDoc.java |  537 +
 .../org/apache/blur/thrift/generated/Sort.java     |  357 +
 .../apache/blur/thrift/generated/SortField.java    |  513 +
 .../org/apache/blur/thrift/generated/SortType.java |  116 +
 .../org/apache/blur/thrift/generated/Term.java     |  419 +
 .../apache/blur/thrift/generated/TopFieldDocs.java |  657 +
 .../apache/blur/thrift/generated/Attribute.java    |  543 +
 .../org/apache/blur/thrift/generated/Blur.java     |  192 +-
 .../apache/blur/thrift/generated/DocLocation.java  |  422 +
 .../org/apache/blur/thrift/generated/Document.java |  376 +
 .../org/apache/blur/thrift/generated/Field.java    |  632 +
 .../org/apache/blur/thrift/generated/Lucene.java   | 9318 +++++++++++++++
 .../apache/blur/thrift/generated/QueryArgs.java    | 1012 ++
 .../apache/blur/thrift/generated/QuerySession.java |  428 +
 .../org/apache/blur/thrift/generated/ScoreDoc.java |  556 +
 .../org/apache/blur/thrift/generated/Session.java  |  472 +
 .../org/apache/blur/thrift/generated/Sort.java     |  376 +
 .../apache/blur/thrift/generated/SortField.java    |  532 +
 .../org/apache/blur/thrift/generated/SortType.java |  135 +
 .../org/apache/blur/thrift/generated/TYPE.java     |   81 +
 .../org/apache/blur/thrift/generated/Term.java     |  438 +
 .../apache/blur/thrift/generated/TopFieldDocs.java |  676 ++
 66 files changed, 62015 insertions(+), 1393 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/1e930bbc/interface/Blur.thrift
----------------------------------------------------------------------
diff --git a/interface/Blur.thrift b/interface/Blur.thrift
index 32ecc42..bbbda02 100644
--- a/interface/Blur.thrift
+++ b/interface/Blur.thrift
@@ -729,4 +729,144 @@ service Blur {
   map<string,string> configuration() throws (1:BlurException ex)
 }
 
+enum TYPE {
+  STRING, BOOL, SHORT, INT, LONG, FLOAT, DOUBLE, BINARY
+}
+
+struct Attribute {
+  1:string name,
+  2:binary value,
+  3:TYPE type
+}
+
+struct Session {
+  1:string sessionId,
+  2:map<string,string> properties
+}
+
+struct QuerySession {
+  1:Session session,
+  2:string queryId
+}
+
+enum SortType {
+    /** Sort by document score (relevance).  Sort values are Float and higher
+     * values are at the front. */
+    SCORE,
+
+    /** Sort by document number (index order).  Sort values are Integer and lower
+     * values are at the front. */
+    DOC,
+
+    /** Sort using term values as Strings.  Sort values are String and lower
+     * values are at the front. */
+    STRING,
+
+    /** Sort using term values as encoded Integers.  Sort values are Integer and
+     * lower values are at the front. */
+    INT,
+
+    /** Sort using term values as encoded Floats.  Sort values are Float and
+     * lower values are at the front. */
+    FLOAT,
+
+    /** Sort using term values as encoded Longs.  Sort values are Long and
+     * lower values are at the front. */
+    LONG,
+
+    /** Sort using term values as encoded Doubles.  Sort values are Double and
+     * lower values are at the front. */
+    DOUBLE,
+
+    /** Sort using term values as encoded Shorts.  Sort values are Short and
+     * lower values are at the front. */
+    SHORT,
+
+    /** Sort using term values as encoded Bytes.  Sort values are Byte and
+     * lower values are at the front. */
+    BYTE,
+
+    /** Sort using term values as Strings, but comparing by
+     * value (using String.compareTo) for all comparisons.
+     * This is typically slower than {@link #STRING}, which
+     * uses ordinals to do the sorting. */
+    STRING_VAL,
+
+    /** Sort use byte[] index values. */
+    BYTES,
+}
+
+struct SortField {
+ 1:string field,
+ 2:SortType type, 
+ 3:bool reverse
+}
+
+struct Sort {
+ 1:list<SortField> fields
+}
+
+struct DocLocation {
+ 1:i32 doc,
+ 2:i32 shardIndex
+}
+
+struct ScoreDoc {
+ 1:double score,
+ 2:DocLocation docLocation,
+ 4:list<binary> fields
+}
+
+struct QueryArgs {
+ 1:ScoreDoc after,
+ 2:binary query,
+ 3:binary filter,
+ 4:i32 numberToFetch,
+ 5:Sort sort,
+ 6:bool doDocScores,
+ 7:bool doMaxScore,
+ 8:list<i32> shardIndexes
+}
+
+struct TopFieldDocs {
+ 1:i64 totalHits,
+ 2:list<ScoreDoc> scoreDocs,
+ 3:double maxScore,
+ 4:list<SortField> fields
+}
+
+struct Field {
+  1:string name,
+  2:binary value,
+  3:TYPE type,
+  4:double boost
+}
+
+struct Document {
+ 1:list<Field> fields
+}
+
+struct Term {
+  1:string field,
+  2:binary bytes
+}
+
+service Lucene extends Blur {
+
+  Session openReadSession(1:string table) throws (1:BlurException e)
+  TopFieldDocs search(1:Session session, 2:QueryArgs queryArgs) throws (1:BlurException e)
+  list<Document> doc(1:Session session, 2:list<DocLocation> docLocations, 4:set<string> fields) throws (1:BlurException e)
+  void closeReadSession(1:Session session) throws (1:BlurException e)
+  
+  Session openWriteSession(1:string table) throws (1:BlurException e)
+  void addDocuments(1:Session session, 2:i32 shardIndex, 3:list<Document> document) throws (1:BlurException e)
+  void deleteDocumentsByQueries(1:Session session, 2:i32 shardIndex, 3:list<QueryArgs> queries) throws (1:BlurException e)
+  void deleteDocuments(1:Session session, 2:i32 shardIndex, 3:list<Term> terms) throws (1:BlurException e)
+  void updateDocuments(1:Session session, 2:i32 shardIndex, 3:list<Term> terms, 4:list<Document> document) throws (1:BlurException e)
+  
+  void commit(1:Session session) throws (1:BlurException e)
+  void rollback(1:Session session) throws (1:BlurException e)
+  
+}
+
 

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/1e930bbc/interface/gen-html/Blur.html
----------------------------------------------------------------------
diff --git a/interface/gen-html/Blur.html b/interface/gen-html/Blur.html
index 55b6296..3d0f2a8 100644
--- a/interface/gen-html/Blur.html
+++ b/interface/gen-html/Blur.html
@@ -38,9 +38,24 @@
 <li><a href="Blur.html#Fn_Blur_tableStats">tableStats</a></li>
 <li><a href="Blur.html#Fn_Blur_terms">terms</a></li>
 </ul>
+<a href="Blur.html#Svc_Lucene">Lucene</a><br/>
+<ul>
+<li><a href="Blur.html#Fn_Lucene_addDocuments">addDocuments</a></li>
+<li><a href="Blur.html#Fn_Lucene_closeReadSession">closeReadSession</a></li>
+<li><a href="Blur.html#Fn_Lucene_commit">commit</a></li>
+<li><a href="Blur.html#Fn_Lucene_deleteDocuments">deleteDocuments</a></li>
+<li><a href="Blur.html#Fn_Lucene_deleteDocumentsByQueries">deleteDocumentsByQueries</a></li>
+<li><a href="Blur.html#Fn_Lucene_doc">doc</a></li>
+<li><a href="Blur.html#Fn_Lucene_openReadSession">openReadSession</a></li>
+<li><a href="Blur.html#Fn_Lucene_openWriteSession">openWriteSession</a></li>
+<li><a href="Blur.html#Fn_Lucene_rollback">rollback</a></li>
+<li><a href="Blur.html#Fn_Lucene_search">search</a></li>
+<li><a href="Blur.html#Fn_Lucene_updateDocuments">updateDocuments</a></li>
+</ul>
 </td>
 <td><a href="Blur.html#Struct_AlternateColumnDefinition">AlternateColumnDefinition</a><br/>
 <a href="Blur.html#Struct_AnalyzerDefinition">AnalyzerDefinition</a><br/>
+<a href="Blur.html#Struct_Attribute">Attribute</a><br/>
 <a href="Blur.html#Struct_BlurException">BlurException</a><br/>
 <a href="Blur.html#Struct_BlurQuery">BlurQuery</a><br/>
 <a href="Blur.html#Struct_BlurQueryStatus">BlurQueryStatus</a><br/>
@@ -51,11 +66,16 @@
 <a href="Blur.html#Struct_ColumnFamilyDefinition">ColumnFamilyDefinition</a><br/>
 <a href="Blur.html#Struct_ColumnPreCache">ColumnPreCache</a><br/>
 <a href="Blur.html#Struct_CpuTime">CpuTime</a><br/>
+<a href="Blur.html#Struct_DocLocation">DocLocation</a><br/>
+<a href="Blur.html#Struct_Document">Document</a><br/>
 <a href="Blur.html#Struct_ExpertQuery">ExpertQuery</a><br/>
 <a href="Blur.html#Struct_Facet">Facet</a><br/>
 <a href="Blur.html#Struct_FetchRecordResult">FetchRecordResult</a><br/>
 <a href="Blur.html#Struct_FetchResult">FetchResult</a><br/>
 <a href="Blur.html#Struct_FetchRowResult">FetchRowResult</a><br/>
+<a href="Blur.html#Struct_Field">Field</a><br/>
+<a href="Blur.html#Struct_QueryArgs">QueryArgs</a><br/>
+<a href="Blur.html#Struct_QuerySession">QuerySession</a><br/>
 <a href="Blur.html#Enum_QueryState">QueryState</a><br/>
 <a href="Blur.html#Struct_Record">Record</a><br/>
 <a href="Blur.html#Struct_RecordMutation">RecordMutation</a><br/>
@@ -64,11 +84,19 @@
 <a href="Blur.html#Struct_RowMutation">RowMutation</a><br/>
 <a href="Blur.html#Enum_RowMutationType">RowMutationType</a><br/>
 <a href="Blur.html#Struct_Schema">Schema</a><br/>
+<a href="Blur.html#Struct_ScoreDoc">ScoreDoc</a><br/>
 <a href="Blur.html#Enum_ScoreType">ScoreType</a><br/>
 <a href="Blur.html#Struct_Selector">Selector</a><br/>
+<a href="Blur.html#Struct_Session">Session</a><br/>
 <a href="Blur.html#Struct_SimpleQuery">SimpleQuery</a><br/>
+<a href="Blur.html#Struct_Sort">Sort</a><br/>
+<a href="Blur.html#Struct_SortField">SortField</a><br/>
+<a href="Blur.html#Enum_SortType">SortType</a><br/>
+<a href="Blur.html#Enum_TYPE">TYPE</a><br/>
 <a href="Blur.html#Struct_TableDescriptor">TableDescriptor</a><br/>
 <a href="Blur.html#Struct_TableStats">TableStats</a><br/>
+<a href="Blur.html#Struct_Term">Term</a><br/>
+<a href="Blur.html#Struct_TopFieldDocs">TopFieldDocs</a><br/>
 </td>
 <td><code></code></td>
 </tr></table>
@@ -117,6 +145,31 @@ APPEND_COLUMN_VALUES - Append the columns in the Record mutation to the Record t
 <tr><td><code>REPLACE_COLUMNS</code></td><td><code>2</code></td></tr>
 <tr><td><code>APPEND_COLUMN_VALUES</code></td><td><code>3</code></td></tr>
 </table></div>
+<div class="definition"><h3 id="Enum_TYPE">Enumeration: TYPE</h3>
+<br/><table>
+<tr><td><code>STRING</code></td><td><code>0</code></td></tr>
+<tr><td><code>BOOL</code></td><td><code>1</code></td></tr>
+<tr><td><code>SHORT</code></td><td><code>2</code></td></tr>
+<tr><td><code>INT</code></td><td><code>3</code></td></tr>
+<tr><td><code>LONG</code></td><td><code>4</code></td></tr>
+<tr><td><code>FLOAT</code></td><td><code>5</code></td></tr>
+<tr><td><code>DOUBLE</code></td><td><code>6</code></td></tr>
+<tr><td><code>BINARY</code></td><td><code>7</code></td></tr>
+</table></div>
+<div class="definition"><h3 id="Enum_SortType">Enumeration: SortType</h3>
+<br/><table>
+<tr><td><code>SCORE</code></td><td><code>0</code></td></tr>
+<tr><td><code>DOC</code></td><td><code>1</code></td></tr>
+<tr><td><code>STRING</code></td><td><code>2</code></td></tr>
+<tr><td><code>INT</code></td><td><code>3</code></td></tr>
+<tr><td><code>FLOAT</code></td><td><code>4</code></td></tr>
+<tr><td><code>LONG</code></td><td><code>5</code></td></tr>
+<tr><td><code>DOUBLE</code></td><td><code>6</code></td></tr>
+<tr><td><code>SHORT</code></td><td><code>7</code></td></tr>
+<tr><td><code>BYTE</code></td><td><code>8</code></td></tr>
+<tr><td><code>STRING_VAL</code></td><td><code>9</code></td></tr>
+<tr><td><code>BYTES</code></td><td><code>10</code></td></tr>
+</table></div>
 <hr/><h2 id="Structs">Data structures</h2>
 <div class="definition"><h3 id="Struct_BlurException">Exception: BlurException</h3>
 <table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
@@ -401,7 +454,66 @@ updates through MapReduce are allowed and in fact they are only allowed if the t
 <tr><td>13</td><td>columnPreCache</td><td><code><a href="Blur.html#Struct_ColumnPreCache">ColumnPreCache</a></code></td><td>Sets what column families and columns to prefetch into block cache on shard open.
 </td><td>default</td><td></td></tr>
 </table><br/><p/>
-<br/></div><hr/><h2 id="Services">Services</h2>
+<br/></div><div class="definition"><h3 id="Struct_Attribute">Struct: Attribute</h3>
+<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<tr><td>1</td><td>name</td><td><code>string</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>2</td><td>value</td><td><code>binary</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>3</td><td>type</td><td><code><a href="Blur.html#Enum_TYPE">TYPE</a></code></td><td></td><td>default</td><td></td></tr>
+</table><br/></div><div class="definition"><h3 id="Struct_Session">Struct: Session</h3>
+<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<tr><td>1</td><td>sessionId</td><td><code>string</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>2</td><td>properties</td><td><code>map&lt;<code>string</code>, <code>string</code>&gt;</code></td><td></td><td>default</td><td></td></tr>
+</table><br/></div><div class="definition"><h3 id="Struct_QuerySession">Struct: QuerySession</h3>
+<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<tr><td>1</td><td>session</td><td><code><a href="Blur.html#Struct_Session">Session</a></code></td><td></td><td>default</td><td></td></tr>
+<tr><td>2</td><td>queryId</td><td><code>string</code></td><td></td><td>default</td><td></td></tr>
+</table><br/></div><div class="definition"><h3 id="Struct_SortField">Struct: SortField</h3>
+<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<tr><td>1</td><td>field</td><td><code>string</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>2</td><td>type</td><td><code><a href="Blur.html#Enum_SortType">SortType</a></code></td><td></td><td>default</td><td></td></tr>
+<tr><td>3</td><td>reverse</td><td><code>bool</code></td><td></td><td>default</td><td></td></tr>
+</table><br/></div><div class="definition"><h3 id="Struct_Sort">Struct: Sort</h3>
+<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<tr><td>1</td><td>fields</td><td><code>list&lt;<code><a href="Blur.html#Struct_SortField">SortField</a></code>&gt;</code></td><td></td><td>default</td><td></td></tr>
+</table><br/></div><div class="definition"><h3 id="Struct_DocLocation">Struct: DocLocation</h3>
+<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<tr><td>1</td><td>doc</td><td><code>i32</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>2</td><td>shardIndex</td><td><code>i32</code></td><td></td><td>default</td><td></td></tr>
+</table><br/></div><div class="definition"><h3 id="Struct_ScoreDoc">Struct: ScoreDoc</h3>
+<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<tr><td>1</td><td>score</td><td><code>double</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>2</td><td>docLocation</td><td><code><a href="Blur.html#Struct_DocLocation">DocLocation</a></code></td><td></td><td>default</td><td></td></tr>
+<tr><td>4</td><td>fields</td><td><code>list&lt;<code>binary</code>&gt;</code></td><td></td><td>default</td><td></td></tr>
+</table><br/></div><div class="definition"><h3 id="Struct_QueryArgs">Struct: QueryArgs</h3>
+<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<tr><td>1</td><td>after</td><td><code><a href="Blur.html#Struct_ScoreDoc">ScoreDoc</a></code></td><td></td><td>default</td><td></td></tr>
+<tr><td>2</td><td>query</td><td><code>binary</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>3</td><td>filter</td><td><code>binary</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>4</td><td>numberToFetch</td><td><code>i32</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>5</td><td>sort</td><td><code><a href="Blur.html#Struct_Sort">Sort</a></code></td><td></td><td>default</td><td></td></tr>
+<tr><td>6</td><td>doDocScores</td><td><code>bool</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>7</td><td>doMaxScore</td><td><code>bool</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>8</td><td>shardIndexes</td><td><code>list&lt;<code>i32</code>&gt;</code></td><td></td><td>default</td><td></td></tr>
+</table><br/></div><div class="definition"><h3 id="Struct_TopFieldDocs">Struct: TopFieldDocs</h3>
+<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<tr><td>1</td><td>totalHits</td><td><code>i64</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>2</td><td>scoreDocs</td><td><code>list&lt;<code><a href="Blur.html#Struct_ScoreDoc">ScoreDoc</a></code>&gt;</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>3</td><td>maxScore</td><td><code>double</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>4</td><td>fields</td><td><code>list&lt;<code><a href="Blur.html#Struct_SortField">SortField</a></code>&gt;</code></td><td></td><td>default</td><td></td></tr>
+</table><br/></div><div class="definition"><h3 id="Struct_Field">Struct: Field</h3>
+<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<tr><td>1</td><td>name</td><td><code>string</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>2</td><td>value</td><td><code>binary</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>3</td><td>type</td><td><code><a href="Blur.html#Enum_TYPE">TYPE</a></code></td><td></td><td>default</td><td></td></tr>
+<tr><td>4</td><td>boost</td><td><code>double</code></td><td></td><td>default</td><td></td></tr>
+</table><br/></div><div class="definition"><h3 id="Struct_Document">Struct: Document</h3>
+<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<tr><td>1</td><td>fields</td><td><code>list&lt;<code><a href="Blur.html#Struct_Field">Field</a></code>&gt;</code></td><td></td><td>default</td><td></td></tr>
+</table><br/></div><div class="definition"><h3 id="Struct_Term">Struct: Term</h3>
+<table><tr><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></tr>
+<tr><td>1</td><td>field</td><td><code>string</code></td><td></td><td>default</td><td></td></tr>
+<tr><td>2</td><td>bytes</td><td><code>binary</code></td><td></td><td>default</td><td></td></tr>
+</table><br/></div><hr/><h2 id="Services">Services</h2>
 <h3 id="Svc_Blur">Service: Blur</h3>
 <p/>
 <br/><div class="definition"><h4 id="Fn_Blur_shardClusterList">Function: Blur.shardClusterList</h4>
@@ -522,4 +634,51 @@ updates through MapReduce are allowed and in fact they are only allowed if the t
 </pre></div><div class="definition"><h4 id="Fn_Blur_configuration">Function: Blur.configuration</h4>
 <pre><code>map&lt;<code>string</code>, <code>string</code>&gt;</code> configuration()
     throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+</pre></div><h3 id="Svc_Lucene">Service: Lucene</h3>
+<div class="extends"><em>extends</em> <code><a href="Blur.html#Svc_Blur">Blur</a></code></div>
+<div class="definition"><h4 id="Fn_Lucene_openReadSession">Function: Lucene.openReadSession</h4>
+<pre><code><a href="Blur.html#Struct_Session">Session</a></code> openReadSession(<code>string</code> table)
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+</pre></div><div class="definition"><h4 id="Fn_Lucene_search">Function: Lucene.search</h4>
+<pre><code><a href="Blur.html#Struct_TopFieldDocs">TopFieldDocs</a></code> search(<code><a href="Blur.html#Struct_Session">Session</a></code> session,
+                    <code><a href="Blur.html#Struct_QueryArgs">QueryArgs</a></code> queryArgs)
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+</pre></div><div class="definition"><h4 id="Fn_Lucene_doc">Function: Lucene.doc</h4>
+<pre><code>list&lt;<code><a href="Blur.html#Struct_Document">Document</a></code>&gt;</code> doc(<code><a href="Blur.html#Struct_Session">Session</a></code> session,
+                   <code>list&lt;<code><a href="Blur.html#Struct_DocLocation">DocLocation</a></code>&gt;</code> docLocations,
+                   <code>set&lt;<code>string</code>&gt;</code> fields)
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+</pre></div><div class="definition"><h4 id="Fn_Lucene_closeReadSession">Function: Lucene.closeReadSession</h4>
+<pre><code>void</code> closeReadSession(<code><a href="Blur.html#Struct_Session">Session</a></code> session)
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+</pre></div><div class="definition"><h4 id="Fn_Lucene_openWriteSession">Function: Lucene.openWriteSession</h4>
+<pre><code><a href="Blur.html#Struct_Session">Session</a></code> openWriteSession(<code>string</code> table)
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+</pre></div><div class="definition"><h4 id="Fn_Lucene_addDocuments">Function: Lucene.addDocuments</h4>
+<pre><code>void</code> addDocuments(<code><a href="Blur.html#Struct_Session">Session</a></code> session,
+                  <code>i32</code> shardIndex,
+                  <code>list&lt;<code><a href="Blur.html#Struct_Document">Document</a></code>&gt;</code> document)
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+</pre></div><div class="definition"><h4 id="Fn_Lucene_deleteDocumentsByQueries">Function: Lucene.deleteDocumentsByQueries</h4>
+<pre><code>void</code> deleteDocumentsByQueries(<code><a href="Blur.html#Struct_Session">Session</a></code> session,
+                              <code>i32</code> shardIndex,
+                              <code>list&lt;<code><a href="Blur.html#Struct_QueryArgs">QueryArgs</a></code>&gt;</code> queries)
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+</pre></div><div class="definition"><h4 id="Fn_Lucene_deleteDocuments">Function: Lucene.deleteDocuments</h4>
+<pre><code>void</code> deleteDocuments(<code><a href="Blur.html#Struct_Session">Session</a></code> session,
+                     <code>i32</code> shardIndex,
+                     <code>list&lt;<code><a href="Blur.html#Struct_Term">Term</a></code>&gt;</code> terms)
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+</pre></div><div class="definition"><h4 id="Fn_Lucene_updateDocuments">Function: Lucene.updateDocuments</h4>
+<pre><code>void</code> updateDocuments(<code><a href="Blur.html#Struct_Session">Session</a></code> session,
+                     <code>i32</code> shardIndex,
+                     <code>list&lt;<code><a href="Blur.html#Struct_Term">Term</a></code>&gt;</code> terms,
+                     <code>list&lt;<code><a href="Blur.html#Struct_Document">Document</a></code>&gt;</code> document)
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+</pre></div><div class="definition"><h4 id="Fn_Lucene_commit">Function: Lucene.commit</h4>
+<pre><code>void</code> commit(<code><a href="Blur.html#Struct_Session">Session</a></code> session)
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
+</pre></div><div class="definition"><h4 id="Fn_Lucene_rollback">Function: Lucene.rollback</h4>
+<pre><code>void</code> rollback(<code><a href="Blur.html#Struct_Session">Session</a></code> session)
+    throws <code><a href="Blur.html#Struct_BlurException">BlurException</a></code>
 </pre></div></body></html>

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/1e930bbc/interface/gen-html/index.html
----------------------------------------------------------------------
diff --git a/interface/gen-html/index.html b/interface/gen-html/index.html
index 04bd944..6c8b4e5 100644
--- a/interface/gen-html/index.html
+++ b/interface/gen-html/index.html
@@ -34,9 +34,24 @@
 <li><a href="Blur.html#Fn_Blur_tableStats">tableStats</a></li>
 <li><a href="Blur.html#Fn_Blur_terms">terms</a></li>
 </ul>
+<a href="Blur.html#Svc_Lucene">Lucene</a><br/>
+<ul>
+<li><a href="Blur.html#Fn_Lucene_addDocuments">addDocuments</a></li>
+<li><a href="Blur.html#Fn_Lucene_closeReadSession">closeReadSession</a></li>
+<li><a href="Blur.html#Fn_Lucene_commit">commit</a></li>
+<li><a href="Blur.html#Fn_Lucene_deleteDocuments">deleteDocuments</a></li>
+<li><a href="Blur.html#Fn_Lucene_deleteDocumentsByQueries">deleteDocumentsByQueries</a></li>
+<li><a href="Blur.html#Fn_Lucene_doc">doc</a></li>
+<li><a href="Blur.html#Fn_Lucene_openReadSession">openReadSession</a></li>
+<li><a href="Blur.html#Fn_Lucene_openWriteSession">openWriteSession</a></li>
+<li><a href="Blur.html#Fn_Lucene_rollback">rollback</a></li>
+<li><a href="Blur.html#Fn_Lucene_search">search</a></li>
+<li><a href="Blur.html#Fn_Lucene_updateDocuments">updateDocuments</a></li>
+</ul>
 </td>
 <td><a href="Blur.html#Struct_AlternateColumnDefinition">AlternateColumnDefinition</a><br/>
 <a href="Blur.html#Struct_AnalyzerDefinition">AnalyzerDefinition</a><br/>
+<a href="Blur.html#Struct_Attribute">Attribute</a><br/>
 <a href="Blur.html#Struct_BlurException">BlurException</a><br/>
 <a href="Blur.html#Struct_BlurQuery">BlurQuery</a><br/>
 <a href="Blur.html#Struct_BlurQueryStatus">BlurQueryStatus</a><br/>
@@ -47,11 +62,16 @@
 <a href="Blur.html#Struct_ColumnFamilyDefinition">ColumnFamilyDefinition</a><br/>
 <a href="Blur.html#Struct_ColumnPreCache">ColumnPreCache</a><br/>
 <a href="Blur.html#Struct_CpuTime">CpuTime</a><br/>
+<a href="Blur.html#Struct_DocLocation">DocLocation</a><br/>
+<a href="Blur.html#Struct_Document">Document</a><br/>
 <a href="Blur.html#Struct_ExpertQuery">ExpertQuery</a><br/>
 <a href="Blur.html#Struct_Facet">Facet</a><br/>
 <a href="Blur.html#Struct_FetchRecordResult">FetchRecordResult</a><br/>
 <a href="Blur.html#Struct_FetchResult">FetchResult</a><br/>
 <a href="Blur.html#Struct_FetchRowResult">FetchRowResult</a><br/>
+<a href="Blur.html#Struct_Field">Field</a><br/>
+<a href="Blur.html#Struct_QueryArgs">QueryArgs</a><br/>
+<a href="Blur.html#Struct_QuerySession">QuerySession</a><br/>
 <a href="Blur.html#Enum_QueryState">QueryState</a><br/>
 <a href="Blur.html#Struct_Record">Record</a><br/>
 <a href="Blur.html#Struct_RecordMutation">RecordMutation</a><br/>
@@ -60,11 +80,19 @@
 <a href="Blur.html#Struct_RowMutation">RowMutation</a><br/>
 <a href="Blur.html#Enum_RowMutationType">RowMutationType</a><br/>
 <a href="Blur.html#Struct_Schema">Schema</a><br/>
+<a href="Blur.html#Struct_ScoreDoc">ScoreDoc</a><br/>
 <a href="Blur.html#Enum_ScoreType">ScoreType</a><br/>
 <a href="Blur.html#Struct_Selector">Selector</a><br/>
+<a href="Blur.html#Struct_Session">Session</a><br/>
 <a href="Blur.html#Struct_SimpleQuery">SimpleQuery</a><br/>
+<a href="Blur.html#Struct_Sort">Sort</a><br/>
+<a href="Blur.html#Struct_SortField">SortField</a><br/>
+<a href="Blur.html#Enum_SortType">SortType</a><br/>
+<a href="Blur.html#Enum_TYPE">TYPE</a><br/>
 <a href="Blur.html#Struct_TableDescriptor">TableDescriptor</a><br/>
 <a href="Blur.html#Struct_TableStats">TableStats</a><br/>
+<a href="Blur.html#Struct_Term">Term</a><br/>
+<a href="Blur.html#Struct_TopFieldDocs">TopFieldDocs</a><br/>
 </td>
 <td><code></code></td>
 </tr></table>

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/1e930bbc/interface/gen-java/org/apache/blur/thrift/generated/Attribute.java
----------------------------------------------------------------------
diff --git a/interface/gen-java/org/apache/blur/thrift/generated/Attribute.java b/interface/gen-java/org/apache/blur/thrift/generated/Attribute.java
new file mode 100644
index 0000000..d0ef013
--- /dev/null
+++ b/interface/gen-java/org/apache/blur/thrift/generated/Attribute.java
@@ -0,0 +1,543 @@
+/**
+ * Autogenerated by Thrift Compiler (0.7.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ */
+package org.apache.blur.thrift.generated;
+
+/**
+ * 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.
+ */
+
+
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Attribute implements org.apache.thrift.TBase<Attribute, Attribute._Fields>, java.io.Serializable, Cloneable {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Attribute");
+
+  private static final org.apache.thrift.protocol.TField NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("name", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField VALUE_FIELD_DESC = new org.apache.thrift.protocol.TField("value", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("type", org.apache.thrift.protocol.TType.I32, (short)3);
+
+  public String name; // required
+  public ByteBuffer value; // required
+  /**
+   * 
+   * @see TYPE
+   */
+  public TYPE type; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    NAME((short)1, "name"),
+    VALUE((short)2, "value"),
+    /**
+     * 
+     * @see TYPE
+     */
+    TYPE((short)3, "type");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // NAME
+          return NAME;
+        case 2: // VALUE
+          return VALUE;
+        case 3: // TYPE
+          return TYPE;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.NAME, new org.apache.thrift.meta_data.FieldMetaData("name", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.VALUE, new org.apache.thrift.meta_data.FieldMetaData("value", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING        , true)));
+    tmpMap.put(_Fields.TYPE, new org.apache.thrift.meta_data.FieldMetaData("type", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, TYPE.class)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Attribute.class, metaDataMap);
+  }
+
+  public Attribute() {
+  }
+
+  public Attribute(
+    String name,
+    ByteBuffer value,
+    TYPE type)
+  {
+    this();
+    this.name = name;
+    this.value = value;
+    this.type = type;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public Attribute(Attribute other) {
+    if (other.isSetName()) {
+      this.name = other.name;
+    }
+    if (other.isSetValue()) {
+      this.value = org.apache.thrift.TBaseHelper.copyBinary(other.value);
+;
+    }
+    if (other.isSetType()) {
+      this.type = other.type;
+    }
+  }
+
+  public Attribute deepCopy() {
+    return new Attribute(this);
+  }
+
+  @Override
+  public void clear() {
+    this.name = null;
+    this.value = null;
+    this.type = null;
+  }
+
+  public String getName() {
+    return this.name;
+  }
+
+  public Attribute setName(String name) {
+    this.name = name;
+    return this;
+  }
+
+  public void unsetName() {
+    this.name = null;
+  }
+
+  /** Returns true if field name is set (has been assigned a value) and false otherwise */
+  public boolean isSetName() {
+    return this.name != null;
+  }
+
+  public void setNameIsSet(boolean value) {
+    if (!value) {
+      this.name = null;
+    }
+  }
+
+  public byte[] getValue() {
+    setValue(org.apache.thrift.TBaseHelper.rightSize(value));
+    return value == null ? null : value.array();
+  }
+
+  public ByteBuffer bufferForValue() {
+    return value;
+  }
+
+  public Attribute setValue(byte[] value) {
+    setValue(value == null ? (ByteBuffer)null : ByteBuffer.wrap(value));
+    return this;
+  }
+
+  public Attribute setValue(ByteBuffer value) {
+    this.value = value;
+    return this;
+  }
+
+  public void unsetValue() {
+    this.value = null;
+  }
+
+  /** Returns true if field value is set (has been assigned a value) and false otherwise */
+  public boolean isSetValue() {
+    return this.value != null;
+  }
+
+  public void setValueIsSet(boolean value) {
+    if (!value) {
+      this.value = null;
+    }
+  }
+
+  /**
+   * 
+   * @see TYPE
+   */
+  public TYPE getType() {
+    return this.type;
+  }
+
+  /**
+   * 
+   * @see TYPE
+   */
+  public Attribute setType(TYPE type) {
+    this.type = type;
+    return this;
+  }
+
+  public void unsetType() {
+    this.type = null;
+  }
+
+  /** Returns true if field type is set (has been assigned a value) and false otherwise */
+  public boolean isSetType() {
+    return this.type != null;
+  }
+
+  public void setTypeIsSet(boolean value) {
+    if (!value) {
+      this.type = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case NAME:
+      if (value == null) {
+        unsetName();
+      } else {
+        setName((String)value);
+      }
+      break;
+
+    case VALUE:
+      if (value == null) {
+        unsetValue();
+      } else {
+        setValue((ByteBuffer)value);
+      }
+      break;
+
+    case TYPE:
+      if (value == null) {
+        unsetType();
+      } else {
+        setType((TYPE)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case NAME:
+      return getName();
+
+    case VALUE:
+      return getValue();
+
+    case TYPE:
+      return getType();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case NAME:
+      return isSetName();
+    case VALUE:
+      return isSetValue();
+    case TYPE:
+      return isSetType();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof Attribute)
+      return this.equals((Attribute)that);
+    return false;
+  }
+
+  public boolean equals(Attribute that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_name = true && this.isSetName();
+    boolean that_present_name = true && that.isSetName();
+    if (this_present_name || that_present_name) {
+      if (!(this_present_name && that_present_name))
+        return false;
+      if (!this.name.equals(that.name))
+        return false;
+    }
+
+    boolean this_present_value = true && this.isSetValue();
+    boolean that_present_value = true && that.isSetValue();
+    if (this_present_value || that_present_value) {
+      if (!(this_present_value && that_present_value))
+        return false;
+      if (!this.value.equals(that.value))
+        return false;
+    }
+
+    boolean this_present_type = true && this.isSetType();
+    boolean that_present_type = true && that.isSetType();
+    if (this_present_type || that_present_type) {
+      if (!(this_present_type && that_present_type))
+        return false;
+      if (!this.type.equals(that.type))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return 0;
+  }
+
+  public int compareTo(Attribute other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+    Attribute typedOther = (Attribute)other;
+
+    lastComparison = Boolean.valueOf(isSetName()).compareTo(typedOther.isSetName());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetName()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.name, typedOther.name);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetValue()).compareTo(typedOther.isSetValue());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetValue()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.value, typedOther.value);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetType()).compareTo(typedOther.isSetType());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetType()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.type, typedOther.type);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    org.apache.thrift.protocol.TField field;
+    iprot.readStructBegin();
+    while (true)
+    {
+      field = iprot.readFieldBegin();
+      if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+        break;
+      }
+      switch (field.id) {
+        case 1: // NAME
+          if (field.type == org.apache.thrift.protocol.TType.STRING) {
+            this.name = iprot.readString();
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        case 2: // VALUE
+          if (field.type == org.apache.thrift.protocol.TType.STRING) {
+            this.value = iprot.readBinary();
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        case 3: // TYPE
+          if (field.type == org.apache.thrift.protocol.TType.I32) {
+            this.type = TYPE.findByValue(iprot.readI32());
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        default:
+          org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+      }
+      iprot.readFieldEnd();
+    }
+    iprot.readStructEnd();
+
+    // check for required fields of primitive type, which can't be checked in the validate method
+    validate();
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    validate();
+
+    oprot.writeStructBegin(STRUCT_DESC);
+    if (this.name != null) {
+      oprot.writeFieldBegin(NAME_FIELD_DESC);
+      oprot.writeString(this.name);
+      oprot.writeFieldEnd();
+    }
+    if (this.value != null) {
+      oprot.writeFieldBegin(VALUE_FIELD_DESC);
+      oprot.writeBinary(this.value);
+      oprot.writeFieldEnd();
+    }
+    if (this.type != null) {
+      oprot.writeFieldBegin(TYPE_FIELD_DESC);
+      oprot.writeI32(this.type.getValue());
+      oprot.writeFieldEnd();
+    }
+    oprot.writeFieldStop();
+    oprot.writeStructEnd();
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("Attribute(");
+    boolean first = true;
+
+    sb.append("name:");
+    if (this.name == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.name);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("value:");
+    if (this.value == null) {
+      sb.append("null");
+    } else {
+      org.apache.thrift.TBaseHelper.toString(this.value, sb);
+    }
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("type:");
+    if (this.type == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.type);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/1e930bbc/interface/gen-java/org/apache/blur/thrift/generated/Blur.java
----------------------------------------------------------------------
diff --git a/interface/gen-java/org/apache/blur/thrift/generated/Blur.java b/interface/gen-java/org/apache/blur/thrift/generated/Blur.java
index b23b71a..3309288 100644
--- a/interface/gen-java/org/apache/blur/thrift/generated/Blur.java
+++ b/interface/gen-java/org/apache/blur/thrift/generated/Blur.java
@@ -2954,13 +2954,13 @@ public class Blur {
           case 0: // SUCCESS
             if (field.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list83 = iprot.readListBegin();
-                this.success = new ArrayList<String>(_list83.size);
-                for (int _i84 = 0; _i84 < _list83.size; ++_i84)
+                org.apache.thrift.protocol.TList _list112 = iprot.readListBegin();
+                this.success = new ArrayList<String>(_list112.size);
+                for (int _i113 = 0; _i113 < _list112.size; ++_i113)
                 {
-                  String _elem85; // required
-                  _elem85 = iprot.readString();
-                  this.success.add(_elem85);
+                  String _elem114; // required
+                  _elem114 = iprot.readString();
+                  this.success.add(_elem114);
                 }
                 iprot.readListEnd();
               }
@@ -2994,9 +2994,9 @@ public class Blur {
         oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, this.success.size()));
-          for (String _iter86 : this.success)
+          for (String _iter115 : this.success)
           {
-            oprot.writeString(_iter86);
+            oprot.writeString(_iter115);
           }
           oprot.writeListEnd();
         }
@@ -3673,13 +3673,13 @@ public class Blur {
           case 0: // SUCCESS
             if (field.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list87 = iprot.readListBegin();
-                this.success = new ArrayList<String>(_list87.size);
-                for (int _i88 = 0; _i88 < _list87.size; ++_i88)
+                org.apache.thrift.protocol.TList _list116 = iprot.readListBegin();
+                this.success = new ArrayList<String>(_list116.size);
+                for (int _i117 = 0; _i117 < _list116.size; ++_i117)
                 {
-                  String _elem89; // required
-                  _elem89 = iprot.readString();
-                  this.success.add(_elem89);
+                  String _elem118; // required
+                  _elem118 = iprot.readString();
+                  this.success.add(_elem118);
                 }
                 iprot.readListEnd();
               }
@@ -3713,9 +3713,9 @@ public class Blur {
         oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, this.success.size()));
-          for (String _iter90 : this.success)
+          for (String _iter119 : this.success)
           {
-            oprot.writeString(_iter90);
+            oprot.writeString(_iter119);
           }
           oprot.writeListEnd();
         }
@@ -4297,13 +4297,13 @@ public class Blur {
           case 0: // SUCCESS
             if (field.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list91 = iprot.readListBegin();
-                this.success = new ArrayList<String>(_list91.size);
-                for (int _i92 = 0; _i92 < _list91.size; ++_i92)
+                org.apache.thrift.protocol.TList _list120 = iprot.readListBegin();
+                this.success = new ArrayList<String>(_list120.size);
+                for (int _i121 = 0; _i121 < _list120.size; ++_i121)
                 {
-                  String _elem93; // required
-                  _elem93 = iprot.readString();
-                  this.success.add(_elem93);
+                  String _elem122; // required
+                  _elem122 = iprot.readString();
+                  this.success.add(_elem122);
                 }
                 iprot.readListEnd();
               }
@@ -4337,9 +4337,9 @@ public class Blur {
         oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, this.success.size()));
-          for (String _iter94 : this.success)
+          for (String _iter123 : this.success)
           {
-            oprot.writeString(_iter94);
+            oprot.writeString(_iter123);
           }
           oprot.writeListEnd();
         }
@@ -5021,15 +5021,15 @@ public class Blur {
           case 0: // SUCCESS
             if (field.type == org.apache.thrift.protocol.TType.MAP) {
               {
-                org.apache.thrift.protocol.TMap _map95 = iprot.readMapBegin();
-                this.success = new HashMap<String,String>(2*_map95.size);
-                for (int _i96 = 0; _i96 < _map95.size; ++_i96)
+                org.apache.thrift.protocol.TMap _map124 = iprot.readMapBegin();
+                this.success = new HashMap<String,String>(2*_map124.size);
+                for (int _i125 = 0; _i125 < _map124.size; ++_i125)
                 {
-                  String _key97; // required
-                  String _val98; // required
-                  _key97 = iprot.readString();
-                  _val98 = iprot.readString();
-                  this.success.put(_key97, _val98);
+                  String _key126; // required
+                  String _val127; // required
+                  _key126 = iprot.readString();
+                  _val127 = iprot.readString();
+                  this.success.put(_key126, _val127);
                 }
                 iprot.readMapEnd();
               }
@@ -5063,10 +5063,10 @@ public class Blur {
         oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, this.success.size()));
-          for (Map.Entry<String, String> _iter99 : this.success.entrySet())
+          for (Map.Entry<String, String> _iter128 : this.success.entrySet())
           {
-            oprot.writeString(_iter99.getKey());
-            oprot.writeString(_iter99.getValue());
+            oprot.writeString(_iter128.getKey());
+            oprot.writeString(_iter128.getValue());
           }
           oprot.writeMapEnd();
         }
@@ -5648,13 +5648,13 @@ public class Blur {
           case 0: // SUCCESS
             if (field.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list100 = iprot.readListBegin();
-                this.success = new ArrayList<String>(_list100.size);
-                for (int _i101 = 0; _i101 < _list100.size; ++_i101)
+                org.apache.thrift.protocol.TList _list129 = iprot.readListBegin();
+                this.success = new ArrayList<String>(_list129.size);
+                for (int _i130 = 0; _i130 < _list129.size; ++_i130)
                 {
-                  String _elem102; // required
-                  _elem102 = iprot.readString();
-                  this.success.add(_elem102);
+                  String _elem131; // required
+                  _elem131 = iprot.readString();
+                  this.success.add(_elem131);
                 }
                 iprot.readListEnd();
               }
@@ -5688,9 +5688,9 @@ public class Blur {
         oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, this.success.size()));
-          for (String _iter103 : this.success)
+          for (String _iter132 : this.success)
           {
-            oprot.writeString(_iter103);
+            oprot.writeString(_iter132);
           }
           oprot.writeListEnd();
         }
@@ -6367,13 +6367,13 @@ public class Blur {
           case 0: // SUCCESS
             if (field.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list104 = iprot.readListBegin();
-                this.success = new ArrayList<String>(_list104.size);
-                for (int _i105 = 0; _i105 < _list104.size; ++_i105)
+                org.apache.thrift.protocol.TList _list133 = iprot.readListBegin();
+                this.success = new ArrayList<String>(_list133.size);
+                for (int _i134 = 0; _i134 < _list133.size; ++_i134)
                 {
-                  String _elem106; // required
-                  _elem106 = iprot.readString();
-                  this.success.add(_elem106);
+                  String _elem135; // required
+                  _elem135 = iprot.readString();
+                  this.success.add(_elem135);
                 }
                 iprot.readListEnd();
               }
@@ -6407,9 +6407,9 @@ public class Blur {
         oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, this.success.size()));
-          for (String _iter107 : this.success)
+          for (String _iter136 : this.success)
           {
-            oprot.writeString(_iter107);
+            oprot.writeString(_iter136);
           }
           oprot.writeListEnd();
         }
@@ -9225,14 +9225,14 @@ public class Blur {
           case 0: // SUCCESS
             if (field.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list108 = iprot.readListBegin();
-                this.success = new ArrayList<BlurQueryStatus>(_list108.size);
-                for (int _i109 = 0; _i109 < _list108.size; ++_i109)
+                org.apache.thrift.protocol.TList _list137 = iprot.readListBegin();
+                this.success = new ArrayList<BlurQueryStatus>(_list137.size);
+                for (int _i138 = 0; _i138 < _list137.size; ++_i138)
                 {
-                  BlurQueryStatus _elem110; // required
-                  _elem110 = new BlurQueryStatus();
-                  _elem110.read(iprot);
-                  this.success.add(_elem110);
+                  BlurQueryStatus _elem139; // required
+                  _elem139 = new BlurQueryStatus();
+                  _elem139.read(iprot);
+                  this.success.add(_elem139);
                 }
                 iprot.readListEnd();
               }
@@ -9266,9 +9266,9 @@ public class Blur {
         oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, this.success.size()));
-          for (BlurQueryStatus _iter111 : this.success)
+          for (BlurQueryStatus _iter140 : this.success)
           {
-            _iter111.write(oprot);
+            _iter140.write(oprot);
           }
           oprot.writeListEnd();
         }
@@ -9945,13 +9945,13 @@ public class Blur {
           case 0: // SUCCESS
             if (field.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list112 = iprot.readListBegin();
-                this.success = new ArrayList<Long>(_list112.size);
-                for (int _i113 = 0; _i113 < _list112.size; ++_i113)
+                org.apache.thrift.protocol.TList _list141 = iprot.readListBegin();
+                this.success = new ArrayList<Long>(_list141.size);
+                for (int _i142 = 0; _i142 < _list141.size; ++_i142)
                 {
-                  long _elem114; // required
-                  _elem114 = iprot.readI64();
-                  this.success.add(_elem114);
+                  long _elem143; // required
+                  _elem143 = iprot.readI64();
+                  this.success.add(_elem143);
                 }
                 iprot.readListEnd();
               }
@@ -9985,9 +9985,9 @@ public class Blur {
         oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.I64, this.success.size()));
-          for (long _iter115 : this.success)
+          for (long _iter144 : this.success)
           {
-            oprot.writeI64(_iter115);
+            oprot.writeI64(_iter144);
           }
           oprot.writeListEnd();
         }
@@ -13841,13 +13841,13 @@ public class Blur {
           case 0: // SUCCESS
             if (field.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list116 = iprot.readListBegin();
-                this.success = new ArrayList<String>(_list116.size);
-                for (int _i117 = 0; _i117 < _list116.size; ++_i117)
+                org.apache.thrift.protocol.TList _list145 = iprot.readListBegin();
+                this.success = new ArrayList<String>(_list145.size);
+                for (int _i146 = 0; _i146 < _list145.size; ++_i146)
                 {
-                  String _elem118; // required
-                  _elem118 = iprot.readString();
-                  this.success.add(_elem118);
+                  String _elem147; // required
+                  _elem147 = iprot.readString();
+                  this.success.add(_elem147);
                 }
                 iprot.readListEnd();
               }
@@ -13881,9 +13881,9 @@ public class Blur {
         oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, this.success.size()));
-          for (String _iter119 : this.success)
+          for (String _iter148 : this.success)
           {
-            oprot.writeString(_iter119);
+            oprot.writeString(_iter148);
           }
           oprot.writeListEnd();
         }
@@ -16513,14 +16513,14 @@ public class Blur {
           case 1: // MUTATIONS
             if (field.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list120 = iprot.readListBegin();
-                this.mutations = new ArrayList<RowMutation>(_list120.size);
-                for (int _i121 = 0; _i121 < _list120.size; ++_i121)
+                org.apache.thrift.protocol.TList _list149 = iprot.readListBegin();
+                this.mutations = new ArrayList<RowMutation>(_list149.size);
+                for (int _i150 = 0; _i150 < _list149.size; ++_i150)
                 {
-                  RowMutation _elem122; // required
-                  _elem122 = new RowMutation();
-                  _elem122.read(iprot);
-                  this.mutations.add(_elem122);
+                  RowMutation _elem151; // required
+                  _elem151 = new RowMutation();
+                  _elem151.read(iprot);
+                  this.mutations.add(_elem151);
                 }
                 iprot.readListEnd();
               }
@@ -16547,9 +16547,9 @@ public class Blur {
         oprot.writeFieldBegin(MUTATIONS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, this.mutations.size()));
-          for (RowMutation _iter123 : this.mutations)
+          for (RowMutation _iter152 : this.mutations)
           {
-            _iter123.write(oprot);
+            _iter152.write(oprot);
           }
           oprot.writeListEnd();
         }
@@ -21254,15 +21254,15 @@ public class Blur {
           case 0: // SUCCESS
             if (field.type == org.apache.thrift.protocol.TType.MAP) {
               {
-                org.apache.thrift.protocol.TMap _map124 = iprot.readMapBegin();
-                this.success = new HashMap<String,String>(2*_map124.size);
-                for (int _i125 = 0; _i125 < _map124.size; ++_i125)
+                org.apache.thrift.protocol.TMap _map153 = iprot.readMapBegin();
+                this.success = new HashMap<String,String>(2*_map153.size);
+                for (int _i154 = 0; _i154 < _map153.size; ++_i154)
                 {
-                  String _key126; // required
-                  String _val127; // required
-                  _key126 = iprot.readString();
-                  _val127 = iprot.readString();
-                  this.success.put(_key126, _val127);
+                  String _key155; // required
+                  String _val156; // required
+                  _key155 = iprot.readString();
+                  _val156 = iprot.readString();
+                  this.success.put(_key155, _val156);
                 }
                 iprot.readMapEnd();
               }
@@ -21296,10 +21296,10 @@ public class Blur {
         oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, this.success.size()));
-          for (Map.Entry<String, String> _iter128 : this.success.entrySet())
+          for (Map.Entry<String, String> _iter157 : this.success.entrySet())
           {
-            oprot.writeString(_iter128.getKey());
-            oprot.writeString(_iter128.getValue());
+            oprot.writeString(_iter157.getKey());
+            oprot.writeString(_iter157.getValue());
           }
           oprot.writeMapEnd();
         }

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/1e930bbc/interface/gen-java/org/apache/blur/thrift/generated/DocLocation.java
----------------------------------------------------------------------
diff --git a/interface/gen-java/org/apache/blur/thrift/generated/DocLocation.java b/interface/gen-java/org/apache/blur/thrift/generated/DocLocation.java
new file mode 100644
index 0000000..2462ffb
--- /dev/null
+++ b/interface/gen-java/org/apache/blur/thrift/generated/DocLocation.java
@@ -0,0 +1,422 @@
+/**
+ * Autogenerated by Thrift Compiler (0.7.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ */
+package org.apache.blur.thrift.generated;
+
+/**
+ * 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.
+ */
+
+
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DocLocation implements org.apache.thrift.TBase<DocLocation, DocLocation._Fields>, java.io.Serializable, Cloneable {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("DocLocation");
+
+  private static final org.apache.thrift.protocol.TField DOC_FIELD_DESC = new org.apache.thrift.protocol.TField("doc", org.apache.thrift.protocol.TType.I32, (short)1);
+  private static final org.apache.thrift.protocol.TField SHARD_INDEX_FIELD_DESC = new org.apache.thrift.protocol.TField("shardIndex", org.apache.thrift.protocol.TType.I32, (short)2);
+
+  public int doc; // required
+  public int shardIndex; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    DOC((short)1, "doc"),
+    SHARD_INDEX((short)2, "shardIndex");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // DOC
+          return DOC;
+        case 2: // SHARD_INDEX
+          return SHARD_INDEX;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+  private static final int __DOC_ISSET_ID = 0;
+  private static final int __SHARDINDEX_ISSET_ID = 1;
+  private BitSet __isset_bit_vector = new BitSet(2);
+
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.DOC, new org.apache.thrift.meta_data.FieldMetaData("doc", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+    tmpMap.put(_Fields.SHARD_INDEX, new org.apache.thrift.meta_data.FieldMetaData("shardIndex", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(DocLocation.class, metaDataMap);
+  }
+
+  public DocLocation() {
+  }
+
+  public DocLocation(
+    int doc,
+    int shardIndex)
+  {
+    this();
+    this.doc = doc;
+    setDocIsSet(true);
+    this.shardIndex = shardIndex;
+    setShardIndexIsSet(true);
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public DocLocation(DocLocation other) {
+    __isset_bit_vector.clear();
+    __isset_bit_vector.or(other.__isset_bit_vector);
+    this.doc = other.doc;
+    this.shardIndex = other.shardIndex;
+  }
+
+  public DocLocation deepCopy() {
+    return new DocLocation(this);
+  }
+
+  @Override
+  public void clear() {
+    setDocIsSet(false);
+    this.doc = 0;
+    setShardIndexIsSet(false);
+    this.shardIndex = 0;
+  }
+
+  public int getDoc() {
+    return this.doc;
+  }
+
+  public DocLocation setDoc(int doc) {
+    this.doc = doc;
+    setDocIsSet(true);
+    return this;
+  }
+
+  public void unsetDoc() {
+    __isset_bit_vector.clear(__DOC_ISSET_ID);
+  }
+
+  /** Returns true if field doc is set (has been assigned a value) and false otherwise */
+  public boolean isSetDoc() {
+    return __isset_bit_vector.get(__DOC_ISSET_ID);
+  }
+
+  public void setDocIsSet(boolean value) {
+    __isset_bit_vector.set(__DOC_ISSET_ID, value);
+  }
+
+  public int getShardIndex() {
+    return this.shardIndex;
+  }
+
+  public DocLocation setShardIndex(int shardIndex) {
+    this.shardIndex = shardIndex;
+    setShardIndexIsSet(true);
+    return this;
+  }
+
+  public void unsetShardIndex() {
+    __isset_bit_vector.clear(__SHARDINDEX_ISSET_ID);
+  }
+
+  /** Returns true if field shardIndex is set (has been assigned a value) and false otherwise */
+  public boolean isSetShardIndex() {
+    return __isset_bit_vector.get(__SHARDINDEX_ISSET_ID);
+  }
+
+  public void setShardIndexIsSet(boolean value) {
+    __isset_bit_vector.set(__SHARDINDEX_ISSET_ID, value);
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case DOC:
+      if (value == null) {
+        unsetDoc();
+      } else {
+        setDoc((Integer)value);
+      }
+      break;
+
+    case SHARD_INDEX:
+      if (value == null) {
+        unsetShardIndex();
+      } else {
+        setShardIndex((Integer)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case DOC:
+      return Integer.valueOf(getDoc());
+
+    case SHARD_INDEX:
+      return Integer.valueOf(getShardIndex());
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case DOC:
+      return isSetDoc();
+    case SHARD_INDEX:
+      return isSetShardIndex();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof DocLocation)
+      return this.equals((DocLocation)that);
+    return false;
+  }
+
+  public boolean equals(DocLocation that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_doc = true;
+    boolean that_present_doc = true;
+    if (this_present_doc || that_present_doc) {
+      if (!(this_present_doc && that_present_doc))
+        return false;
+      if (this.doc != that.doc)
+        return false;
+    }
+
+    boolean this_present_shardIndex = true;
+    boolean that_present_shardIndex = true;
+    if (this_present_shardIndex || that_present_shardIndex) {
+      if (!(this_present_shardIndex && that_present_shardIndex))
+        return false;
+      if (this.shardIndex != that.shardIndex)
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return 0;
+  }
+
+  public int compareTo(DocLocation other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+    DocLocation typedOther = (DocLocation)other;
+
+    lastComparison = Boolean.valueOf(isSetDoc()).compareTo(typedOther.isSetDoc());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDoc()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.doc, typedOther.doc);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetShardIndex()).compareTo(typedOther.isSetShardIndex());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetShardIndex()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.shardIndex, typedOther.shardIndex);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    org.apache.thrift.protocol.TField field;
+    iprot.readStructBegin();
+    while (true)
+    {
+      field = iprot.readFieldBegin();
+      if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+        break;
+      }
+      switch (field.id) {
+        case 1: // DOC
+          if (field.type == org.apache.thrift.protocol.TType.I32) {
+            this.doc = iprot.readI32();
+            setDocIsSet(true);
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        case 2: // SHARD_INDEX
+          if (field.type == org.apache.thrift.protocol.TType.I32) {
+            this.shardIndex = iprot.readI32();
+            setShardIndexIsSet(true);
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        default:
+          org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+      }
+      iprot.readFieldEnd();
+    }
+    iprot.readStructEnd();
+
+    // check for required fields of primitive type, which can't be checked in the validate method
+    validate();
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    validate();
+
+    oprot.writeStructBegin(STRUCT_DESC);
+    oprot.writeFieldBegin(DOC_FIELD_DESC);
+    oprot.writeI32(this.doc);
+    oprot.writeFieldEnd();
+    oprot.writeFieldBegin(SHARD_INDEX_FIELD_DESC);
+    oprot.writeI32(this.shardIndex);
+    oprot.writeFieldEnd();
+    oprot.writeFieldStop();
+    oprot.writeStructEnd();
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("DocLocation(");
+    boolean first = true;
+
+    sb.append("doc:");
+    sb.append(this.doc);
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("shardIndex:");
+    sb.append(this.shardIndex);
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
+      __isset_bit_vector = new BitSet(1);
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/1e930bbc/interface/gen-java/org/apache/blur/thrift/generated/Document.java
----------------------------------------------------------------------
diff --git a/interface/gen-java/org/apache/blur/thrift/generated/Document.java b/interface/gen-java/org/apache/blur/thrift/generated/Document.java
new file mode 100644
index 0000000..36d8272
--- /dev/null
+++ b/interface/gen-java/org/apache/blur/thrift/generated/Document.java
@@ -0,0 +1,376 @@
+/**
+ * Autogenerated by Thrift Compiler (0.7.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ */
+package org.apache.blur.thrift.generated;
+
+/**
+ * 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.
+ */
+
+
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Document implements org.apache.thrift.TBase<Document, Document._Fields>, java.io.Serializable, Cloneable {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Document");
+
+  private static final org.apache.thrift.protocol.TField FIELDS_FIELD_DESC = new org.apache.thrift.protocol.TField("fields", org.apache.thrift.protocol.TType.LIST, (short)1);
+
+  public List<Field> fields; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    FIELDS((short)1, "fields");
+
+    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
+
+    static {
+      for (_Fields field : EnumSet.allOf(_Fields.class)) {
+        byName.put(field.getFieldName(), field);
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, or null if its not found.
+     */
+    public static _Fields findByThriftId(int fieldId) {
+      switch(fieldId) {
+        case 1: // FIELDS
+          return FIELDS;
+        default:
+          return null;
+      }
+    }
+
+    /**
+     * Find the _Fields constant that matches fieldId, throwing an exception
+     * if it is not found.
+     */
+    public static _Fields findByThriftIdOrThrow(int fieldId) {
+      _Fields fields = findByThriftId(fieldId);
+      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+      return fields;
+    }
+
+    /**
+     * Find the _Fields constant that matches name, or null if its not found.
+     */
+    public static _Fields findByName(String name) {
+      return byName.get(name);
+    }
+
+    private final short _thriftId;
+    private final String _fieldName;
+
+    _Fields(short thriftId, String fieldName) {
+      _thriftId = thriftId;
+      _fieldName = fieldName;
+    }
+
+    public short getThriftFieldId() {
+      return _thriftId;
+    }
+
+    public String getFieldName() {
+      return _fieldName;
+    }
+  }
+
+  // isset id assignments
+
+  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
+  static {
+    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
+    tmpMap.put(_Fields.FIELDS, new org.apache.thrift.meta_data.FieldMetaData("fields", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Field.class))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Document.class, metaDataMap);
+  }
+
+  public Document() {
+  }
+
+  public Document(
+    List<Field> fields)
+  {
+    this();
+    this.fields = fields;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public Document(Document other) {
+    if (other.isSetFields()) {
+      List<Field> __this__fields = new ArrayList<Field>();
+      for (Field other_element : other.fields) {
+        __this__fields.add(new Field(other_element));
+      }
+      this.fields = __this__fields;
+    }
+  }
+
+  public Document deepCopy() {
+    return new Document(this);
+  }
+
+  @Override
+  public void clear() {
+    this.fields = null;
+  }
+
+  public int getFieldsSize() {
+    return (this.fields == null) ? 0 : this.fields.size();
+  }
+
+  public java.util.Iterator<Field> getFieldsIterator() {
+    return (this.fields == null) ? null : this.fields.iterator();
+  }
+
+  public void addToFields(Field elem) {
+    if (this.fields == null) {
+      this.fields = new ArrayList<Field>();
+    }
+    this.fields.add(elem);
+  }
+
+  public List<Field> getFields() {
+    return this.fields;
+  }
+
+  public Document setFields(List<Field> fields) {
+    this.fields = fields;
+    return this;
+  }
+
+  public void unsetFields() {
+    this.fields = null;
+  }
+
+  /** Returns true if field fields is set (has been assigned a value) and false otherwise */
+  public boolean isSetFields() {
+    return this.fields != null;
+  }
+
+  public void setFieldsIsSet(boolean value) {
+    if (!value) {
+      this.fields = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case FIELDS:
+      if (value == null) {
+        unsetFields();
+      } else {
+        setFields((List<Field>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case FIELDS:
+      return getFields();
+
+    }
+    throw new IllegalStateException();
+  }
+
+  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
+  public boolean isSet(_Fields field) {
+    if (field == null) {
+      throw new IllegalArgumentException();
+    }
+
+    switch (field) {
+    case FIELDS:
+      return isSetFields();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof Document)
+      return this.equals((Document)that);
+    return false;
+  }
+
+  public boolean equals(Document that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_fields = true && this.isSetFields();
+    boolean that_present_fields = true && that.isSetFields();
+    if (this_present_fields || that_present_fields) {
+      if (!(this_present_fields && that_present_fields))
+        return false;
+      if (!this.fields.equals(that.fields))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    return 0;
+  }
+
+  public int compareTo(Document other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+    Document typedOther = (Document)other;
+
+    lastComparison = Boolean.valueOf(isSetFields()).compareTo(typedOther.isSetFields());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetFields()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.fields, typedOther.fields);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    return 0;
+  }
+
+  public _Fields fieldForId(int fieldId) {
+    return _Fields.findByThriftId(fieldId);
+  }
+
+  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
+    org.apache.thrift.protocol.TField field;
+    iprot.readStructBegin();
+    while (true)
+    {
+      field = iprot.readFieldBegin();
+      if (field.type == org.apache.thrift.protocol.TType.STOP) { 
+        break;
+      }
+      switch (field.id) {
+        case 1: // FIELDS
+          if (field.type == org.apache.thrift.protocol.TType.LIST) {
+            {
+              org.apache.thrift.protocol.TList _list108 = iprot.readListBegin();
+              this.fields = new ArrayList<Field>(_list108.size);
+              for (int _i109 = 0; _i109 < _list108.size; ++_i109)
+              {
+                Field _elem110; // required
+                _elem110 = new Field();
+                _elem110.read(iprot);
+                this.fields.add(_elem110);
+              }
+              iprot.readListEnd();
+            }
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
+        default:
+          org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+      }
+      iprot.readFieldEnd();
+    }
+    iprot.readStructEnd();
+
+    // check for required fields of primitive type, which can't be checked in the validate method
+    validate();
+  }
+
+  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
+    validate();
+
+    oprot.writeStructBegin(STRUCT_DESC);
+    if (this.fields != null) {
+      oprot.writeFieldBegin(FIELDS_FIELD_DESC);
+      {
+        oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, this.fields.size()));
+        for (Field _iter111 : this.fields)
+        {
+          _iter111.write(oprot);
+        }
+        oprot.writeListEnd();
+      }
+      oprot.writeFieldEnd();
+    }
+    oprot.writeFieldStop();
+    oprot.writeStructEnd();
+  }
+
+  @Override
+  public String toString() {
+    StringBuilder sb = new StringBuilder("Document(");
+    boolean first = true;
+
+    sb.append("fields:");
+    if (this.fields == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.fields);
+    }
+    first = false;
+    sb.append(")");
+    return sb.toString();
+  }
+
+  public void validate() throws org.apache.thrift.TException {
+    // check for required fields
+  }
+
+  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
+    try {
+      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
+    try {
+      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
+    } catch (org.apache.thrift.TException te) {
+      throw new java.io.IOException(te);
+    }
+  }
+
+}
+


Mime
View raw message