Author: buildbot
Date: Sun Nov 23 17:43:07 2014
New Revision: 930230

Log:
Staging update by buildbot for lucy

Added:
    websites/staging/lucy/trunk/content/docs/c/
    websites/staging/lucy/trunk/content/docs/c/lucy.html
    websites/staging/lucy/trunk/content/docs/c/lucy_ANDQuery.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Analyzer.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Architecture.html
    websites/staging/lucy/trunk/content/docs/c/lucy_BackgroundMerger.html
    websites/staging/lucy/trunk/content/docs/c/lucy_BitCollector.html
    websites/staging/lucy/trunk/content/docs/c/lucy_BitVector.html
    websites/staging/lucy/trunk/content/docs/c/lucy_BlobType.html
    websites/staging/lucy/trunk/content/docs/c/lucy_CaseFolder.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Collector.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Compiler.html
    websites/staging/lucy/trunk/content/docs/c/lucy_DataReader.html
    websites/staging/lucy/trunk/content/docs/c/lucy_DataWriter.html
    websites/staging/lucy/trunk/content/docs/c/lucy_DeletionsWriter.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Doc.html
    websites/staging/lucy/trunk/content/docs/c/lucy_DocReader.html
    websites/staging/lucy/trunk/content/docs/c/lucy_EasyAnalyzer.html
    websites/staging/lucy/trunk/content/docs/c/lucy_FSFolder.html
    websites/staging/lucy/trunk/content/docs/c/lucy_FieldType.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Folder.html
    websites/staging/lucy/trunk/content/docs/c/lucy_FullTextType.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Highlighter.html
    websites/staging/lucy/trunk/content/docs/c/lucy_HitDoc.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Hits.html
    websites/staging/lucy/trunk/content/docs/c/lucy_IndexManager.html
    websites/staging/lucy/trunk/content/docs/c/lucy_IndexReader.html
    websites/staging/lucy/trunk/content/docs/c/lucy_IndexSearcher.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Indexer.html
    websites/staging/lucy/trunk/content/docs/c/lucy_LeafQuery.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Lexicon.html
    websites/staging/lucy/trunk/content/docs/c/lucy_LexiconReader.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Lock.html
    websites/staging/lucy/trunk/content/docs/c/lucy_LockErr.html
    websites/staging/lucy/trunk/content/docs/c/lucy_LockFactory.html
    websites/staging/lucy/trunk/content/docs/c/lucy_MatchAllQuery.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Matcher.html
    websites/staging/lucy/trunk/content/docs/c/lucy_NOTQuery.html
    websites/staging/lucy/trunk/content/docs/c/lucy_NoMatchQuery.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Normalizer.html
    websites/staging/lucy/trunk/content/docs/c/lucy_ORQuery.html
    websites/staging/lucy/trunk/content/docs/c/lucy_PhraseQuery.html
    websites/staging/lucy/trunk/content/docs/c/lucy_PolyAnalyzer.html
    websites/staging/lucy/trunk/content/docs/c/lucy_PolyQuery.html
    websites/staging/lucy/trunk/content/docs/c/lucy_PolyReader.html
    websites/staging/lucy/trunk/content/docs/c/lucy_PolySearcher.html
    websites/staging/lucy/trunk/content/docs/c/lucy_PostingList.html
    websites/staging/lucy/trunk/content/docs/c/lucy_PostingListReader.html
    websites/staging/lucy/trunk/content/docs/c/lucy_ProximityQuery.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Query.html
    websites/staging/lucy/trunk/content/docs/c/lucy_QueryParser.html
    websites/staging/lucy/trunk/content/docs/c/lucy_RAMFolder.html
    websites/staging/lucy/trunk/content/docs/c/lucy_RangeQuery.html
    websites/staging/lucy/trunk/content/docs/c/lucy_RegexTokenizer.html
    websites/staging/lucy/trunk/content/docs/c/lucy_RequiredOptionalQuery.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Schema.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Searcher.html
    websites/staging/lucy/trunk/content/docs/c/lucy_SegReader.html
    websites/staging/lucy/trunk/content/docs/c/lucy_SegWriter.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Segment.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Similarity.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Snapshot.html
    websites/staging/lucy/trunk/content/docs/c/lucy_SnowballStemmer.html
    websites/staging/lucy/trunk/content/docs/c/lucy_SnowballStopFilter.html
    websites/staging/lucy/trunk/content/docs/c/lucy_SortRule.html
    websites/staging/lucy/trunk/content/docs/c/lucy_SortSpec.html
    websites/staging/lucy/trunk/content/docs/c/lucy_Span.html
    websites/staging/lucy/trunk/content/docs/c/lucy_StandardTokenizer.html
    websites/staging/lucy/trunk/content/docs/c/lucy_StringType.html
    websites/staging/lucy/trunk/content/docs/c/lucy_TermQuery.html
Modified:
    websites/staging/lucy/trunk/content/   (props changed)

Propchange: websites/staging/lucy/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Sun Nov 23 17:43:07 2014
@@ -1 +1 @@
-1629096
+1641230

Added: websites/staging/lucy/trunk/content/docs/c/lucy.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy.html Sun Nov 23 17:43:07 
2014
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>C API documentation for Lucy</h1>
+<ul>
+<li><a href="lucy_Analyzer.html">Lucy::Analysis::Analyzer</a></li>
+<li><a href="lucy_CaseFolder.html">Lucy::Analysis::CaseFolder</a></li>
+<li><a href="lucy_EasyAnalyzer.html">Lucy::Analysis::EasyAnalyzer</a></li>
+<li><a href="lucy_Normalizer.html">Lucy::Analysis::Normalizer</a></li>
+<li><a href="lucy_PolyAnalyzer.html">Lucy::Analysis::PolyAnalyzer</a></li>
+<li><a href="lucy_RegexTokenizer.html">Lucy::Analysis::RegexTokenizer</a></li>
+<li><a 
href="lucy_SnowballStemmer.html">Lucy::Analysis::SnowballStemmer</a></li>
+<li><a 
href="lucy_SnowballStopFilter.html">Lucy::Analysis::SnowballStopFilter</a></li>
+<li><a 
href="lucy_StandardTokenizer.html">Lucy::Analysis::StandardTokenizer</a></li>
+<li><a href="lucy_Doc.html">Lucy::Document::Doc</a></li>
+<li><a href="lucy_HitDoc.html">Lucy::Document::HitDoc</a></li>
+<li><a href="lucy_Highlighter.html">Lucy::Highlight::Highlighter</a></li>
+<li><a href="lucy_BackgroundMerger.html">Lucy::Index::BackgroundMerger</a></li>
+<li><a href="lucy_DataReader.html">Lucy::Index::DataReader</a></li>
+<li><a href="lucy_DataWriter.html">Lucy::Index::DataWriter</a></li>
+<li><a href="lucy_DeletionsWriter.html">Lucy::Index::DeletionsWriter</a></li>
+<li><a href="lucy_DocReader.html">Lucy::Index::DocReader</a></li>
+<li><a href="lucy_IndexManager.html">Lucy::Index::IndexManager</a></li>
+<li><a href="lucy_IndexReader.html">Lucy::Index::IndexReader</a></li>
+<li><a href="lucy_Indexer.html">Lucy::Index::Indexer</a></li>
+<li><a href="lucy_Lexicon.html">Lucy::Index::Lexicon</a></li>
+<li><a href="lucy_LexiconReader.html">Lucy::Index::LexiconReader</a></li>
+<li><a href="lucy_PolyReader.html">Lucy::Index::PolyReader</a></li>
+<li><a href="lucy_PostingList.html">Lucy::Index::PostingList</a></li>
+<li><a 
href="lucy_PostingListReader.html">Lucy::Index::PostingListReader</a></li>
+<li><a href="lucy_SegReader.html">Lucy::Index::SegReader</a></li>
+<li><a href="lucy_SegWriter.html">Lucy::Index::SegWriter</a></li>
+<li><a href="lucy_Segment.html">Lucy::Index::Segment</a></li>
+<li><a href="lucy_Similarity.html">Lucy::Index::Similarity</a></li>
+<li><a href="lucy_Snapshot.html">Lucy::Index::Snapshot</a></li>
+<li><a href="lucy_BitVector.html">Lucy::Object::BitVector</a></li>
+<li><a href="lucy_Architecture.html">Lucy::Plan::Architecture</a></li>
+<li><a href="lucy_BlobType.html">Lucy::Plan::BlobType</a></li>
+<li><a href="lucy_FieldType.html">Lucy::Plan::FieldType</a></li>
+<li><a href="lucy_FullTextType.html">Lucy::Plan::FullTextType</a></li>
+<li><a href="lucy_Schema.html">Lucy::Plan::Schema</a></li>
+<li><a href="lucy_StringType.html">Lucy::Plan::StringType</a></li>
+<li><a href="lucy_ANDQuery.html">Lucy::Search::ANDQuery</a></li>
+<li><a href="lucy_Collector.html">Lucy::Search::Collector</a></li>
+<li><a 
href="lucy_BitCollector.html">Lucy::Search::Collector::BitCollector</a></li>
+<li><a href="lucy_Compiler.html">Lucy::Search::Compiler</a></li>
+<li><a href="lucy_Hits.html">Lucy::Search::Hits</a></li>
+<li><a href="lucy_IndexSearcher.html">Lucy::Search::IndexSearcher</a></li>
+<li><a href="lucy_LeafQuery.html">Lucy::Search::LeafQuery</a></li>
+<li><a href="lucy_MatchAllQuery.html">Lucy::Search::MatchAllQuery</a></li>
+<li><a href="lucy_Matcher.html">Lucy::Search::Matcher</a></li>
+<li><a href="lucy_NOTQuery.html">Lucy::Search::NOTQuery</a></li>
+<li><a href="lucy_NoMatchQuery.html">Lucy::Search::NoMatchQuery</a></li>
+<li><a href="lucy_ORQuery.html">Lucy::Search::ORQuery</a></li>
+<li><a href="lucy_PhraseQuery.html">Lucy::Search::PhraseQuery</a></li>
+<li><a href="lucy_PolyQuery.html">Lucy::Search::PolyQuery</a></li>
+<li><a href="lucy_PolySearcher.html">Lucy::Search::PolySearcher</a></li>
+<li><a href="lucy_Query.html">Lucy::Search::Query</a></li>
+<li><a href="lucy_QueryParser.html">Lucy::Search::QueryParser</a></li>
+<li><a href="lucy_RangeQuery.html">Lucy::Search::RangeQuery</a></li>
+<li><a 
href="lucy_RequiredOptionalQuery.html">Lucy::Search::RequiredOptionalQuery</a></li>
+<li><a href="lucy_Searcher.html">Lucy::Search::Searcher</a></li>
+<li><a href="lucy_SortRule.html">Lucy::Search::SortRule</a></li>
+<li><a href="lucy_SortSpec.html">Lucy::Search::SortSpec</a></li>
+<li><a href="lucy_Span.html">Lucy::Search::Span</a></li>
+<li><a href="lucy_TermQuery.html">Lucy::Search::TermQuery</a></li>
+<li><a href="lucy_FSFolder.html">Lucy::Store::FSFolder</a></li>
+<li><a href="lucy_Folder.html">Lucy::Store::Folder</a></li>
+<li><a href="lucy_Lock.html">Lucy::Store::Lock</a></li>
+<li><a href="lucy_LockErr.html">Lucy::Store::LockErr</a></li>
+<li><a href="lucy_LockFactory.html">Lucy::Store::LockFactory</a></li>
+<li><a href="lucy_RAMFolder.html">Lucy::Store::RAMFolder</a></li>
+<li><a href="lucy_ProximityQuery.html">LucyX::Search::ProximityQuery</a></li>
+</ul>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_ANDQuery.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_ANDQuery.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_ANDQuery.html Sun Nov 23 
17:43:07 2014
@@ -0,0 +1,148 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Search::ANDQuery</h1>
+<h2>Name</h2>
+<p>Lucy::Search::ANDQuery - Intersect multiple result sets.</p>
+<h2>Description</h2>
+<p>ANDQuery is a composite <a href="lucy_Query.html">Query</a> which matches
+only when all of its children match, so its result set is the intersection
+of their result sets.  Documents which match receive a summed score.</p>
+<h2>Functions</h2>
+<dl>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_ANDQuery*
+<strong>lucy_ANDQuery_init</strong>(
+    lucy_ANDQuery* <strong>self</strong>,
+    <a href="cfish_VArray.html">cfish_VArray*</a> <strong>children</strong>
+);
+</code></pre>
+<dl>
+<dt><emph>children</emph></dt>
+<dd><p>An array of child Queries.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Methods inherited from Lucy::Search::PolyQuery</h3><dl>
+<dt>Add_Child</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_PolyQuery_Add_Child</strong>(
+    lucy_PolyQuery* <strong>self</strong>,
+    <a href="lucy_Query.html">lucy_Query*</a> <strong>query</strong>
+);
+</code></pre>
+<p>Add a child Query node.</p>
+</dd>
+</dl>
+<h3>Methods inherited from Lucy::Search::Query</h3><dl>
+<dt>Make_Compiler</dt>
+<dd>
+<pre><code><a href="lucy_Compiler.html">lucy_Compiler*</a> // incremented
+<strong>LUCY_Query_Make_Compiler</strong>(
+    lucy_Query* <strong>self</strong>,
+    <a href="lucy_Searcher.html">lucy_Searcher*</a> <strong>searcher</strong>,
+    float <strong>boost</strong>,
+    bool <strong>subordinate</strong>
+);
+</code></pre>
+<p>Abstract factory method returning a Compiler derived from this Query.</p>
+<dl>
+<dt><emph>searcher</emph></dt>
+<dd><p>A Searcher.</p>
+</dd>
+<dt><emph>boost</emph></dt>
+<dd><p>A scoring multiplier.</p>
+</dd>
+<dt><emph>subordinate</emph></dt>
+<dd><p>Indicates whether the Query is a subquery (as
+opposed to a top-level query).  If false, the implementation must
+invoke Normalize() on the newly minted Compiler object before returning
+it.</p>
+</dd>
+</dl>
+</dd>
+<dt>Set_Boost</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Query_Set_Boost</strong>(
+    lucy_Query* <strong>self</strong>,
+    float <strong>boost</strong>
+);
+</code></pre>
+<p>Set the Query's boost.</p>
+</dd>
+<dt>Get_Boost</dt>
+<dd>
+<pre><code>float
+<strong>LUCY_Query_Get_Boost</strong>(
+    lucy_Query* <strong>self</strong>
+);
+</code></pre>
+<p>Get the Query's boost.</p>
+</dd>
+<dt>Serialize</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Query_Serialize</strong>(
+    lucy_Query* <strong>self</strong>,
+    <a href="lucy_OutStream.html">lucy_OutStream*</a> 
<strong>outstream</strong>
+);
+</code></pre>
+</dd>
+<dt>Deserialize</dt>
+<dd>
+<pre><code>lucy_Query* // incremented
+<strong>LUCY_Query_Deserialize</strong>(
+    lucy_Query* <strong>self</strong>, // decremented
+    <a href="lucy_InStream.html">lucy_InStream*</a> <strong>instream</strong>
+);
+</code></pre>
+</dd>
+<dt>Dump</dt>
+<dd>
+<pre><code><a href="cfish_Obj.html">cfish_Obj*</a> // incremented
+<strong>LUCY_Query_Dump</strong>(
+    lucy_Query* <strong>self</strong>
+);
+</code></pre>
+</dd>
+<dt>Load</dt>
+<dd>
+<pre><code><a href="cfish_Obj.html">cfish_Obj*</a> // incremented
+<strong>LUCY_Query_Load</strong>(
+    lucy_Query* <strong>self</strong>,
+    <a href="cfish_Obj.html">cfish_Obj*</a> <strong>dump</strong>
+);
+</code></pre>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Search::ANDQuery is a <a 
href="lucy_PolyQuery.html">Lucy::Search::PolyQuery</a> is a <a 
href="lucy_Query.html">Lucy::Search::Query</a> is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_Analyzer.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_Analyzer.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_Analyzer.html Sun Nov 23 
17:43:07 2014
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Analysis::Analyzer</h1>
+<h2>Name</h2>
+<p>Lucy::Analysis::Analyzer - Tokenize/modify/filter text.</p>
+<h2>Description</h2>
+<p>An Analyzer is a filter which processes text, transforming it from one form
+into another.  For instance, an analyzer might break up a long text into
+smaller pieces (<a href="lucy_RegexTokenizer.html">RegexTokenizer</a>), or it
+might perform case folding to facilitate case-insensitive search
+(<a href="lucy_Normalizer.html">Normalizer</a>).</p>
+<h2>Functions</h2>
+<dl>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_Analyzer*
+<strong>lucy_Analyzer_init</strong>(
+    lucy_Analyzer* <strong>self</strong>
+);
+</code></pre>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Abstract methods</h3>
+<dl>
+<dt>Transform</dt>
+<dd>
+<pre><code><a href="lucy_Inversion.html">lucy_Inversion*</a> // incremented
+<strong>LUCY_Analyzer_Transform</strong>(
+    lucy_Analyzer* <strong>self</strong>,
+    <a href="lucy_Inversion.html">lucy_Inversion*</a> 
<strong>inversion</strong>
+);
+</code></pre>
+<p>Take a single <a href="lucy_Inversion.html">Inversion</a> as input
+and returns an Inversion, either the same one (presumably transformed
+in some way), or a new one.</p>
+</dd>
+</dl>
+<h3>Novel methods</h3>
+<dl>
+<dt>Transform_Text</dt>
+<dd>
+<pre><code><a href="lucy_Inversion.html">lucy_Inversion*</a> // incremented
+<strong>LUCY_Analyzer_Transform_Text</strong>(
+    lucy_Analyzer* <strong>self</strong>,
+    <a href="cfish_String.html">cfish_String*</a> <strong>text</strong>
+);
+</code></pre>
+<p>Kick off an analysis chain, creating an Inversion from string input.
+The default implementation simply creates an initial Inversion with a
+single Token, then calls Transform(), but occasionally subclasses will
+provide an optimized implementation which minimizes string copies.</p>
+</dd>
+<dt>Split</dt>
+<dd>
+<pre><code><a href="cfish_VArray.html">cfish_VArray*</a> // incremented
+<strong>LUCY_Analyzer_Split</strong>(
+    lucy_Analyzer* <strong>self</strong>,
+    <a href="cfish_String.html">cfish_String*</a> <strong>text</strong>
+);
+</code></pre>
+<p>Analyze text and return an array of token texts.</p>
+</dd>
+<dt>Dump</dt>
+<dd>
+<pre><code><a href="cfish_Obj.html">cfish_Obj*</a> // incremented
+<strong>LUCY_Analyzer_Dump</strong>(
+    lucy_Analyzer* <strong>self</strong>
+);
+</code></pre>
+</dd>
+<dt>Load</dt>
+<dd>
+<pre><code><a href="cfish_Obj.html">cfish_Obj*</a> // incremented
+<strong>LUCY_Analyzer_Load</strong>(
+    lucy_Analyzer* <strong>self</strong>,
+    <a href="cfish_Obj.html">cfish_Obj*</a> <strong>dump</strong>
+);
+</code></pre>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Analysis::Analyzer is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_Architecture.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_Architecture.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_Architecture.html Sun Nov 
23 17:43:07 2014
@@ -0,0 +1,299 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Plan::Architecture</h1>
+<h2>Name</h2>
+<p>Lucy::Plan::Architecture - Configure major components of an index.</p>
+<h2>Description</h2>
+<p>By default, a Lucy index consists of several main parts: lexicon,
+postings, stored documents, deletions, and highlight data.  The readers and
+writers for that data are spawned by Architecture.  Each component operates
+at the segment level; Architecture's factory methods are used to build up
+<a href="lucy_SegWriter.html">SegWriter</a> and
+<a href="lucy_SegReader.html">SegReader</a>.</p>
+<h2>Functions</h2>
+<dl>
+<dt>new</dt>
+<dd>
+<pre><code>lucy_Architecture* // incremented
+<strong>lucy_Arch_new</strong>(void);
+</code></pre>
+</dd>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_Architecture*
+<strong>lucy_Arch_init</strong>(
+    lucy_Architecture* <strong>self</strong>
+);
+</code></pre>
+<p>Constructor.  Takes no arguments.</p>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Novel methods</h3>
+<dl>
+<dt>Init_Seg_Writer</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Init_Seg_Writer</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegWriter.html">lucy_SegWriter*</a> <strong>writer</strong>
+);
+</code></pre>
+<p>Initialize a SegWriter, adding DataWriter components.</p>
+<dl>
+<dt><emph>writer</emph></dt>
+<dd><p>A SegWriter.</p>
+</dd>
+</dl>
+</dd>
+<dt>Register_Lexicon_Writer</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Register_Lexicon_Writer</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegWriter.html">lucy_SegWriter*</a> <strong>writer</strong>
+);
+</code></pre>
+<p>Spawn a LexiconWriter and Register() it with the supplied SegWriter,
+but don't add it to the SegWriter's writer stack.</p>
+<dl>
+<dt><emph>writer</emph></dt>
+<dd><p>A SegWriter.</p>
+</dd>
+</dl>
+</dd>
+<dt>Register_Posting_List_Writer</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Register_Posting_List_Writer</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegWriter.html">lucy_SegWriter*</a> <strong>writer</strong>
+);
+</code></pre>
+<p>Spawn a PostingListWriter and Register() it with the supplied
+SegWriter, adding it to the SegWriter's writer stack.  The SegWriter
+must contain a previously registered LexiconWriter.</p>
+<dl>
+<dt><emph>writer</emph></dt>
+<dd><p>A SegWriter.</p>
+</dd>
+</dl>
+</dd>
+<dt>Register_Doc_Writer</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Register_Doc_Writer</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegWriter.html">lucy_SegWriter*</a> <strong>writer</strong>
+);
+</code></pre>
+<p>Spawn a DataWriter and Register() it with the supplied SegWriter,
+adding it to the SegWriter's writer stack.</p>
+<dl>
+<dt><emph>writer</emph></dt>
+<dd><p>A SegWriter.</p>
+</dd>
+</dl>
+</dd>
+<dt>Register_Sort_Writer</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Register_Sort_Writer</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegWriter.html">lucy_SegWriter*</a> <strong>writer</strong>
+);
+</code></pre>
+<p>Spawn a SortWriter and Register() it with the supplied SegWriter,
+adding it to the SegWriter's writer stack.</p>
+<dl>
+<dt><emph>writer</emph></dt>
+<dd><p>A SegWriter.</p>
+</dd>
+</dl>
+</dd>
+<dt>Register_Highlight_Writer</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Register_Highlight_Writer</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegWriter.html">lucy_SegWriter*</a> <strong>writer</strong>
+);
+</code></pre>
+<p>Spawn a HighlightWriter and Register() it with the supplied SegWriter,
+adding it to the SegWriter's writer stack.</p>
+<dl>
+<dt><emph>writer</emph></dt>
+<dd><p>A SegWriter.</p>
+</dd>
+</dl>
+</dd>
+<dt>Register_Deletions_Writer</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Register_Deletions_Writer</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegWriter.html">lucy_SegWriter*</a> <strong>writer</strong>
+);
+</code></pre>
+<p>Spawn a DeletionsWriter and Register() it with the supplied SegWriter,
+also calling Set_Del_Writer().</p>
+<dl>
+<dt><emph>writer</emph></dt>
+<dd><p>A SegWriter.</p>
+</dd>
+</dl>
+</dd>
+<dt>Init_Seg_Reader</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Init_Seg_Reader</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>
+);
+</code></pre>
+<p>Initialize a SegReader, registering DataReaders.</p>
+</dd>
+<dt>Register_Doc_Reader</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Register_Doc_Reader</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>
+);
+</code></pre>
+<p>Spawn a DocReader and Register() it with the supplied SegReader.</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>A SegReader.</p>
+</dd>
+</dl>
+</dd>
+<dt>Register_Posting_List_Reader</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Register_Posting_List_Reader</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>
+);
+</code></pre>
+<p>Spawn a PostingListReader and Register() it with the supplied SegReader.</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>A SegReader.</p>
+</dd>
+</dl>
+</dd>
+<dt>Register_Sort_Reader</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Register_Sort_Reader</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>
+);
+</code></pre>
+<p>Spawn a SortReader and Register() it with the supplied SegReader.</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>A SegReader.</p>
+</dd>
+</dl>
+</dd>
+<dt>Register_Highlight_Reader</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Register_Highlight_Reader</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>
+);
+</code></pre>
+<p>Spawn a HighlightReader and Register() it with the supplied
+SegReader.</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>A SegReader.</p>
+</dd>
+</dl>
+</dd>
+<dt>Register_Lexicon_Reader</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Register_Lexicon_Reader</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>
+);
+</code></pre>
+<p>Spawn a LexiconReader and Register() it with the supplied SegReader.</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>A SegReader.</p>
+</dd>
+</dl>
+</dd>
+<dt>Register_Deletions_Reader</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Arch_Register_Deletions_Reader</strong>(
+    lucy_Architecture* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>
+);
+</code></pre>
+<p>Spawn a DeletionsReader and Register() it with the supplied SegReader.</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>A SegReader.</p>
+</dd>
+</dl>
+</dd>
+<dt>Make_Similarity</dt>
+<dd>
+<pre><code><a href="lucy_Similarity.html">lucy_Similarity*</a> // incremented
+<strong>LUCY_Arch_Make_Similarity</strong>(
+    lucy_Architecture* <strong>self</strong>
+);
+</code></pre>
+<p>Factory method for creating a new Similarity object.</p>
+</dd>
+<dt>Index_Interval</dt>
+<dd>
+<pre><code>int32_t
+<strong>LUCY_Arch_Index_Interval</strong>(
+    lucy_Architecture* <strong>self</strong>
+);
+</code></pre>
+</dd>
+<dt>Skip_Interval</dt>
+<dd>
+<pre><code>int32_t
+<strong>LUCY_Arch_Skip_Interval</strong>(
+    lucy_Architecture* <strong>self</strong>
+);
+</code></pre>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Plan::Architecture is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_BackgroundMerger.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_BackgroundMerger.html 
(added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_BackgroundMerger.html Sun 
Nov 23 17:43:07 2014
@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Index::BackgroundMerger</h1>
+<h2>Name</h2>
+<p>Lucy::Index::BackgroundMerger - Consolidate index segments in the 
background.</p>
+<h2>Description</h2>
+<p>Adding documents to an index is usually fast, but every once in a while the
+index must be compacted and an update takes substantially longer to
+complete.  See L&lt;Lucy::Docs::Cookbook::FastUpdates&gt; for how to use
+this class to control worst-case index update performance.</p>
+<p>As with <a href="lucy_Indexer.html">Indexer</a>, see
+L&lt;Lucy::Docs::FileLocking&gt; if your index is on a shared volume.</p>
+<h2>Functions</h2>
+<dl>
+<dt>new</dt>
+<dd>
+<pre><code>lucy_BackgroundMerger* // incremented
+<strong>lucy_BGMerger_new</strong>(
+    <a href="cfish_Obj.html">cfish_Obj*</a> <strong>index</strong>,
+    <a href="lucy_IndexManager.html">lucy_IndexManager*</a> 
<strong>manager</strong>
+);
+</code></pre>
+</dd>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_BackgroundMerger*
+<strong>lucy_BGMerger_init</strong>(
+    lucy_BackgroundMerger* <strong>self</strong>,
+    <a href="cfish_Obj.html">cfish_Obj*</a> <strong>index</strong>,
+    <a href="lucy_IndexManager.html">lucy_IndexManager*</a> 
<strong>manager</strong>
+);
+</code></pre>
+<p>Open a new BackgroundMerger.</p>
+<dl>
+<dt><emph>index</emph></dt>
+<dd><p>Either a string filepath or a Folder.</p>
+</dd>
+<dt><emph>manager</emph></dt>
+<dd><p>An IndexManager.  If not supplied, an IndexManager with
+a 10-second write lock timeout will be created.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Novel methods</h3>
+<dl>
+<dt>Optimize</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BGMerger_Optimize</strong>(
+    lucy_BackgroundMerger* <strong>self</strong>
+);
+</code></pre>
+<p>Optimize the index for search-time performance.  This may take a
+while, as it can involve rewriting large amounts of data.</p>
+</dd>
+<dt>Commit</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BGMerger_Commit</strong>(
+    lucy_BackgroundMerger* <strong>self</strong>
+);
+</code></pre>
+<p>Commit any changes made to the index.  Until this is called, none of
+the changes made during an indexing session are permanent.</p>
+<p>Calls Prepare_Commit() implicitly if it has not already been called.</p>
+</dd>
+<dt>Prepare_Commit</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BGMerger_Prepare_Commit</strong>(
+    lucy_BackgroundMerger* <strong>self</strong>
+);
+</code></pre>
+<p>Perform the expensive setup for Commit() in advance, so that Commit()
+completes quickly.</p>
+<p>Towards the end of Prepare_Commit(), the BackgroundMerger attempts to
+re-acquire the write lock, which is then held until Commit() finishes
+and releases it.</p>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Index::BackgroundMerger is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_BitCollector.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_BitCollector.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_BitCollector.html Sun Nov 
23 17:43:07 2014
@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Search::Collector::BitCollector</h1>
+<h2>Name</h2>
+<p>Lucy::Search::Collector::BitCollector - Collector which records doc nums in 
a BitVector.</p>
+<h2>Description</h2>
+<p>BitCollector is a Collector which saves matching document ids in a
+<a href="lucy_BitVector.html">BitVector</a>.  It is useful for recording the
+entire set of documents which matches a query.</p>
+<h2>Functions</h2>
+<dl>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_BitCollector*
+<strong>lucy_BitColl_init</strong>(
+    lucy_BitCollector* <strong>self</strong>,
+    <a href="lucy_BitVector.html">lucy_BitVector*</a> 
<strong>bit_vector</strong>
+);
+</code></pre>
+<dl>
+<dt><emph>bit_vector</emph></dt>
+<dd><p>A Lucy::Object::BitVector.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Methods inherited from Lucy::Search::Collector</h3><dl>
+<dt>Collect</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Coll_Collect</strong>(
+    lucy_Collector* <strong>self</strong>,
+    int32_t <strong>doc_id</strong>
+);
+</code></pre>
+<p>Do something with a doc id.  (For instance, keep track of the docs
+with the ten highest scores.)</p>
+<dl>
+<dt><emph>doc_id</emph></dt>
+<dd><p>A segment document id.</p>
+</dd>
+</dl>
+</dd>
+<dt>Set_Reader</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Coll_Set_Reader</strong>(
+    lucy_Collector* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>
+);
+</code></pre>
+<p>Setter for &quot;reader&quot;.</p>
+</dd>
+<dt>Set_Base</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Coll_Set_Base</strong>(
+    lucy_Collector* <strong>self</strong>,
+    int32_t <strong>base</strong>
+);
+</code></pre>
+<p>Set the &quot;base&quot; document id, an offset which must be added to the
+<code>doc_id</code> supplied via Collect() to get the doc id for the
+larger index.</p>
+</dd>
+<dt>Need_Score</dt>
+<dd>
+<pre><code>bool
+<strong>LUCY_Coll_Need_Score</strong>(
+    lucy_Collector* <strong>self</strong>
+);
+</code></pre>
+<p>Indicate whether the Collector will call Score() on its Matcher.</p>
+</dd>
+<dt>Set_Matcher</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Coll_Set_Matcher</strong>(
+    lucy_Collector* <strong>self</strong>,
+    <a href="lucy_Matcher.html">lucy_Matcher*</a> <strong>matcher</strong>
+);
+</code></pre>
+<p>Setter for &quot;matcher&quot;.</p>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Search::Collector::BitCollector is a <a 
href="lucy_Collector.html">Lucy::Search::Collector</a> is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_BitVector.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_BitVector.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_BitVector.html Sun Nov 23 
17:43:07 2014
@@ -0,0 +1,254 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Object::BitVector</h1>
+<h2>Name</h2>
+<p>Lucy::Object::BitVector - An array of bits.</p>
+<h2>Description</h2>
+<p>BitVector is a growable array of bits.  All bits are initially zero.</p>
+<h2>Functions</h2>
+<dl>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_BitVector*
+<strong>lucy_BitVec_init</strong>(
+    lucy_BitVector* <strong>self</strong>,
+    uint32_t <strong>capacity</strong>
+);
+</code></pre>
+<dl>
+<dt><emph>capacity</emph></dt>
+<dd><p>The number of bits that the initial array should be
+able to hold.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Novel methods</h3>
+<dl>
+<dt>Get</dt>
+<dd>
+<pre><code>bool
+<strong>LUCY_BitVec_Get</strong>(
+    lucy_BitVector* <strong>self</strong>,
+    uint32_t <strong>tick</strong>
+);
+</code></pre>
+<p>Return true if the bit at <code>tick</code> has been set, false if it
+hasn't (regardless of whether it lies within the bounds of the
+object's capacity).</p>
+<dl>
+<dt><emph>tick</emph></dt>
+<dd><p>The requested bit.</p>
+</dd>
+</dl>
+</dd>
+<dt>Set</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BitVec_Set</strong>(
+    lucy_BitVector* <strong>self</strong>,
+    uint32_t <strong>tick</strong>
+);
+</code></pre>
+<p>Set the bit at <code>tick</code> to 1.</p>
+<dl>
+<dt><emph>tick</emph></dt>
+<dd><p>The bit to be set.</p>
+</dd>
+</dl>
+</dd>
+<dt>Next_Hit</dt>
+<dd>
+<pre><code>int32_t
+<strong>LUCY_BitVec_Next_Hit</strong>(
+    lucy_BitVector* <strong>self</strong>,
+    uint32_t <strong>tick</strong>
+);
+</code></pre>
+<p>Returns the next set bit equal to or greater than <code>tick</code>,
+or -1 if no such bit exists.</p>
+</dd>
+<dt>Clear</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BitVec_Clear</strong>(
+    lucy_BitVector* <strong>self</strong>,
+    uint32_t <strong>tick</strong>
+);
+</code></pre>
+<p>Clear the indicated bit. (i.e. set it to 0).</p>
+<dl>
+<dt><emph>tick</emph></dt>
+<dd><p>The bit to be cleared.</p>
+</dd>
+</dl>
+</dd>
+<dt>Clear_All</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BitVec_Clear_All</strong>(
+    lucy_BitVector* <strong>self</strong>
+);
+</code></pre>
+<p>Clear all bits.</p>
+</dd>
+<dt>Grow</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BitVec_Grow</strong>(
+    lucy_BitVector* <strong>self</strong>,
+    uint32_t <strong>capacity</strong>
+);
+</code></pre>
+<p>If the BitVector does not already have enough room to hold the
+indicated number of bits, allocate more memory so that it can.</p>
+<dl>
+<dt><emph>capacity</emph></dt>
+<dd><p>Least number of bits the BitVector should accomodate.</p>
+</dd>
+</dl>
+</dd>
+<dt>And</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BitVec_And</strong>(
+    lucy_BitVector* <strong>self</strong>,
+    const lucy_BitVector* <strong>other</strong>
+);
+</code></pre>
+<p>Modify the BitVector so that only bits which remain set are those
+which 1) were already set in this BitVector, and 2) were also set in
+the other BitVector.</p>
+<dl>
+<dt><emph>other</emph></dt>
+<dd><p>Another BitVector.</p>
+</dd>
+</dl>
+</dd>
+<dt>Or</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BitVec_Or</strong>(
+    lucy_BitVector* <strong>self</strong>,
+    const lucy_BitVector* <strong>other</strong>
+);
+</code></pre>
+<p>Modify the BitVector, setting all bits which are set in the other
+BitVector if they were not already set.</p>
+<dl>
+<dt><emph>other</emph></dt>
+<dd><p>Another BitVector.</p>
+</dd>
+</dl>
+</dd>
+<dt>Xor</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BitVec_Xor</strong>(
+    lucy_BitVector* <strong>self</strong>,
+    const lucy_BitVector* <strong>other</strong>
+);
+</code></pre>
+<p>Modify the BitVector, performing an XOR operation against the other.</p>
+<dl>
+<dt><emph>other</emph></dt>
+<dd><p>Another BitVector.</p>
+</dd>
+</dl>
+</dd>
+<dt>And_Not</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BitVec_And_Not</strong>(
+    lucy_BitVector* <strong>self</strong>,
+    const lucy_BitVector* <strong>other</strong>
+);
+</code></pre>
+<p>Modify the BitVector, clearing all bits which are set in the other.</p>
+<dl>
+<dt><emph>other</emph></dt>
+<dd><p>Another BitVector.</p>
+</dd>
+</dl>
+</dd>
+<dt>Flip</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BitVec_Flip</strong>(
+    lucy_BitVector* <strong>self</strong>,
+    uint32_t <strong>tick</strong>
+);
+</code></pre>
+<p>Invert the value of a bit.</p>
+<dl>
+<dt><emph>tick</emph></dt>
+<dd><p>The bit to invert.</p>
+</dd>
+</dl>
+</dd>
+<dt>Flip_Block</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_BitVec_Flip_Block</strong>(
+    lucy_BitVector* <strong>self</strong>,
+    uint32_t <strong>offset</strong>,
+    uint32_t <strong>length</strong>
+);
+</code></pre>
+<p>Invert each bit within a contiguous block.</p>
+<dl>
+<dt><emph>offset</emph></dt>
+<dd><p>Lower bound.</p>
+</dd>
+<dt><emph>length</emph></dt>
+<dd><p>The number of bits to flip.</p>
+</dd>
+</dl>
+</dd>
+<dt>Count</dt>
+<dd>
+<pre><code>uint32_t
+<strong>LUCY_BitVec_Count</strong>(
+    lucy_BitVector* <strong>self</strong>
+);
+</code></pre>
+<p>Return a count of the number of set bits.</p>
+</dd>
+<dt>To_Array</dt>
+<dd>
+<pre><code><a href="lucy_I32Array.html">lucy_I32Array*</a> // incremented
+<strong>LUCY_BitVec_To_Array</strong>(
+    lucy_BitVector* <strong>self</strong>
+);
+</code></pre>
+<p>Return an array where each element represents a set bit.</p>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Object::BitVector is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_BlobType.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_BlobType.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_BlobType.html Sun Nov 23 
17:43:07 2014
@@ -0,0 +1,179 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Plan::BlobType</h1>
+<h2>Name</h2>
+<p>Lucy::Plan::BlobType - Default behaviors for binary fields.</p>
+<h2>Description</h2>
+<p>BlobType is an implementation of FieldType tuned for use with fields
+containing binary data, which cannot be indexed or searched -- only stored.</p>
+<h2>Functions</h2>
+<dl>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_BlobType*
+<strong>lucy_BlobType_init</strong>(
+    lucy_BlobType* <strong>self</strong>,
+    bool <strong>stored</strong>
+);
+</code></pre>
+<dl>
+<dt><emph>stored</emph></dt>
+<dd><p>boolean indicating whether the field should be stored.</p>
+</dd>
+</dl>
+</dd>
+<dt>new</dt>
+<dd>
+<pre><code>lucy_BlobType* // incremented
+<strong>lucy_BlobType_new</strong>(
+    bool <strong>stored</strong>
+);
+</code></pre>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Methods inherited from Lucy::Plan::FieldType</h3><dl>
+<dt>Set_Boost</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_FType_Set_Boost</strong>(
+    lucy_FieldType* <strong>self</strong>,
+    float <strong>boost</strong>
+);
+</code></pre>
+<p>Setter for <code>boost</code>.</p>
+</dd>
+<dt>Get_Boost</dt>
+<dd>
+<pre><code>float
+<strong>LUCY_FType_Get_Boost</strong>(
+    lucy_FieldType* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for <code>boost</code>.</p>
+</dd>
+<dt>Set_Indexed</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_FType_Set_Indexed</strong>(
+    lucy_FieldType* <strong>self</strong>,
+    bool <strong>indexed</strong>
+);
+</code></pre>
+<p>Setter for <code>indexed</code>.</p>
+</dd>
+<dt>Indexed</dt>
+<dd>
+<pre><code>bool
+<strong>LUCY_FType_Indexed</strong>(
+    lucy_FieldType* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for <code>indexed</code>.</p>
+</dd>
+<dt>Set_Stored</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_FType_Set_Stored</strong>(
+    lucy_FieldType* <strong>self</strong>,
+    bool <strong>stored</strong>
+);
+</code></pre>
+<p>Setter for <code>stored</code>.</p>
+</dd>
+<dt>Stored</dt>
+<dd>
+<pre><code>bool
+<strong>LUCY_FType_Stored</strong>(
+    lucy_FieldType* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for <code>stored</code>.</p>
+</dd>
+<dt>Set_Sortable</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_FType_Set_Sortable</strong>(
+    lucy_FieldType* <strong>self</strong>,
+    bool <strong>sortable</strong>
+);
+</code></pre>
+<p>Setter for <code>sortable</code>.</p>
+</dd>
+<dt>Sortable</dt>
+<dd>
+<pre><code>bool
+<strong>LUCY_FType_Sortable</strong>(
+    lucy_FieldType* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for <code>sortable</code>.</p>
+</dd>
+<dt>Binary</dt>
+<dd>
+<pre><code>bool
+<strong>LUCY_FType_Binary</strong>(
+    lucy_FieldType* <strong>self</strong>
+);
+</code></pre>
+<p>Indicate whether the field contains binary data.</p>
+</dd>
+<dt>Compare_Values</dt>
+<dd>
+<pre><code>int32_t
+<strong>LUCY_FType_Compare_Values</strong>(
+    lucy_FieldType* <strong>self</strong>,
+    <a href="cfish_Obj.html">cfish_Obj*</a> <strong>a</strong>,
+    <a href="cfish_Obj.html">cfish_Obj*</a> <strong>b</strong>
+);
+</code></pre>
+<p>Compare two values for the field.  The default implementation
+dispatches to the Compare_To() method of argument <code>a</code>.</p>
+<p><strong>Returns:</strong> a negative number if a is &quot;less than&quot; 
b, 0 if they are &quot;equal&quot;,
+and a positive number if a is &quot;greater than&quot; b.</p>
+</dd>
+<dt>Dump</dt>
+<dd>
+<pre><code><a href="cfish_Obj.html">cfish_Obj*</a> // incremented
+<strong>LUCY_FType_Dump</strong>(
+    lucy_FieldType* <strong>self</strong>
+);
+</code></pre>
+</dd>
+<dt>Load</dt>
+<dd>
+<pre><code><a href="cfish_Obj.html">cfish_Obj*</a> // incremented
+<strong>LUCY_FType_Load</strong>(
+    lucy_FieldType* <strong>self</strong>,
+    <a href="cfish_Obj.html">cfish_Obj*</a> <strong>dump</strong>
+);
+</code></pre>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Plan::BlobType is a <a 
href="lucy_FieldType.html">Lucy::Plan::FieldType</a> is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_CaseFolder.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_CaseFolder.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_CaseFolder.html Sun Nov 23 
17:43:07 2014
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Analysis::CaseFolder</h1>
+<h2>Name</h2>
+<p>Lucy::Analysis::CaseFolder - Normalize case, facilitating case-insensitive 
search.</p>
+<h2>Description</h2>
+<p>CaseFolder is DEPRECATED. Use <a href="lucy_Normalizer.html">Normalizer</a>
+instead.</p>
+<p>CaseFolder normalizes text according to Unicode case-folding rules, so that
+searches will be case-insensitive.</p>
+<h2>Functions</h2>
+<dl>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_CaseFolder*
+<strong>lucy_CaseFolder_init</strong>(
+    lucy_CaseFolder* <strong>self</strong>
+);
+</code></pre>
+<p>Constructor.  Takes no arguments.</p>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Methods inherited from Lucy::Analysis::Analyzer</h3><dl>
+<dt>Transform</dt>
+<dd>
+<pre><code><a href="lucy_Inversion.html">lucy_Inversion*</a> // incremented
+<strong>LUCY_Analyzer_Transform</strong>(
+    lucy_Analyzer* <strong>self</strong>,
+    <a href="lucy_Inversion.html">lucy_Inversion*</a> 
<strong>inversion</strong>
+);
+</code></pre>
+<p>Take a single <a href="lucy_Inversion.html">Inversion</a> as input
+and returns an Inversion, either the same one (presumably transformed
+in some way), or a new one.</p>
+</dd>
+<dt>Transform_Text</dt>
+<dd>
+<pre><code><a href="lucy_Inversion.html">lucy_Inversion*</a> // incremented
+<strong>LUCY_Analyzer_Transform_Text</strong>(
+    lucy_Analyzer* <strong>self</strong>,
+    <a href="cfish_String.html">cfish_String*</a> <strong>text</strong>
+);
+</code></pre>
+<p>Kick off an analysis chain, creating an Inversion from string input.
+The default implementation simply creates an initial Inversion with a
+single Token, then calls Transform(), but occasionally subclasses will
+provide an optimized implementation which minimizes string copies.</p>
+</dd>
+<dt>Split</dt>
+<dd>
+<pre><code><a href="cfish_VArray.html">cfish_VArray*</a> // incremented
+<strong>LUCY_Analyzer_Split</strong>(
+    lucy_Analyzer* <strong>self</strong>,
+    <a href="cfish_String.html">cfish_String*</a> <strong>text</strong>
+);
+</code></pre>
+<p>Analyze text and return an array of token texts.</p>
+</dd>
+<dt>Dump</dt>
+<dd>
+<pre><code><a href="cfish_Obj.html">cfish_Obj*</a> // incremented
+<strong>LUCY_Analyzer_Dump</strong>(
+    lucy_Analyzer* <strong>self</strong>
+);
+</code></pre>
+</dd>
+<dt>Load</dt>
+<dd>
+<pre><code><a href="cfish_Obj.html">cfish_Obj*</a> // incremented
+<strong>LUCY_Analyzer_Load</strong>(
+    lucy_Analyzer* <strong>self</strong>,
+    <a href="cfish_Obj.html">cfish_Obj*</a> <strong>dump</strong>
+);
+</code></pre>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Analysis::CaseFolder is a <a 
href="lucy_Analyzer.html">Lucy::Analysis::Analyzer</a> is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_Collector.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_Collector.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_Collector.html Sun Nov 23 
17:43:07 2014
@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Search::Collector</h1>
+<h2>Name</h2>
+<p>Lucy::Search::Collector - Process hits.</p>
+<h2>Description</h2>
+<p>A Collector decides what to do with the hits that a
+<a href="lucy_Matcher.html">Matcher</a> iterates through, based on how the
+abstract Collect() method is implemented.</p>
+<p>Collectors operate on individual segments, but must operate within the
+context of a larger collection.  Each time the collector moves to a new
+segment, Set_Reader(), Set_Base() and Set_Matcher() will be called, and the
+collector must take the updated information into account.</p>
+<h2>Functions</h2>
+<dl>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_Collector*
+<strong>lucy_Coll_init</strong>(
+    lucy_Collector* <strong>self</strong>
+);
+</code></pre>
+<p>Abstract constructor.  Takes no arguments.</p>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Abstract methods</h3>
+<dl>
+<dt>Collect</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Coll_Collect</strong>(
+    lucy_Collector* <strong>self</strong>,
+    int32_t <strong>doc_id</strong>
+);
+</code></pre>
+<p>Do something with a doc id.  (For instance, keep track of the docs
+with the ten highest scores.)</p>
+<dl>
+<dt><emph>doc_id</emph></dt>
+<dd><p>A segment document id.</p>
+</dd>
+</dl>
+</dd>
+<dt>Need_Score</dt>
+<dd>
+<pre><code>bool
+<strong>LUCY_Coll_Need_Score</strong>(
+    lucy_Collector* <strong>self</strong>
+);
+</code></pre>
+<p>Indicate whether the Collector will call Score() on its Matcher.</p>
+</dd>
+</dl>
+<h3>Novel methods</h3>
+<dl>
+<dt>Set_Reader</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Coll_Set_Reader</strong>(
+    lucy_Collector* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>
+);
+</code></pre>
+<p>Setter for &quot;reader&quot;.</p>
+</dd>
+<dt>Set_Base</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Coll_Set_Base</strong>(
+    lucy_Collector* <strong>self</strong>,
+    int32_t <strong>base</strong>
+);
+</code></pre>
+<p>Set the &quot;base&quot; document id, an offset which must be added to the
+<code>doc_id</code> supplied via Collect() to get the doc id for the
+larger index.</p>
+</dd>
+<dt>Set_Matcher</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Coll_Set_Matcher</strong>(
+    lucy_Collector* <strong>self</strong>,
+    <a href="lucy_Matcher.html">lucy_Matcher*</a> <strong>matcher</strong>
+);
+</code></pre>
+<p>Setter for &quot;matcher&quot;.</p>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Search::Collector is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_Compiler.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_Compiler.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_Compiler.html Sun Nov 23 
17:43:07 2014
@@ -0,0 +1,311 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Search::Compiler</h1>
+<h2>Name</h2>
+<p>Lucy::Search::Compiler - Query-to-Matcher compiler.</p>
+<h2>Description</h2>
+<p>The purpose of the Compiler class is to take a specification in the form of
+a <a href="lucy_Query.html">Query</a> object and compile a
+<a href="lucy_Matcher.html">Matcher</a> object that can do real work.</p>
+<p>The simplest Compiler subclasses -- such as those associated with
+constant-scoring Query types -- might simply implement a Make_Matcher()
+method which passes along information verbatim from the Query to the
+Matcher's constructor.</p>
+<p>However it is common for the Compiler to perform some calculations which
+affect it's &quot;weight&quot; -- a floating point multiplier that the Matcher 
will
+factor into each document's score.  If that is the case, then the Compiler
+subclass may wish to override Get_Weight(), Sum_Of_Squared_Weights(), and
+Apply_Norm_Factor().</p>
+<p>Compiling a Matcher is a two stage process.</p>
+<p>The first stage takes place during the Compiler's construction, which is
+where the Query object meets a <a href="lucy_Searcher.html">Searcher</a>
+object for the first time.  Searchers operate on a specific document
+collection and they can tell you certain statistical information about the
+collection -- such as how many total documents are in the collection, or
+how many documents in the collection a particular term is present in.
+Lucy's core Compiler classes plug this information into the classic
+TF/IDF weighting algorithm to adjust the Compiler's weight; custom
+subclasses might do something similar.</p>
+<p>The second stage of compilation is Make_Matcher(), method, which is where
+the Compiler meets a <a href="lucy_SegReader.html">SegReader</a> object.
+SegReaders are associated with a single segment within a single index on a
+single machine, and are thus lower-level than Searchers, which may
+represent a document collection spread out over a search cluster
+(comprising several indexes and many segments).  The Compiler object can
+use new information supplied by the SegReader -- such as whether a term is
+missing from the local index even though it is present within the larger
+collection represented by the Searcher -- when figuring out what to feed to
+the Matchers's constructor, or whether Make_Matcher() should return a
+Matcher at all.</p>
+<h2>Functions</h2>
+<dl>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_Compiler*
+<strong>lucy_Compiler_init</strong>(
+    lucy_Compiler* <strong>self</strong>,
+    <a href="lucy_Query.html">lucy_Query*</a> <strong>parent</strong>,
+    <a href="lucy_Searcher.html">lucy_Searcher*</a> <strong>searcher</strong>,
+    <a href="lucy_Similarity.html">lucy_Similarity*</a> 
<strong>similarity</strong>,
+    float <strong>boost</strong>
+);
+</code></pre>
+<p>Abstract constructor.</p>
+<dl>
+<dt><emph>parent</emph></dt>
+<dd><p>The parent Query.</p>
+</dd>
+<dt><emph>searcher</emph></dt>
+<dd><p>A Lucy::Search::Searcher, such as an
+IndexSearcher.</p>
+</dd>
+<dt><emph>similarity</emph></dt>
+<dd><p>A Similarity.</p>
+</dd>
+<dt><emph>boost</emph></dt>
+<dd><p>An arbitrary scoring multiplier.  Defaults to the boost of
+the parent Query.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Abstract methods</h3>
+<dl>
+<dt>Make_Matcher</dt>
+<dd>
+<pre><code><a href="lucy_Matcher.html">lucy_Matcher*</a> // incremented
+<strong>LUCY_Compiler_Make_Matcher</strong>(
+    lucy_Compiler* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>,
+    bool <strong>need_score</strong>
+);
+</code></pre>
+<p>Factory method returning a Matcher.</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>A SegReader.</p>
+</dd>
+<dt><emph>need_score</emph></dt>
+<dd><p>Indicate whether the Matcher must implement Score().</p>
+</dd>
+</dl>
+<p><strong>Returns:</strong> a Matcher, or NULL if the Matcher would have 
matched no
+documents.</p>
+</dd>
+</dl>
+<h3>Novel methods</h3>
+<dl>
+<dt>Get_Weight</dt>
+<dd>
+<pre><code>float
+<strong>LUCY_Compiler_Get_Weight</strong>(
+    lucy_Compiler* <strong>self</strong>
+);
+</code></pre>
+<p>Return the Compiler's numerical weight, a scoring multiplier.  By
+default, returns the object's boost.</p>
+</dd>
+<dt>Get_Similarity</dt>
+<dd>
+<pre><code><a href="lucy_Similarity.html">lucy_Similarity*</a>
+<strong>LUCY_Compiler_Get_Similarity</strong>(
+    lucy_Compiler* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for the Compiler's Similarity object.</p>
+</dd>
+<dt>Get_Parent</dt>
+<dd>
+<pre><code><a href="lucy_Query.html">lucy_Query*</a>
+<strong>LUCY_Compiler_Get_Parent</strong>(
+    lucy_Compiler* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for the Compiler's parent Query object.</p>
+</dd>
+<dt>Sum_Of_Squared_Weights</dt>
+<dd>
+<pre><code>float
+<strong>LUCY_Compiler_Sum_Of_Squared_Weights</strong>(
+    lucy_Compiler* <strong>self</strong>
+);
+</code></pre>
+<p>Compute and return a raw weighting factor.  (This quantity is used by
+Normalize()).  By default, simply returns 1.0.</p>
+</dd>
+<dt>Apply_Norm_Factor</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Compiler_Apply_Norm_Factor</strong>(
+    lucy_Compiler* <strong>self</strong>,
+    float <strong>factor</strong>
+);
+</code></pre>
+<p>Apply a floating point normalization multiplier.  For a TermCompiler,
+this involves multiplying its own weight by the supplied factor;
+combining classes such as ORCompiler would apply the factor recursively
+to their children.</p>
+<p>The default implementation is a no-op; subclasses may wish to multiply
+their internal weight by the supplied factor.</p>
+<dl>
+<dt><emph>factor</emph></dt>
+<dd><p>The multiplier.</p>
+</dd>
+</dl>
+</dd>
+<dt>Normalize</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Compiler_Normalize</strong>(
+    lucy_Compiler* <strong>self</strong>
+);
+</code></pre>
+<p>Take a newly minted Compiler object and apply query-specific
+normalization factors.  Should be invoked by Query subclasses during
+Make_Compiler() for top-level nodes.</p>
+<p>For a TermQuery, the scoring formula is approximately:</p>
+<pre><code>(tf_d * idf_t / norm_d) * (tf_q * idf_t / norm_q)
+</code></pre>
+<p>Normalize() is theoretically concerned with applying the second half of
+that formula to a the Compiler's weight. What actually happens depends
+on how the Compiler and Similarity methods called internally are
+implemented.</p>
+</dd>
+<dt>Highlight_Spans</dt>
+<dd>
+<pre><code><a href="cfish_VArray.html">cfish_VArray*</a> // incremented
+<strong>LUCY_Compiler_Highlight_Spans</strong>(
+    lucy_Compiler* <strong>self</strong>,
+    <a href="lucy_Searcher.html">lucy_Searcher*</a> <strong>searcher</strong>,
+    <a href="lucy_DocVector.html">lucy_DocVector*</a> <strong>doc_vec</strong>,
+    <a href="cfish_String.html">cfish_String*</a> <strong>field</strong>
+);
+</code></pre>
+<p>Return an array of Span objects, indicating where in the given field
+the text that matches the parent Query occurs and how well each snippet
+matches.  The Span's offset and length are measured in Unicode code
+points.</p>
+<p>The default implementation returns an empty array.</p>
+<dl>
+<dt><emph>searcher</emph></dt>
+<dd><p>A Searcher.</p>
+</dd>
+<dt><emph>doc_vec</emph></dt>
+<dd><p>A DocVector.</p>
+</dd>
+<dt><emph>field</emph></dt>
+<dd><p>The name of the field.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h3>Methods inherited from Lucy::Search::Query</h3><dl>
+<dt>Make_Compiler</dt>
+<dd>
+<pre><code><a href="lucy_Compiler.html">lucy_Compiler*</a> // incremented
+<strong>LUCY_Query_Make_Compiler</strong>(
+    lucy_Query* <strong>self</strong>,
+    <a href="lucy_Searcher.html">lucy_Searcher*</a> <strong>searcher</strong>,
+    float <strong>boost</strong>,
+    bool <strong>subordinate</strong>
+);
+</code></pre>
+<p>Abstract factory method returning a Compiler derived from this Query.</p>
+<dl>
+<dt><emph>searcher</emph></dt>
+<dd><p>A Searcher.</p>
+</dd>
+<dt><emph>boost</emph></dt>
+<dd><p>A scoring multiplier.</p>
+</dd>
+<dt><emph>subordinate</emph></dt>
+<dd><p>Indicates whether the Query is a subquery (as
+opposed to a top-level query).  If false, the implementation must
+invoke Normalize() on the newly minted Compiler object before returning
+it.</p>
+</dd>
+</dl>
+</dd>
+<dt>Set_Boost</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Query_Set_Boost</strong>(
+    lucy_Query* <strong>self</strong>,
+    float <strong>boost</strong>
+);
+</code></pre>
+<p>Set the Query's boost.</p>
+</dd>
+<dt>Get_Boost</dt>
+<dd>
+<pre><code>float
+<strong>LUCY_Query_Get_Boost</strong>(
+    lucy_Query* <strong>self</strong>
+);
+</code></pre>
+<p>Get the Query's boost.</p>
+</dd>
+<dt>Serialize</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Query_Serialize</strong>(
+    lucy_Query* <strong>self</strong>,
+    <a href="lucy_OutStream.html">lucy_OutStream*</a> 
<strong>outstream</strong>
+);
+</code></pre>
+</dd>
+<dt>Deserialize</dt>
+<dd>
+<pre><code>lucy_Query* // incremented
+<strong>LUCY_Query_Deserialize</strong>(
+    lucy_Query* <strong>self</strong>, // decremented
+    <a href="lucy_InStream.html">lucy_InStream*</a> <strong>instream</strong>
+);
+</code></pre>
+</dd>
+<dt>Dump</dt>
+<dd>
+<pre><code><a href="cfish_Obj.html">cfish_Obj*</a> // incremented
+<strong>LUCY_Query_Dump</strong>(
+    lucy_Query* <strong>self</strong>
+);
+</code></pre>
+</dd>
+<dt>Load</dt>
+<dd>
+<pre><code><a href="cfish_Obj.html">cfish_Obj*</a> // incremented
+<strong>LUCY_Query_Load</strong>(
+    lucy_Query* <strong>self</strong>,
+    <a href="cfish_Obj.html">cfish_Obj*</a> <strong>dump</strong>
+);
+</code></pre>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Search::Compiler is a <a 
href="lucy_Query.html">Lucy::Search::Query</a> is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_DataReader.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_DataReader.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_DataReader.html Sun Nov 23 
17:43:07 2014
@@ -0,0 +1,165 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Index::DataReader</h1>
+<h2>Name</h2>
+<p>Lucy::Index::DataReader - Abstract base class for reading index data.</p>
+<h2>Description</h2>
+<p>DataReader is the companion class to
+<a href="lucy_DataWriter.html">DataWriter</a>.  Every index component will
+implement one of each.</p>
+<h2>Functions</h2>
+<dl>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_DataReader*
+<strong>lucy_DataReader_init</strong>(
+    lucy_DataReader* <strong>self</strong>,
+    <a href="lucy_Schema.html">lucy_Schema*</a> <strong>schema</strong>,
+    <a href="lucy_Folder.html">lucy_Folder*</a> <strong>folder</strong>,
+    <a href="lucy_Snapshot.html">lucy_Snapshot*</a> <strong>snapshot</strong>,
+    <a href="cfish_VArray.html">cfish_VArray*</a> <strong>segments</strong>,
+    int32_t <strong>seg_tick</strong>
+);
+</code></pre>
+<dl>
+<dt><emph>schema</emph></dt>
+<dd><p>A Schema.</p>
+</dd>
+<dt><emph>folder</emph></dt>
+<dd><p>A Folder.</p>
+</dd>
+<dt><emph>snapshot</emph></dt>
+<dd><p>A Snapshot.</p>
+</dd>
+<dt><emph>segments</emph></dt>
+<dd><p>An array of Segments.</p>
+</dd>
+<dt><emph>seg_tick</emph></dt>
+<dd><p>The array index of the Segment object within the
+<code>segments</code> array that this particular DataReader is assigned
+to, if any.  A value of -1 indicates that no Segment should be
+assigned.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Abstract methods</h3>
+<dl>
+<dt>Aggregator</dt>
+<dd>
+<pre><code>lucy_DataReader* // incremented
+<strong>LUCY_DataReader_Aggregator</strong>(
+    lucy_DataReader* <strong>self</strong>,
+    <a href="cfish_VArray.html">cfish_VArray*</a> <strong>readers</strong>,
+    <a href="lucy_I32Array.html">lucy_I32Array*</a> <strong>offsets</strong>
+);
+</code></pre>
+<p>Create a reader which aggregates the output of several lower level
+readers.  Return NULL if such a reader is not valid.</p>
+<dl>
+<dt><emph>readers</emph></dt>
+<dd><p>An array of DataReaders.</p>
+</dd>
+<dt><emph>offsets</emph></dt>
+<dd><p>Doc id start offsets for each reader.</p>
+</dd>
+</dl>
+</dd>
+<dt>Close</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DataReader_Close</strong>(
+    lucy_DataReader* <strong>self</strong>
+);
+</code></pre>
+<p>Release external resources, e.g. streams.  Implementations must be
+safe for multiple calls.  Once called, no other operations may be
+performed upon either the reader or any component subreaders other than
+object destruction.</p>
+</dd>
+</dl>
+<h3>Novel methods</h3>
+<dl>
+<dt>Get_Schema</dt>
+<dd>
+<pre><code><a href="lucy_Schema.html">lucy_Schema*</a>
+<strong>LUCY_DataReader_Get_Schema</strong>(
+    lucy_DataReader* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;schema&quot; member var.</p>
+</dd>
+<dt>Get_Folder</dt>
+<dd>
+<pre><code><a href="lucy_Folder.html">lucy_Folder*</a>
+<strong>LUCY_DataReader_Get_Folder</strong>(
+    lucy_DataReader* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;folder&quot; member var.</p>
+</dd>
+<dt>Get_Snapshot</dt>
+<dd>
+<pre><code><a href="lucy_Snapshot.html">lucy_Snapshot*</a>
+<strong>LUCY_DataReader_Get_Snapshot</strong>(
+    lucy_DataReader* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;snapshot&quot; member var.</p>
+</dd>
+<dt>Get_Segments</dt>
+<dd>
+<pre><code><a href="cfish_VArray.html">cfish_VArray*</a>
+<strong>LUCY_DataReader_Get_Segments</strong>(
+    lucy_DataReader* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;segments&quot; member var.</p>
+</dd>
+<dt>Get_Segment</dt>
+<dd>
+<pre><code><a href="lucy_Segment.html">lucy_Segment*</a>
+<strong>LUCY_DataReader_Get_Segment</strong>(
+    lucy_DataReader* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;segment&quot; member var.</p>
+</dd>
+<dt>Get_Seg_Tick</dt>
+<dd>
+<pre><code>int32_t
+<strong>LUCY_DataReader_Get_Seg_Tick</strong>(
+    lucy_DataReader* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;seg_tick&quot; member var.</p>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Index::DataReader is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_DataWriter.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_DataWriter.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_DataWriter.html Sun Nov 23 
17:43:07 2014
@@ -0,0 +1,237 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Index::DataWriter</h1>
+<h2>Name</h2>
+<p>Lucy::Index::DataWriter - Write data to an index.</p>
+<h2>Description</h2>
+<p>DataWriter is an abstract base class for writing index data, generally in
+segment-sized chunks. Each component of an index -- e.g. stored fields,
+lexicon, postings, deletions -- is represented by a
+DataWriter/<a href="lucy_DataReader.html">DataReader</a> pair.</p>
+<p>Components may be specified per index by subclassing
+<a href="lucy_Architecture.html">Architecture</a>.</p>
+<h2>Functions</h2>
+<dl>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_DataWriter*
+<strong>lucy_DataWriter_init</strong>(
+    lucy_DataWriter* <strong>self</strong>,
+    <a href="lucy_Schema.html">lucy_Schema*</a> <strong>schema</strong>,
+    <a href="lucy_Snapshot.html">lucy_Snapshot*</a> <strong>snapshot</strong>,
+    <a href="lucy_Segment.html">lucy_Segment*</a> <strong>segment</strong>,
+    <a href="lucy_PolyReader.html">lucy_PolyReader*</a> 
<strong>polyreader</strong>
+);
+</code></pre>
+<dl>
+<dt><emph>snapshot</emph></dt>
+<dd><p>The Snapshot that will be committed at the end of the
+indexing session.</p>
+</dd>
+<dt><emph>segment</emph></dt>
+<dd><p>The Segment in progress.</p>
+</dd>
+<dt><emph>polyreader</emph></dt>
+<dd><p>A PolyReader representing all existing data in the
+index.  (If the index is brand new, the PolyReader will have no
+sub-readers).</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Abstract methods</h3>
+<dl>
+<dt>Add_Inverted_Doc</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DataWriter_Add_Inverted_Doc</strong>(
+    lucy_DataWriter* <strong>self</strong>,
+    <a href="lucy_Inverter.html">lucy_Inverter*</a> <strong>inverter</strong>,
+    int32_t <strong>doc_id</strong>
+);
+</code></pre>
+<p>Process a document, previously inverted by <code>inverter</code>.</p>
+<dl>
+<dt><emph>inverter</emph></dt>
+<dd><p>An Inverter wrapping an inverted document.</p>
+</dd>
+<dt><emph>doc_id</emph></dt>
+<dd><p>Internal number assigned to this document within the
+segment.</p>
+</dd>
+</dl>
+</dd>
+<dt>Add_Segment</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DataWriter_Add_Segment</strong>(
+    lucy_DataWriter* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>,
+    <a href="lucy_I32Array.html">lucy_I32Array*</a> <strong>doc_map</strong>
+);
+</code></pre>
+<p>Add content from an existing segment into the one currently being
+written.</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>The SegReader containing content to add.</p>
+</dd>
+<dt><emph>doc_map</emph></dt>
+<dd><p>An array of integers mapping old document ids to
+new.  Deleted documents are mapped to 0, indicating that they should be
+skipped.</p>
+</dd>
+</dl>
+</dd>
+<dt>Finish</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DataWriter_Finish</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Complete the segment: close all streams, store metadata, etc.</p>
+</dd>
+<dt>Format</dt>
+<dd>
+<pre><code>int32_t
+<strong>LUCY_DataWriter_Format</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Every writer must specify a file format revision number, which should
+increment each time the format changes. Responsibility for revision
+checking is left to the companion DataReader.</p>
+</dd>
+</dl>
+<h3>Novel methods</h3>
+<dl>
+<dt>Delete_Segment</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DataWriter_Delete_Segment</strong>(
+    lucy_DataWriter* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>
+);
+</code></pre>
+<p>Remove a segment's data.  The default implementation is a no-op, as
+all files within the segment directory will be automatically deleted.
+Subclasses which manage their own files outside of the segment system
+should override this method and use it as a trigger for cleaning up
+obsolete data.</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>The SegReader containing content to merge, which must
+represent a segment which is part of the the current snapshot.</p>
+</dd>
+</dl>
+</dd>
+<dt>Merge_Segment</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DataWriter_Merge_Segment</strong>(
+    lucy_DataWriter* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>,
+    <a href="lucy_I32Array.html">lucy_I32Array*</a> <strong>doc_map</strong>
+);
+</code></pre>
+<p>Move content from an existing segment into the one currently being
+written.</p>
+<p>The default implementation calls Add_Segment() then Delete_Segment().</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>The SegReader containing content to merge, which must
+represent a segment which is part of the the current snapshot.</p>
+</dd>
+<dt><emph>doc_map</emph></dt>
+<dd><p>An array of integers mapping old document ids to
+new.  Deleted documents are mapped to 0, indicating that they should be
+skipped.</p>
+</dd>
+</dl>
+</dd>
+<dt>Metadata</dt>
+<dd>
+<pre><code><a href="cfish_Hash.html">cfish_Hash*</a> // incremented
+<strong>LUCY_DataWriter_Metadata</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Arbitrary metadata to be serialized and stored by the Segment.  The
+default implementation supplies a Hash with a single key-value pair for
+&quot;format&quot;.</p>
+</dd>
+<dt>Get_Snapshot</dt>
+<dd>
+<pre><code><a href="lucy_Snapshot.html">lucy_Snapshot*</a>
+<strong>LUCY_DataWriter_Get_Snapshot</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;snapshot&quot; member var.</p>
+</dd>
+<dt>Get_Segment</dt>
+<dd>
+<pre><code><a href="lucy_Segment.html">lucy_Segment*</a>
+<strong>LUCY_DataWriter_Get_Segment</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;segment&quot; member var.</p>
+</dd>
+<dt>Get_PolyReader</dt>
+<dd>
+<pre><code><a href="lucy_PolyReader.html">lucy_PolyReader*</a>
+<strong>LUCY_DataWriter_Get_PolyReader</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;polyreader&quot; member var.</p>
+</dd>
+<dt>Get_Schema</dt>
+<dd>
+<pre><code><a href="lucy_Schema.html">lucy_Schema*</a>
+<strong>LUCY_DataWriter_Get_Schema</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;schema&quot; member var.</p>
+</dd>
+<dt>Get_Folder</dt>
+<dd>
+<pre><code><a href="lucy_Folder.html">lucy_Folder*</a>
+<strong>LUCY_DataWriter_Get_Folder</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;folder&quot; member var.</p>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Index::DataWriter is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_DeletionsWriter.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_DeletionsWriter.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_DeletionsWriter.html Sun 
Nov 23 17:43:07 2014
@@ -0,0 +1,319 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Index::DeletionsWriter</h1>
+<h2>Name</h2>
+<p>Lucy::Index::DeletionsWriter - Abstract base class for marking documents as 
deleted.</p>
+<h2>Description</h2>
+<p>Subclasses of DeletionsWriter provide a low-level mechanism for declaring a
+document deleted from an index.</p>
+<p>Because files in an index are never modified, and because it is not
+practical to delete entire segments, a DeletionsWriter does not actually
+remove documents from the index.  Instead, it communicates to a search-time
+companion DeletionsReader which documents are deleted in such a way that it
+can create a Matcher iterator.</p>
+<p>Documents are truly deleted only when the segments which contain them are
+merged into new ones.</p>
+<h2>Methods</h2>
+<h3>Abstract methods</h3>
+<dl>
+<dt>Delete_By_Term</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DelWriter_Delete_By_Term</strong>(
+    lucy_DeletionsWriter* <strong>self</strong>,
+    <a href="cfish_String.html">cfish_String*</a> <strong>field</strong>,
+    <a href="cfish_Obj.html">cfish_Obj*</a> <strong>term</strong>
+);
+</code></pre>
+<p>Delete all documents in the index that index the supplied term.</p>
+<dl>
+<dt><emph>field</emph></dt>
+<dd><p>The name of an indexed field. (If it is not spec'd as
+<code>indexed</code>, an error will occur.)</p>
+</dd>
+<dt><emph>term</emph></dt>
+<dd><p>The term which identifies docs to be marked as deleted.  If
+<code>field</code> is associated with an Analyzer, <code>term</code>
+will be processed automatically (so don't pre-process it yourself).</p>
+</dd>
+</dl>
+</dd>
+<dt>Delete_By_Query</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DelWriter_Delete_By_Query</strong>(
+    lucy_DeletionsWriter* <strong>self</strong>,
+    <a href="lucy_Query.html">lucy_Query*</a> <strong>query</strong>
+);
+</code></pre>
+<p>Delete all documents in the index that match <code>query</code>.</p>
+<dl>
+<dt><emph>query</emph></dt>
+<dd><p>A <a href="lucy_Query.html">Query</a>.</p>
+</dd>
+</dl>
+</dd>
+<dt>Delete_By_Doc_ID</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DelWriter_Delete_By_Doc_ID</strong>(
+    lucy_DeletionsWriter* <strong>self</strong>,
+    int32_t <strong>doc_id</strong>
+);
+</code></pre>
+<p>Delete the document identified in the PolyReader by the supplied id.</p>
+</dd>
+<dt>Updated</dt>
+<dd>
+<pre><code>bool
+<strong>LUCY_DelWriter_Updated</strong>(
+    lucy_DeletionsWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Returns true if there are updates that need to be written.</p>
+</dd>
+<dt>Seg_Deletions</dt>
+<dd>
+<pre><code><a href="lucy_Matcher.html">lucy_Matcher*</a> // incremented
+<strong>LUCY_DelWriter_Seg_Deletions</strong>(
+    lucy_DeletionsWriter* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> 
<strong>seg_reader</strong>
+);
+</code></pre>
+<p>Return a deletions iterator for the supplied SegReader, which must be
+a component within the PolyReader that was supplied at
+construction-time.</p>
+</dd>
+<dt>Seg_Del_Count</dt>
+<dd>
+<pre><code>int32_t
+<strong>LUCY_DelWriter_Seg_Del_Count</strong>(
+    lucy_DeletionsWriter* <strong>self</strong>,
+    <a href="cfish_String.html">cfish_String*</a> <strong>seg_name</strong>
+);
+</code></pre>
+<p>Return the number of deletions for a given segment.</p>
+<dl>
+<dt><emph>seg_name</emph></dt>
+<dd><p>The name of the segment.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h3>Novel methods</h3>
+<dl>
+<dt>Generate_Doc_Map</dt>
+<dd>
+<pre><code><a href="lucy_I32Array.html">lucy_I32Array*</a> // incremented
+<strong>LUCY_DelWriter_Generate_Doc_Map</strong>(
+    lucy_DeletionsWriter* <strong>self</strong>,
+    <a href="lucy_Matcher.html">lucy_Matcher*</a> <strong>deletions</strong>,
+    int32_t <strong>doc_max</strong>,
+    int32_t <strong>offset</strong>
+);
+</code></pre>
+<p>Produce an array of int32_t which wraps around deleted documents.  The
+position in the array represents the original doc id, and the value
+represents the new doc id.  Deleted docs are assigned the value - 0, so
+if you had 4 docs and doc 2 was deleted, the array would have the
+values...  (1, 0, 2, 3).</p>
+<dl>
+<dt><emph>offset</emph></dt>
+<dd><p>Value which gets added to each valid document id.
+With an offset of 1000, the array in the previous example would be
+{ 1001, 0, 1002, 1003 }.</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h3>Methods inherited from Lucy::Index::DataWriter</h3><dl>
+<dt>Add_Inverted_Doc</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DataWriter_Add_Inverted_Doc</strong>(
+    lucy_DataWriter* <strong>self</strong>,
+    <a href="lucy_Inverter.html">lucy_Inverter*</a> <strong>inverter</strong>,
+    int32_t <strong>doc_id</strong>
+);
+</code></pre>
+<p>Process a document, previously inverted by <code>inverter</code>.</p>
+<dl>
+<dt><emph>inverter</emph></dt>
+<dd><p>An Inverter wrapping an inverted document.</p>
+</dd>
+<dt><emph>doc_id</emph></dt>
+<dd><p>Internal number assigned to this document within the
+segment.</p>
+</dd>
+</dl>
+</dd>
+<dt>Add_Segment</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DataWriter_Add_Segment</strong>(
+    lucy_DataWriter* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>,
+    <a href="lucy_I32Array.html">lucy_I32Array*</a> <strong>doc_map</strong>
+);
+</code></pre>
+<p>Add content from an existing segment into the one currently being
+written.</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>The SegReader containing content to add.</p>
+</dd>
+<dt><emph>doc_map</emph></dt>
+<dd><p>An array of integers mapping old document ids to
+new.  Deleted documents are mapped to 0, indicating that they should be
+skipped.</p>
+</dd>
+</dl>
+</dd>
+<dt>Delete_Segment</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DataWriter_Delete_Segment</strong>(
+    lucy_DataWriter* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>
+);
+</code></pre>
+<p>Remove a segment's data.  The default implementation is a no-op, as
+all files within the segment directory will be automatically deleted.
+Subclasses which manage their own files outside of the segment system
+should override this method and use it as a trigger for cleaning up
+obsolete data.</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>The SegReader containing content to merge, which must
+represent a segment which is part of the the current snapshot.</p>
+</dd>
+</dl>
+</dd>
+<dt>Merge_Segment</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DataWriter_Merge_Segment</strong>(
+    lucy_DataWriter* <strong>self</strong>,
+    <a href="lucy_SegReader.html">lucy_SegReader*</a> <strong>reader</strong>,
+    <a href="lucy_I32Array.html">lucy_I32Array*</a> <strong>doc_map</strong>
+);
+</code></pre>
+<p>Move content from an existing segment into the one currently being
+written.</p>
+<p>The default implementation calls Add_Segment() then Delete_Segment().</p>
+<dl>
+<dt><emph>reader</emph></dt>
+<dd><p>The SegReader containing content to merge, which must
+represent a segment which is part of the the current snapshot.</p>
+</dd>
+<dt><emph>doc_map</emph></dt>
+<dd><p>An array of integers mapping old document ids to
+new.  Deleted documents are mapped to 0, indicating that they should be
+skipped.</p>
+</dd>
+</dl>
+</dd>
+<dt>Finish</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_DataWriter_Finish</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Complete the segment: close all streams, store metadata, etc.</p>
+</dd>
+<dt>Metadata</dt>
+<dd>
+<pre><code><a href="cfish_Hash.html">cfish_Hash*</a> // incremented
+<strong>LUCY_DataWriter_Metadata</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Arbitrary metadata to be serialized and stored by the Segment.  The
+default implementation supplies a Hash with a single key-value pair for
+&quot;format&quot;.</p>
+</dd>
+<dt>Format</dt>
+<dd>
+<pre><code>int32_t
+<strong>LUCY_DataWriter_Format</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Every writer must specify a file format revision number, which should
+increment each time the format changes. Responsibility for revision
+checking is left to the companion DataReader.</p>
+</dd>
+<dt>Get_Snapshot</dt>
+<dd>
+<pre><code><a href="lucy_Snapshot.html">lucy_Snapshot*</a>
+<strong>LUCY_DataWriter_Get_Snapshot</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;snapshot&quot; member var.</p>
+</dd>
+<dt>Get_Segment</dt>
+<dd>
+<pre><code><a href="lucy_Segment.html">lucy_Segment*</a>
+<strong>LUCY_DataWriter_Get_Segment</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;segment&quot; member var.</p>
+</dd>
+<dt>Get_PolyReader</dt>
+<dd>
+<pre><code><a href="lucy_PolyReader.html">lucy_PolyReader*</a>
+<strong>LUCY_DataWriter_Get_PolyReader</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;polyreader&quot; member var.</p>
+</dd>
+<dt>Get_Schema</dt>
+<dd>
+<pre><code><a href="lucy_Schema.html">lucy_Schema*</a>
+<strong>LUCY_DataWriter_Get_Schema</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;schema&quot; member var.</p>
+</dd>
+<dt>Get_Folder</dt>
+<dd>
+<pre><code><a href="lucy_Folder.html">lucy_Folder*</a>
+<strong>LUCY_DataWriter_Get_Folder</strong>(
+    lucy_DataWriter* <strong>self</strong>
+);
+</code></pre>
+<p>Accessor for &quot;folder&quot; member var.</p>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Index::DeletionsWriter is a <a 
href="lucy_DataWriter.html">Lucy::Index::DataWriter</a> is a <a 
href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>

Added: websites/staging/lucy/trunk/content/docs/c/lucy_Doc.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/c/lucy_Doc.html (added)
+++ websites/staging/lucy/trunk/content/docs/c/lucy_Doc.html Sun Nov 23 
17:43:07 2014
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name="viewport" content="width=device-width" />
+<style type="text/css">
+body {
+    font-family: sans-serif;
+    font-size: 0.85em;
+    max-width: 640px;
+}
+dt {
+    font-weight: bold;
+}
+pre {
+    border: 1px solid #000;
+    padding: 0.2em 0.4em;
+    background: #f6f6f6;
+    font-size: 1.2em;
+}
+code {
+    font-family: "Consolas", "Menlo", monospace;
+}
+</style>
+</head>
+<body>
+<h1>Lucy::Document::Doc</h1>
+<h2>Name</h2>
+<p>Lucy::Document::Doc - A document.</p>
+<h2>Description</h2>
+<p>A Doc object is akin to a row in a database, in that it is made up of one
+or more fields, each of which has a value.</p>
+<h2>Functions</h2>
+<dl>
+<dt>init</dt>
+<dd>
+<pre><code>lucy_Doc*
+<strong>lucy_Doc_init</strong>(
+    lucy_Doc* <strong>self</strong>,
+    void* <strong>fields</strong>,
+    int32_t <strong>doc_id</strong>
+);
+</code></pre>
+<dl>
+<dt><emph>fields</emph></dt>
+<dd><p>Field-value pairs.</p>
+</dd>
+<dt><emph>doc_id</emph></dt>
+<dd><p>Internal Lucy document id.  Default of 0 (an
+invalid doc id).</p>
+</dd>
+</dl>
+</dd>
+</dl>
+<h2>Methods</h2>
+<h3>Novel methods</h3>
+<dl>
+<dt>Set_Doc_ID</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Doc_Set_Doc_ID</strong>(
+    lucy_Doc* <strong>self</strong>,
+    int32_t <strong>doc_id</strong>
+);
+</code></pre>
+<p>Set internal Lucy document id.</p>
+</dd>
+<dt>Get_Doc_ID</dt>
+<dd>
+<pre><code>int32_t
+<strong>LUCY_Doc_Get_Doc_ID</strong>(
+    lucy_Doc* <strong>self</strong>
+);
+</code></pre>
+<p>Retrieve internal Lucy document id.</p>
+</dd>
+<dt>Get_Fields</dt>
+<dd>
+<pre><code>void*
+<strong>LUCY_Doc_Get_Fields</strong>(
+    lucy_Doc* <strong>self</strong>
+);
+</code></pre>
+<p>Return the Doc's backing fields hash.</p>
+</dd>
+<dt>Get_Size</dt>
+<dd>
+<pre><code>uint32_t
+<strong>LUCY_Doc_Get_Size</strong>(
+    lucy_Doc* <strong>self</strong>
+);
+</code></pre>
+<p>Return the number of fields in the Doc.</p>
+</dd>
+<dt>Serialize</dt>
+<dd>
+<pre><code>void
+<strong>LUCY_Doc_Serialize</strong>(
+    lucy_Doc* <strong>self</strong>,
+    <a href="lucy_OutStream.html">lucy_OutStream*</a> 
<strong>outstream</strong>
+);
+</code></pre>
+</dd>
+<dt>Deserialize</dt>
+<dd>
+<pre><code>lucy_Doc* // incremented
+<strong>LUCY_Doc_Deserialize</strong>(
+    lucy_Doc* <strong>self</strong>, // decremented
+    <a href="lucy_InStream.html">lucy_InStream*</a> <strong>instream</strong>
+);
+</code></pre>
+</dd>
+<dt>Dump</dt>
+<dd>
+<pre><code><a href="cfish_Hash.html">cfish_Hash*</a> // incremented
+<strong>LUCY_Doc_Dump</strong>(
+    lucy_Doc* <strong>self</strong>
+);
+</code></pre>
+</dd>
+<dt>Load</dt>
+<dd>
+<pre><code>lucy_Doc* // incremented
+<strong>LUCY_Doc_Load</strong>(
+    lucy_Doc* <strong>self</strong>,
+    <a href="cfish_Obj.html">cfish_Obj*</a> <strong>dump</strong>
+);
+</code></pre>
+</dd>
+</dl>
+<h2>Inheritance</h2>
+<p>Lucy::Document::Doc is a <a href="cfish_Obj.html">Clownfish::Obj</a>.</p>
+</body>
+</html>


Reply via email to