Added: lucy/site/trunk/content/docs/perl/Lucy/Search/LeafQuery.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/LeafQuery.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/LeafQuery.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/LeafQuery.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,106 @@
+Title: Lucy::Search::LeafQuery – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::LeafQuery - Leaf node in a tree created by QueryParser.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>package MyQueryParser;
+use base qw( Lucy::Search::QueryParser );
+
+sub expand_leaf {
+    my ( $self, $leaf_query ) = @_;
+    if ( $leaf_query-&#62;get_text =~ /.\*\s*$/ ) {
+        return PrefixQuery-&#62;new(
+            query_string =&#62; $leaf_query-&#62;get_text,
+            field        =&#62; $leaf_query-&#62;get_field,
+        );
+    }
+    else {
+        return $self-&#62;SUPER::expand_leaf($leaf_query);
+    }
+}</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>LeafQuery objects serve as leaf nodes in the tree structure generated by <a 
href="../../Lucy/Search/QueryParser.html" class="podlinkpod"
+>QueryParser</a>&#8217;s <a href="../../Lucy/Search/QueryParser.html#tree" 
class="podlinkpod"
+>tree()</a> method.
+Ultimately,
+they must be transformed,
+typically into either <a href="../../Lucy/Search/TermQuery.html" 
class="podlinkpod"
+>TermQuery</a> or <a href="../../Lucy/Search/PhraseQuery.html" 
class="podlinkpod"
+>PhraseQuery</a> objects,
+as attempting to search a LeafQuery causes an error.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $leaf_query = Lucy::Search::LeafQuery-&#62;new(
+    text  =&#62; &#39;&#34;three blind mice&#34;&#39;,    # required
+    field =&#62; &#39;content&#39;,               # default: undef
+);</pre>
+
+<p>Create a new LeafQuery.</p>
+
+<ul>
+<li><b>field</b> - Optional field name.</li>
+
+<li><b>text</b> - Raw query text.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="get_field"
+>get_field</a></h3>
+
+<pre>my $string = $leaf_query-&#62;get_field();</pre>
+
+<p>Accessor for object&#8217;s <code>field</code> attribute.</p>
+
+<h3><a class='u'
+name="get_text"
+>get_text</a></h3>
+
+<pre>my $string = $leaf_query-&#62;get_text();</pre>
+
+<p>Accessor for object&#8217;s <code>text</code> attribute.</p>
+
+<h3><a class='u'
+name="make_compiler"
+>make_compiler</a></h3>
+
+<pre>my $compiler = $leaf_query-&#62;make_compiler(
+    searcher    =&#62; $searcher     # required
+    boost       =&#62; $boost        # required
+    subordinate =&#62; $subordinate  # default: false
+);</pre>
+
+<p>Throws an error.</p>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::LeafQuery isa <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Lucy::Search::Query</a> isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/MatchAllQuery.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/MatchAllQuery.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/MatchAllQuery.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/MatchAllQuery.mdtext Mon Apr  
4 09:22:30 2016
@@ -0,0 +1,68 @@
+Title: Lucy::Search::MatchAllQuery – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::MatchAllQuery - Query which matches all documents.</p>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>MatchAllQuery is a utility class which matches all documents.
+Each match is assigned a score of 0.0,
+so that in composite queries,
+any document which matches against another part of the query will be ranked 
higher than a document which matches only via the MatchAllQuery.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $match_all_query = Lucy::Search::MatchAllQuery-&#62;new;</pre>
+
+<p>Constructor.
+Takes no arguments.</p>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="make_compiler"
+>make_compiler</a></h3>
+
+<pre>my $compiler = $match_all_query-&#62;make_compiler(
+    searcher    =&#62; $searcher     # required
+    boost       =&#62; $boost        # required
+    subordinate =&#62; $subordinate  # default: false
+);</pre>
+
+<p>Abstract factory method returning a Compiler derived from this Query.</p>
+
+<ul>
+<li><b>searcher</b> - A Searcher.</li>
+
+<li><b>boost</b> - A scoring multiplier.</li>
+
+<li><b>subordinate</b> - Indicates whether the Query is a subquery (as opposed 
to a top-level query).
+If false,
+the implementation must invoke <a 
href="../../Lucy/Search/Compiler.html#normalize" class="podlinkpod"
+>normalize()</a> on the newly minted Compiler object before returning it.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::MatchAllQuery isa <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Lucy::Search::Query</a> isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/Matcher.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/Matcher.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/Matcher.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/Matcher.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,105 @@
+Title: Lucy::Search::Matcher – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::Matcher - Match a set of document ids.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre># abstract base class</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>A Matcher iterates over a set of ascending document ids.
+Some Matchers implement <a href="#score" class="podlinkpod"
+>score()</a> and can assign relevance scores to the docs that they match.
+Other implementations may be match-only.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $matcher = MyMatcher-&#62;SUPER::new;</pre>
+
+<p>Abstract constructor.</p>
+
+<h2><a class='u'
+name="ABSTRACT_METHODS"
+>ABSTRACT METHODS</a></h2>
+
+<h3><a class='u'
+name="next"
+>next</a></h3>
+
+<pre>my $int = $matcher-&#62;next();</pre>
+
+<p>Proceed to the next doc id.</p>
+
+<p>Returns: A positive doc id,
+or 0 once the iterator is exhausted.</p>
+
+<h3><a class='u'
+name="get_doc_id"
+>get_doc_id</a></h3>
+
+<pre>my $int = $matcher-&#62;get_doc_id();</pre>
+
+<p>Return the current doc id.
+Valid only after a successful call to <a href="#next" class="podlinkpod"
+>next()</a> or <a href="#advance" class="podlinkpod"
+>advance()</a> and must not be called otherwise.</p>
+
+<h3><a class='u'
+name="score"
+>score</a></h3>
+
+<pre>my $float = $matcher-&#62;score();</pre>
+
+<p>Return the score of the current document.</p>
+
+<p>Only Matchers which are used for scored search need implement <a 
href="#score" class="podlinkpod"
+>score()</a>.</p>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="advance"
+>advance</a></h3>
+
+<pre>my $int = $matcher-&#62;advance($target);</pre>
+
+<p>Advance the iterator to the first doc id greater than or equal to 
<code>target</code>.
+The default implementation simply calls <a href="#next" class="podlinkpod"
+>next()</a> over and over,
+but subclasses have the option of doing something more efficient.</p>
+
+<ul>
+<li><b>target</b> - A positive doc id,
+which must be greater than the current doc id once the iterator has been 
initialized.</li>
+</ul>
+
+<p>Returns: A positive doc id,
+or 0 once the iterator is exhausted.</p>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::Matcher isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/NOTQuery.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/NOTQuery.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/NOTQuery.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/NOTQuery.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,105 @@
+Title: Lucy::Search::NOTQuery – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::NOTQuery - Invert the result set of another Query.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $not_bar_query = Lucy::Search::NOTQuery-&#62;new( 
+    negated_query =&#62; $bar_query,
+);
+my $foo_and_not_bar_query = Lucy::Search::ANDQuery-&#62;new(
+    children =&#62; [ $foo_query, $not_bar_query ].
+);
+my $hits = $searcher-&#62;hits( query =&#62; $foo_and_not_bar_query );
+...</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>A NOTQuery wraps another <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Query</a> and matches against its inverse document set.
+All matching docs recieve a score of 0.0.</p>
+
+<p>NOTQuery is often used in conjunction with <a 
href="../../Lucy/Search/ANDQuery.html" class="podlinkpod"
+>ANDQuery</a> to provide &#8220;a AND NOT b&#8221; semantics.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $not_query = Lucy::Search::NOTQuery-&#62;new( 
+    negated_query =&#62; $query,
+);</pre>
+
+<p>Create a new NOTQuery.</p>
+
+<ul>
+<li><b>negated_query</b> - The Query whose result set should be inverted.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="get_negated_query"
+>get_negated_query</a></h3>
+
+<pre>my $query = $not_query-&#62;get_negated_query();</pre>
+
+<p>Accessor for the object&#8217;s negated query.</p>
+
+<h3><a class='u'
+name="set_negated_query"
+>set_negated_query</a></h3>
+
+<pre>$not_query-&#62;set_negated_query($negated_query);</pre>
+
+<p>Setter for the object&#8217;s negated query.</p>
+
+<h3><a class='u'
+name="make_compiler"
+>make_compiler</a></h3>
+
+<pre>my $compiler = $not_query-&#62;make_compiler(
+    searcher    =&#62; $searcher     # required
+    boost       =&#62; $boost        # required
+    subordinate =&#62; $subordinate  # default: false
+);</pre>
+
+<p>Abstract factory method returning a Compiler derived from this Query.</p>
+
+<ul>
+<li><b>searcher</b> - A Searcher.</li>
+
+<li><b>boost</b> - A scoring multiplier.</li>
+
+<li><b>subordinate</b> - Indicates whether the Query is a subquery (as opposed 
to a top-level query).
+If false,
+the implementation must invoke <a 
href="../../Lucy/Search/Compiler.html#normalize" class="podlinkpod"
+>normalize()</a> on the newly minted Compiler object before returning it.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::NOTQuery isa <a href="../../Lucy/Search/PolyQuery.html" 
class="podlinkpod"
+>Lucy::Search::PolyQuery</a> isa <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Lucy::Search::Query</a> isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/NoMatchQuery.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/NoMatchQuery.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/NoMatchQuery.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/NoMatchQuery.mdtext Mon Apr  
4 09:22:30 2016
@@ -0,0 +1,68 @@
+Title: Lucy::Search::NoMatchQuery – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::NoMatchQuery - Query which matches no documents.</p>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>NoMatchQuery is a utility class representing a query which matches nothing.
+Typical usage might include e.g.
+returning a NoMatchQuery when a <a href="../../Lucy/Search/QueryParser.html" 
class="podlinkpod"
+>QueryParser</a> is asked to parse an empty string.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $no_match_query = Lucy::Search::NoMatchQuery-&#62;new;</pre>
+
+<p>Constructor.
+Takes no arguments.</p>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="make_compiler"
+>make_compiler</a></h3>
+
+<pre>my $compiler = $no_match_query-&#62;make_compiler(
+    searcher    =&#62; $searcher     # required
+    boost       =&#62; $boost        # required
+    subordinate =&#62; $subordinate  # default: false
+);</pre>
+
+<p>Abstract factory method returning a Compiler derived from this Query.</p>
+
+<ul>
+<li><b>searcher</b> - A Searcher.</li>
+
+<li><b>boost</b> - A scoring multiplier.</li>
+
+<li><b>subordinate</b> - Indicates whether the Query is a subquery (as opposed 
to a top-level query).
+If false,
+the implementation must invoke <a 
href="../../Lucy/Search/Compiler.html#normalize" class="podlinkpod"
+>normalize()</a> on the newly minted Compiler object before returning it.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::NoMatchQuery isa <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Lucy::Search::Query</a> isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/ORQuery.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/ORQuery.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/ORQuery.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/ORQuery.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,84 @@
+Title: Lucy::Search::ORQuery – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::ORQuery - Union multiple result sets.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $foo_or_bar_query = Lucy::Search::ORQuery-&#62;new(
+    children =&#62; [ $foo_query, $bar_query ],
+);
+my $hits = $searcher-&#62;hits( query =&#62; $foo_or_bar_query );
+...</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>ORQuery is a composite <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Query</a> which matches when any of its children match,
+so its result set is the union of their result sets.
+Matching documents recieve a summed score from all matching child Queries.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $foo_or_bar_query = Lucy::Search::ORQuery-&#62;new(
+    children =&#62; [ $foo_query, $bar_query ],
+);</pre>
+
+<p>Create a new ORQuery.</p>
+
+<ul>
+<li><b>children</b> - An array of child Queries.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="make_compiler"
+>make_compiler</a></h3>
+
+<pre>my $compiler = $or_query-&#62;make_compiler(
+    searcher    =&#62; $searcher     # required
+    boost       =&#62; $boost        # required
+    subordinate =&#62; $subordinate  # default: false
+);</pre>
+
+<p>Abstract factory method returning a Compiler derived from this Query.</p>
+
+<ul>
+<li><b>searcher</b> - A Searcher.</li>
+
+<li><b>boost</b> - A scoring multiplier.</li>
+
+<li><b>subordinate</b> - Indicates whether the Query is a subquery (as opposed 
to a top-level query).
+If false,
+the implementation must invoke <a 
href="../../Lucy/Search/Compiler.html#normalize" class="podlinkpod"
+>normalize()</a> on the newly minted Compiler object before returning it.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::ORQuery isa <a href="../../Lucy/Search/PolyQuery.html" 
class="podlinkpod"
+>Lucy::Search::PolyQuery</a> isa <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Lucy::Search::Query</a> isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/PhraseQuery.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/PhraseQuery.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/PhraseQuery.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/PhraseQuery.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,100 @@
+Title: Lucy::Search::PhraseQuery – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::PhraseQuery - Query matching an ordered list of terms.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $phrase_query = Lucy::Search::PhraseQuery-&#62;new( 
+    field =&#62; &#39;content&#39;,
+    terms =&#62; [qw( the who )],
+);
+my $hits = $searcher-&#62;hits( query =&#62; $phrase_query );</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>PhraseQuery is a subclass of <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Query</a> for matching against an ordered sequence of terms.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $phrase_query = Lucy::Search::PhraseQuery-&#62;new(
+    field =&#62; $field  # required
+    terms =&#62; $terms  # required
+);</pre>
+
+<p>Create a new PhraseQuery.</p>
+
+<ul>
+<li><b>field</b> - The field that the phrase must occur in.</li>
+
+<li><b>terms</b> - The ordered array of terms that must match.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="get_field"
+>get_field</a></h3>
+
+<pre>my $string = $phrase_query-&#62;get_field();</pre>
+
+<p>Accessor for object&#8217;s field attribute.</p>
+
+<h3><a class='u'
+name="get_terms"
+>get_terms</a></h3>
+
+<pre>my $arrayref = $phrase_query-&#62;get_terms();</pre>
+
+<p>Accessor for object&#8217;s array of terms.</p>
+
+<h3><a class='u'
+name="make_compiler"
+>make_compiler</a></h3>
+
+<pre>my $compiler = $phrase_query-&#62;make_compiler(
+    searcher    =&#62; $searcher     # required
+    boost       =&#62; $boost        # required
+    subordinate =&#62; $subordinate  # default: false
+);</pre>
+
+<p>Abstract factory method returning a Compiler derived from this Query.</p>
+
+<ul>
+<li><b>searcher</b> - A Searcher.</li>
+
+<li><b>boost</b> - A scoring multiplier.</li>
+
+<li><b>subordinate</b> - Indicates whether the Query is a subquery (as opposed 
to a top-level query).
+If false,
+the implementation must invoke <a 
href="../../Lucy/Search/Compiler.html#normalize" class="podlinkpod"
+>normalize()</a> on the newly minted Compiler object before returning it.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::PhraseQuery isa <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Lucy::Search::Query</a> isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/PolyQuery.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/PolyQuery.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/PolyQuery.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/PolyQuery.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,62 @@
+Title: Lucy::Search::PolyQuery – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::PolyQuery - Base class for composite Query objects.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>sub walk {
+    my $query = shift;
+    if ( $query-&#62;isa(&#34;Lucy::Search::PolyQuery&#34;) ) {
+        if    ( $query-&#62;isa(&#34;Lucy::Search::ORQuery&#34;) )  { ... }
+        elsif ( $query-&#62;isa(&#34;Lucy::Search::ANDQuery&#34;) ) { ... }
+        elsif ( $query-&#62;isa(&#34;Lucy::Search::RequiredOptionalQuery&#34;) 
) {
+            ...
+        }
+        elsif ( $query-&#62;isa(&#34;Lucy::Search::NOTQuery&#34;) ) { ... }
+    }
+    else { ... }
+}</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>PolyQuery serves as a shared base class for <a 
href="../../Lucy/Search/ANDQuery.html" class="podlinkpod"
+>ANDQuery</a>,
+<a href="../../Lucy/Search/ORQuery.html" class="podlinkpod"
+>ORQuery</a>,
+<a href="../../Lucy/Search/NOTQuery.html" class="podlinkpod"
+>NOTQuery</a>,
+and <a href="../../Lucy/Search/RequiredOptionalQuery.html" class="podlinkpod"
+>RequiredOptionalQuery</a>.
+All of these classes may serve as nodes in composite Query with a tree 
structure which may be walked.</p>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="add_child"
+>add_child</a></h3>
+
+<pre>$poly_query-&#62;add_child($query);</pre>
+
+<p>Add a child Query node.</p>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::PolyQuery isa <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Lucy::Search::Query</a> isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/PolySearcher.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/PolySearcher.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/PolySearcher.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/PolySearcher.mdtext Mon Apr  
4 09:22:30 2016
@@ -0,0 +1,123 @@
+Title: Lucy::Search::PolySearcher – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::PolySearcher - Aggregate results from multiple Searchers.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $schema = MySchema-&#62;new;
+for my $index (@index_paths) {
+    push @searchers, Lucy::Search::IndexSearcher-&#62;new( index =&#62; $index 
);
+}
+my $poly_searcher = Lucy::Search::PolySearcher-&#62;new(
+    schema    =&#62; $schema,
+    searchers =&#62; \@searchers,
+);
+my $hits = $poly_searcher-&#62;hits( query =&#62; $query );</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>The primary use for PolySearcher is to aggregate results from several 
indexes on a single machine.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $poly_searcher = Lucy::Search::PolySearcher-&#62;new(
+    schema    =&#62; $schema,
+    searchers =&#62; \@searchers,
+);</pre>
+
+<p>Create a new PolySearcher.</p>
+
+<ul>
+<li><b>schema</b> - A Schema.</li>
+
+<li><b>searchers</b> - An array of Searchers.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="doc_max"
+>doc_max</a></h3>
+
+<pre>my $int = $poly_searcher-&#62;doc_max();</pre>
+
+<p>Return the maximum number of docs in the collection represented by the 
Searcher,
+which is also the highest possible internal doc id.
+Documents which have been marked as deleted but not yet purged are included in 
this count.</p>
+
+<h3><a class='u'
+name="doc_freq"
+>doc_freq</a></h3>
+
+<pre>my $int = $poly_searcher-&#62;doc_freq(
+    field =&#62; $field  # required
+    term  =&#62; $term   # required
+);</pre>
+
+<p>Return the number of documents which contain the term in the given 
field.</p>
+
+<ul>
+<li><b>field</b> - Field name.</li>
+
+<li><b>term</b> - The term to look up.</li>
+</ul>
+
+<h3><a class='u'
+name="collect"
+>collect</a></h3>
+
+<pre>$poly_searcher-&#62;collect(
+    query     =&#62; $query      # required
+    collector =&#62; $collector  # required
+);</pre>
+
+<p>Iterate over hits,
+feeding them into a <a href="../../Lucy/Search/Collector.html" 
class="podlinkpod"
+>Collector</a>.</p>
+
+<ul>
+<li><b>query</b> - A Query.</li>
+
+<li><b>collector</b> - A Collector.</li>
+</ul>
+
+<h3><a class='u'
+name="fetch_doc"
+>fetch_doc</a></h3>
+
+<pre>my $hit_doc = $poly_searcher-&#62;fetch_doc($doc_id);</pre>
+
+<p>Retrieve a document.
+Throws an error if the doc id is out of range.</p>
+
+<ul>
+<li><b>doc_id</b> - A document id.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::PolySearcher isa <a href="../../Lucy/Search/Searcher.html" 
class="podlinkpod"
+>Lucy::Search::Searcher</a> isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/Query.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/Query.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/Query.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/Query.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,138 @@
+Title: Lucy::Search::Query – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::Query - A specification for a search query.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre># Query is an abstract base class.
+package MyQuery;
+use base qw( Lucy::Search::Query );
+
+sub make_compiler {
+    my ( $self, %args ) = @_;
+    my $subordinate = delete $args{subordinate};
+    my $compiler = MyCompiler-&#62;new( %args, parent =&#62; $self );
+    $compiler-&#62;normalize unless $subordinate;
+    return $compiler;
+}
+
+package MyCompiler;
+use base ( Lucy::Search::Compiler );
+...</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>Query objects are simple containers which contain the minimum information 
necessary to define a search query.</p>
+
+<p>The most common way to generate Query objects is to feed a search string 
such as &#8216;foo AND bar&#8217; to a <a 
href="../../Lucy/Search/QueryParser.html" class="podlinkpod"
+>QueryParser&#8217;s</a> <a href="../../Lucy/Search/QueryParser.html#parse" 
class="podlinkpod"
+>parse()</a> method,
+which outputs an abstract syntax tree built up from various Query subclasses 
such as <a href="../../Lucy/Search/ANDQuery.html" class="podlinkpod"
+>ANDQuery</a> and <a href="../../Lucy/Search/TermQuery.html" class="podlinkpod"
+>TermQuery</a>.
+However,
+it is also possible to use custom Query objects to build a search 
specification which cannot be easily represented using a search string.</p>
+
+<p>Subclasses of Query must implement <a href="#make_compiler" 
class="podlinkpod"
+>make_compiler()</a>,
+which is the first step in compiling a Query down to a <a 
href="../../Lucy/Search/Matcher.html" class="podlinkpod"
+>Matcher</a> which can actually match and score documents.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $query = MyQuery-&#62;SUPER::new(
+    boost =&#62; 2.5,
+);</pre>
+
+<p>Abstract constructor.</p>
+
+<ul>
+<li><b>boost</b> - A scoring multiplier,
+affecting the Query&#39;s relative contribution to each document&#39;s score.
+Typically defaults to 1.0,
+but subclasses which do not contribute to document scores such as NOTQuery and 
MatchAllQuery default to 0.0 instead.</li>
+</ul>
+
+<h2><a class='u'
+name="ABSTRACT_METHODS"
+>ABSTRACT METHODS</a></h2>
+
+<h3><a class='u'
+name="make_compiler"
+>make_compiler</a></h3>
+
+<pre>my $compiler = $query-&#62;make_compiler(
+    searcher    =&#62; $searcher     # required
+    boost       =&#62; $boost        # required
+    subordinate =&#62; $subordinate  # default: false
+);</pre>
+
+<p>Abstract factory method returning a Compiler derived from this Query.</p>
+
+<ul>
+<li><b>searcher</b> - A Searcher.</li>
+
+<li><b>boost</b> - A scoring multiplier.</li>
+
+<li><b>subordinate</b> - Indicates whether the Query is a subquery (as opposed 
to a top-level query).
+If false,
+the implementation must invoke <a 
href="../../Lucy/Search/Compiler.html#normalize" class="podlinkpod"
+>normalize()</a> on the newly minted Compiler object before returning it.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="set_boost"
+>set_boost</a></h3>
+
+<pre>$query-&#62;set_boost($boost);</pre>
+
+<p>Set the Query&#8217;s boost.</p>
+
+<h3><a class='u'
+name="get_boost"
+>get_boost</a></h3>
+
+<pre>my $float = $query-&#62;get_boost();</pre>
+
+<p>Get the Query&#8217;s boost.</p>
+
+<h3><a class='u'
+name="dump"
+>dump</a></h3>
+
+<pre>my $obj = $query-&#62;dump();</pre>
+
+<h3><a class='u'
+name="load"
+>load</a></h3>
+
+<pre>my $obj = $query-&#62;load($dump);</pre>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::Query isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/QueryParser.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/QueryParser.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/QueryParser.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/QueryParser.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,344 @@
+Title: Lucy::Search::QueryParser – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::QueryParser - Transform a string into a Query object.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $query_parser = Lucy::Search::QueryParser-&#62;new(
+    schema =&#62; $searcher-&#62;get_schema,
+    fields =&#62; [&#39;body&#39;],
+);
+my $query = $query_parser-&#62;parse( $query_string );
+my $hits  = $searcher-&#62;hits( query =&#62; $query );</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>QueryParser accepts search strings as input and produces <a 
href="../../Lucy/Search/Query.html" class="podlinkpod"
+>Query</a> objects,
+suitable for feeding into <a href="../../Lucy/Search/IndexSearcher.html" 
class="podlinkpod"
+>IndexSearcher</a> and other <a href="../../Lucy/Search/Searcher.html" 
class="podlinkpod"
+>Searcher</a> subclasses.</p>
+
+<p>The following syntactical constructs are recognized by QueryParser:</p>
+
+<ul>
+<li>Boolean operators &#8216;AND&#8217;,
+&#8216;OR&#8217;,
+and &#8216;AND NOT&#8217;.</li>
+
+<li>Prepented +plus and -minus,
+indicating that the labeled entity should be either required or forbidden 
&#8211; be it a single word,
+a phrase,
+or a parenthetical group.</li>
+
+<li>Logical groups,
+delimited by parentheses.</li>
+
+<li>Phrases,
+delimited by double quotes.</li>
+</ul>
+
+<p>Additionally,
+the following syntax can be enabled via <a href="#set_heed_colons" 
class="podlinkpod"
+>set_heed_colons()</a>:</p>
+
+<ul>
+<li>Field-specific constructs,
+in the form of &#8216;fieldname:termtext&#8217; or &#8216;fieldname:(foo 
bar)&#8217;.
+(The field specified by &#8216;fieldname:&#8217; will be used instead of the 
QueryParser&#8217;s default fields).</li>
+</ul>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $query_parser = Lucy::Search::QueryParser-&#62;new(
+    schema         =&#62; $searcher-&#62;get_schema,    # required
+    analyzer       =&#62; $analyzer,                # overrides schema
+    fields         =&#62; [&#39;bodytext&#39;],             # default: indexed 
fields
+    default_boolop =&#62; &#39;AND&#39;,                    # default: 
&#39;OR&#39;
+);</pre>
+
+<p>Constructor.</p>
+
+<ul>
+<li><b>schema</b> - A <a href="../../Lucy/Plan/Schema.html" class="podlinkpod"
+>Schema</a>.</li>
+
+<li><b>analyzer</b> - An <a href="../../Lucy/Analysis/Analyzer.html" 
class="podlinkpod"
+>Analyzer</a>.
+Ordinarily,
+the analyzers specified by each field&#8217;s definition will be used,
+but if <code>analyzer</code> is supplied,
+it will override and be used for all fields.
+This can lead to mismatches between what is in the index and what is being 
searched for,
+so use caution.</li>
+
+<li><b>fields</b> - The names of the fields which will be searched against.
+Defaults to those fields which are defined as indexed in the supplied 
Schema.</li>
+
+<li><b>default_boolop</b> - Two possible values: &#8216;AND&#8217; and 
&#8216;OR&#8217;.
+The default is &#8216;OR&#8217;,
+which means: return documents which match any of the query terms.
+If you want only documents which match all of the query terms,
+set this to &#8216;AND&#8217;.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="parse"
+>parse</a></h3>
+
+<pre>my $query = $query_parser-&#62;parse($query_string);
+my $query = $query_parser-&#62;parse();  # default: undef</pre>
+
+<p>Build a Query object from the contents of a query string.
+At present,
+implemented internally by calling <a href="#tree" class="podlinkpod"
+>tree()</a>,
+<a href="#expand" class="podlinkpod"
+>expand()</a>,
+and <a href="#prune" class="podlinkpod"
+>prune()</a>.</p>
+
+<ul>
+<li><b>query_string</b> - The string to be parsed.
+May be undef.</li>
+</ul>
+
+<p>Returns: a Query.</p>
+
+<h3><a class='u'
+name="tree"
+>tree</a></h3>
+
+<pre>my $query = $query_parser-&#62;tree($query_string);</pre>
+
+<p>Parse the logical structure of a query string,
+building a tree comprised of Query objects.
+Leaf nodes in the tree will most often be LeafQuery objects but might be 
MatchAllQuery or NoMatchQuery objects as well.
+Internal nodes will be objects which subclass PolyQuery: ANDQuery,
+ORQuery,
+NOTQuery,
+and RequiredOptionalQuery.</p>
+
+<p>The output of <a href="#tree" class="podlinkpod"
+>tree()</a> is an intermediate form which must be passed through <a 
href="#expand" class="podlinkpod"
+>expand()</a> before being used to feed a search.</p>
+
+<ul>
+<li><b>query_string</b> - The string to be parsed.</li>
+</ul>
+
+<p>Returns: a Query.</p>
+
+<h3><a class='u'
+name="expand"
+>expand</a></h3>
+
+<pre>my $query = $query_parser-&#62;expand($query);</pre>
+
+<p>Walk the hierarchy of a Query tree,
+descending through all PolyQuery nodes and calling <a href="#expand_leaf" 
class="podlinkpod"
+>expand_leaf()</a> on any LeafQuery nodes encountered.</p>
+
+<ul>
+<li><b>query</b> - A Query object.</li>
+</ul>
+
+<p>Returns: A Query &#8211; usually the same one that was supplied after 
in-place modification,
+but possibly another.</p>
+
+<h3><a class='u'
+name="expand_leaf"
+>expand_leaf</a></h3>
+
+<pre>my $query = $query_parser-&#62;expand_leaf($query);</pre>
+
+<p>Convert a LeafQuery into either a TermQuery,
+a PhraseQuery,
+or an ORQuery joining multiple TermQueries/PhraseQueries to accommodate 
multiple fields.
+LeafQuery text will be passed through the relevant Analyzer for each field.
+Quoted text will be transformed into PhraseQuery objects.
+Unquoted text will be converted to either a TermQuery or a PhraseQuery 
depending on how many tokens are generated.</p>
+
+<ul>
+<li><b>query</b> - A Query.
+Only LeafQuery objects will be processed; others will be passed through.</li>
+</ul>
+
+<p>Returns: A Query.</p>
+
+<h3><a class='u'
+name="prune"
+>prune</a></h3>
+
+<pre>my $query = $query_parser-&#62;prune($query);
+my $query = $query_parser-&#62;prune();  # default: undef</pre>
+
+<p>Prevent certain Query structures from returning too many results.
+Query objects built via <a href="#tree" class="podlinkpod"
+>tree()</a> and <a href="#expand" class="podlinkpod"
+>expand()</a> can generate &#8220;return the world&#8221; result sets,
+such as in the case of <code>NOT a_term_not_in_the_index</code>; <a 
href="#prune" class="podlinkpod"
+>prune()</a> walks the hierarchy and eliminates such branches.</p>
+
+<pre> &#39;NOT foo&#39;               =&#62; [NOMATCH]
+ &#39;foo OR NOT bar&#39;        =&#62; &#39;foo&#39;
+ &#39;foo OR (-bar AND -baz) =&#62; &#39;foo&#39;</pre>
+
+<p><a href="#prune" class="podlinkpod"
+>prune()</a> also eliminates some double-negative constructs &#8211; even 
though such constructs may not actually return the world:</p>
+
+<pre> &#39;foo AND -(-bar)&#39;      =&#62; &#39;foo&#39;</pre>
+
+<p>In this example,
+safety is taking precedence over logical consistency.
+If you want logical consistency instead,
+call <a href="#tree" class="podlinkpod"
+>tree()</a> then <a href="#expand" class="podlinkpod"
+>expand()</a>,
+skipping <a href="#prune" class="podlinkpod"
+>prune()</a>.</p>
+
+<ul>
+<li><b>query</b> - A Query.</li>
+</ul>
+
+<p>Returns: a Query; in most cases,
+the supplied Query after in-place modification.</p>
+
+<h3><a class='u'
+name="make_term_query"
+>make_term_query</a></h3>
+
+<pre>my $query = $query_parser-&#62;make_term_query(
+    field =&#62; $field  # required
+    term  =&#62; $term   # required
+);</pre>
+
+<p>Factory method creating a TermQuery.</p>
+
+<ul>
+<li><b>field</b> - Field name.</li>
+
+<li><b>term</b> - Term text.</li>
+</ul>
+
+<p>Returns: A Query.</p>
+
+<h3><a class='u'
+name="make_phrase_query"
+>make_phrase_query</a></h3>
+
+<pre>my $query = $query_parser-&#62;make_phrase_query(
+    field =&#62; $field  # required
+    terms =&#62; $terms  # required
+);</pre>
+
+<p>Factory method creating a PhraseQuery.</p>
+
+<ul>
+<li><b>field</b> - Field that the phrase must occur in.</li>
+
+<li><b>terms</b> - Ordered array of terms that must match.</li>
+</ul>
+
+<p>Returns: A Query.</p>
+
+<h3><a class='u'
+name="make_or_query"
+>make_or_query</a></h3>
+
+<pre>my $query = $query_parser-&#62;make_or_query($children);
+my $query = $query_parser-&#62;make_or_query();  # default: undef</pre>
+
+<p>Factory method creating an ORQuery.</p>
+
+<ul>
+<li><b>children</b> - Array of child Queries.</li>
+</ul>
+
+<p>Returns: A Query.</p>
+
+<h3><a class='u'
+name="make_and_query"
+>make_and_query</a></h3>
+
+<pre>my $query = $query_parser-&#62;make_and_query($children);
+my $query = $query_parser-&#62;make_and_query();  # default: undef</pre>
+
+<p>Factory method creating an ANDQuery.</p>
+
+<ul>
+<li><b>children</b> - Array of child Queries.</li>
+</ul>
+
+<p>Returns: A Query.</p>
+
+<h3><a class='u'
+name="make_not_query"
+>make_not_query</a></h3>
+
+<pre>my $query = $query_parser-&#62;make_not_query($negated_query);</pre>
+
+<p>Factory method creating a NOTQuery.</p>
+
+<ul>
+<li><b>negated_query</b> - Query to be inverted.</li>
+</ul>
+
+<p>Returns: A Query.</p>
+
+<h3><a class='u'
+name="make_req_opt_query"
+>make_req_opt_query</a></h3>
+
+<pre>my $query = $query_parser-&#62;make_req_opt_query(
+    required_query =&#62; $required_query  # required
+    optional_query =&#62; $optional_query  # required
+);</pre>
+
+<p>Factory method creating a RequiredOptionalQuery.</p>
+
+<ul>
+<li><b>required_query</b> - Query must must match.</li>
+
+<li><b>optional_query</b> - Query which should match.</li>
+</ul>
+
+<p>Returns: A Query.</p>
+
+<h3><a class='u'
+name="set_heed_colons"
+>set_heed_colons</a></h3>
+
+<pre>$query_parser-&#62;set_heed_colons($heed_colons);</pre>
+
+<p>Enable/disable parsing of <code>fieldname:foo</code> constructs.</p>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::QueryParser isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/RangeQuery.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/RangeQuery.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/RangeQuery.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/RangeQuery.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,109 @@
+Title: Lucy::Search::RangeQuery – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::RangeQuery - Match a range of values.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre># Match all articles by &#34;Foo&#34; published since the year 2000.
+my $range_query = Lucy::Search::RangeQuery-&#62;new(
+    field         =&#62; &#39;publication_date&#39;,
+    lower_term    =&#62; &#39;2000-01-01&#39;,
+    include_lower =&#62; 1,
+);
+my $author_query = Lucy::Search::TermQuery-&#62;new(
+    field =&#62; &#39;author_last_name&#39;,
+    text  =&#62; &#39;Foo&#39;,
+);
+my $and_query = Lucy::Search::ANDQuery-&#62;new(
+    children =&#62; [ $range_query, $author_query ],
+);
+my $hits = $searcher-&#62;hits( query =&#62; $and_query );
+...</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>RangeQuery matches documents where the value for a particular field falls 
within a given range.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $range_query = Lucy::Search::RangeQuery-&#62;new(
+    field         =&#62; &#39;product_number&#39;, # required
+    lower_term    =&#62; &#39;003&#39;,            # see below
+    upper_term    =&#62; &#39;060&#39;,            # see below
+    include_lower =&#62; 0,                # default true
+    include_upper =&#62; 0,                # default true
+);</pre>
+
+<p>Create a new RangeQuery.</p>
+
+<p>Takes 5 parameters; <code>field</code> is required,
+as is at least one of either <code>lower_term</code> or 
<code>upper_term</code>.</p>
+
+<ul>
+<li><b>field</b> - The name of a <code>sortable</code> field.</li>
+
+<li><b>lower_term</b> - Lower delimiter.
+If not supplied,
+all values less than <code>upper_term</code> will pass.</li>
+
+<li><b>upper_term</b> - Upper delimiter.
+If not supplied,
+all values greater than <code>lower_term</code> will pass.</li>
+
+<li><b>include_lower</b> - Indicates whether docs which match 
<code>lower_term</code> should be included in the results.</li>
+
+<li><b>include_upper</b> - Indicates whether docs which match 
<code>upper_term</code> should be included in the results.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="make_compiler"
+>make_compiler</a></h3>
+
+<pre>my $compiler = $range_query-&#62;make_compiler(
+    searcher    =&#62; $searcher     # required
+    boost       =&#62; $boost        # required
+    subordinate =&#62; $subordinate  # default: false
+);</pre>
+
+<p>Abstract factory method returning a Compiler derived from this Query.</p>
+
+<ul>
+<li><b>searcher</b> - A Searcher.</li>
+
+<li><b>boost</b> - A scoring multiplier.</li>
+
+<li><b>subordinate</b> - Indicates whether the Query is a subquery (as opposed 
to a top-level query).
+If false,
+the implementation must invoke <a 
href="../../Lucy/Search/Compiler.html#normalize" class="podlinkpod"
+>normalize()</a> on the newly minted Compiler object before returning it.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::RangeQuery isa <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Lucy::Search::Query</a> isa Clownfish::Obj.</p>
+
+</div>

Added: 
lucy/site/trunk/content/docs/perl/Lucy/Search/RequiredOptionalQuery.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/RequiredOptionalQuery.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/RequiredOptionalQuery.mdtext 
(added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/RequiredOptionalQuery.mdtext 
Mon Apr  4 09:22:30 2016
@@ -0,0 +1,123 @@
+Title: Lucy::Search::RequiredOptionalQuery – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::RequiredOptionalQuery - Join results for two Queries,
+one required,
+one optional.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $foo_and_maybe_bar = Lucy::Search::RequiredOptionalQuery-&#62;new(
+    required_query =&#62; $foo_query,
+    optional_query =&#62; $bar_query,
+);
+my $hits = $searcher-&#62;hits( query =&#62; $foo_and_maybe_bar );
+...</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>RequiredOptionalQuery joins the result sets of one Query which MUST match,
+and one Query which SHOULD match.
+When only the required Query matches,
+its score is passed along; when both match,
+the scores are summed.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $reqopt_query = Lucy::Search::RequiredOptionalQuery-&#62;new(
+    required_query =&#62; $foo_query,    # required
+    optional_query =&#62; $bar_query,    # required
+);</pre>
+
+<p>Create a new RequiredOptionalQuery.</p>
+
+<ul>
+<li><b>required_query</b> - Query must must match.</li>
+
+<li><b>optional_query</b> - Query which should match.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="get_required_query"
+>get_required_query</a></h3>
+
+<pre>my $query = $required_optional_query-&#62;get_required_query();</pre>
+
+<p>Getter for the required Query.</p>
+
+<h3><a class='u'
+name="set_required_query"
+>set_required_query</a></h3>
+
+<pre>$required_optional_query-&#62;set_required_query($required_query);</pre>
+
+<p>Setter for the required Query.</p>
+
+<h3><a class='u'
+name="get_optional_query"
+>get_optional_query</a></h3>
+
+<pre>my $query = $required_optional_query-&#62;get_optional_query();</pre>
+
+<p>Getter for the optional Query.</p>
+
+<h3><a class='u'
+name="set_optional_query"
+>set_optional_query</a></h3>
+
+<pre>$required_optional_query-&#62;set_optional_query($optional_query);</pre>
+
+<p>Setter for the optional Query.</p>
+
+<h3><a class='u'
+name="make_compiler"
+>make_compiler</a></h3>
+
+<pre>my $compiler = $required_optional_query-&#62;make_compiler(
+    searcher    =&#62; $searcher     # required
+    boost       =&#62; $boost        # required
+    subordinate =&#62; $subordinate  # default: false
+);</pre>
+
+<p>Abstract factory method returning a Compiler derived from this Query.</p>
+
+<ul>
+<li><b>searcher</b> - A Searcher.</li>
+
+<li><b>boost</b> - A scoring multiplier.</li>
+
+<li><b>subordinate</b> - Indicates whether the Query is a subquery (as opposed 
to a top-level query).
+If false,
+the implementation must invoke <a 
href="../../Lucy/Search/Compiler.html#normalize" class="podlinkpod"
+>normalize()</a> on the newly minted Compiler object before returning it.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::RequiredOptionalQuery isa <a 
href="../../Lucy/Search/PolyQuery.html" class="podlinkpod"
+>Lucy::Search::PolyQuery</a> isa <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Lucy::Search::Query</a> isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/Searcher.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/Searcher.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/Searcher.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/Searcher.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,169 @@
+Title: Lucy::Search::Searcher – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::Searcher - Base class for searching collections of 
documents.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre># Abstract base class.</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>Abstract base class for objects which search.
+Core subclasses include <a href="../../Lucy/Search/IndexSearcher.html" 
class="podlinkpod"
+>IndexSearcher</a> and <a href="../../Lucy/Search/PolySearcher.html" 
class="podlinkpod"
+>PolySearcher</a>.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>package MySearcher;
+use base qw( Lucy::Search::Searcher );
+sub new {
+    my $self = shift-&#62;SUPER::new;
+    ...
+    return $self;
+}</pre>
+
+<p>Abstract constructor.</p>
+
+<ul>
+<li><b>schema</b> - A Schema.</li>
+</ul>
+
+<h2><a class='u'
+name="ABSTRACT_METHODS"
+>ABSTRACT METHODS</a></h2>
+
+<h3><a class='u'
+name="doc_max"
+>doc_max</a></h3>
+
+<pre>my $int = $searcher-&#62;doc_max();</pre>
+
+<p>Return the maximum number of docs in the collection represented by the 
Searcher,
+which is also the highest possible internal doc id.
+Documents which have been marked as deleted but not yet purged are included in 
this count.</p>
+
+<h3><a class='u'
+name="doc_freq"
+>doc_freq</a></h3>
+
+<pre>my $int = $searcher-&#62;doc_freq(
+    field =&#62; $field  # required
+    term  =&#62; $term   # required
+);</pre>
+
+<p>Return the number of documents which contain the term in the given 
field.</p>
+
+<ul>
+<li><b>field</b> - Field name.</li>
+
+<li><b>term</b> - The term to look up.</li>
+</ul>
+
+<h3><a class='u'
+name="collect"
+>collect</a></h3>
+
+<pre>$searcher-&#62;collect(
+    query     =&#62; $query      # required
+    collector =&#62; $collector  # required
+);</pre>
+
+<p>Iterate over hits,
+feeding them into a <a href="../../Lucy/Search/Collector.html" 
class="podlinkpod"
+>Collector</a>.</p>
+
+<ul>
+<li><b>query</b> - A Query.</li>
+
+<li><b>collector</b> - A Collector.</li>
+</ul>
+
+<h3><a class='u'
+name="fetch_doc"
+>fetch_doc</a></h3>
+
+<pre>my $hit_doc = $searcher-&#62;fetch_doc($doc_id);</pre>
+
+<p>Retrieve a document.
+Throws an error if the doc id is out of range.</p>
+
+<ul>
+<li><b>doc_id</b> - A document id.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="glean_query"
+>glean_query</a></h3>
+
+<pre>my $query = $searcher-&#62;glean_query($query);
+my $query = $searcher-&#62;glean_query();  # default: undef</pre>
+
+<p>If the supplied object is a Query,
+return it; if it&#8217;s a query string,
+create a QueryParser and parse it to produce a query against all indexed 
fields.</p>
+
+<h3><a class='u'
+name="hits"
+>hits</a></h3>
+
+<pre>my $hits = $searcher-&#62;hits(
+    query      =&#62; $query       # required
+    offset     =&#62; $offset      # default: 0
+    num_wanted =&#62; $num_wanted  # default: 10
+    sort_spec  =&#62; $sort_spec   # default: undef
+);</pre>
+
+<p>Return a Hits object containing the top results.</p>
+
+<ul>
+<li><b>query</b> - Either a Query object or a query string.</li>
+
+<li><b>offset</b> - The number of most-relevant hits to discard,
+typically used when &#8220;paging&#8221; through hits N at a time.
+Setting <code>offset</code> to 20 and <code>num_wanted</code> to 10 retrieves 
hits 21-30,
+assuming that 30 hits can be found.</li>
+
+<li><b>num_wanted</b> - The number of hits you would like to see after 
<code>offset</code> is taken into account.</li>
+
+<li><b>sort_spec</b> - A <a href="../../Lucy/Search/SortSpec.html" 
class="podlinkpod"
+>SortSpec</a>,
+which will affect how results are ranked and returned.</li>
+</ul>
+
+<h3><a class='u'
+name="get_schema"
+>get_schema</a></h3>
+
+<pre>my $schema = $searcher-&#62;get_schema();</pre>
+
+<p>Accessor for the object&#8217;s <code>schema</code> member.</p>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::Searcher isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/SortRule.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/SortRule.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/SortRule.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/SortRule.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,96 @@
+Title: Lucy::Search::SortRule – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::SortRule - Element of a SortSpec.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $sort_spec = Lucy::Search::SortSpec-&#62;new(
+    rules =&#62; [
+        Lucy::Search::SortRule-&#62;new( field =&#62; &#39;date&#39; ),
+        Lucy::Search::SortRule-&#62;new( type  =&#62; &#39;doc_id&#39; ),
+    ],
+);</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>SortRules are the building blocks used to assemble <a 
href="../../Lucy/Search/SortSpec.html" class="podlinkpod"
+>SortSpecs</a>; each SortRule defines a single level of sorting.
+For example,
+sorting first by &#8220;category&#8221; then by score requires a SortSpec with 
two SortRule elements.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $by_title   = Lucy::Search::SortRule-&#62;new( field =&#62; 
&#39;title&#39; );
+my $by_score   = Lucy::Search::SortRule-&#62;new( type  =&#62; &#39;score&#39; 
);
+my $by_doc_id  = Lucy::Search::SortRule-&#62;new( type  =&#62; 
&#39;doc_id&#39; );
+my $reverse_date = Lucy::Search::SortRule-&#62;new(
+    field   =&#62; &#39;date&#39;,
+    reverse =&#62; 1,
+);</pre>
+
+<p>Create a new SortRule.</p>
+
+<ul>
+<li><b>type</b> - Indicate whether to sort by score,
+field,
+etc.
+(The default is to sort by a field.)</li>
+
+<li><b>field</b> - The name of a <code>sortable</code> field.</li>
+
+<li><b>reverse</b> - If true,
+reverse the order of the sort for this rule.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="get_field"
+>get_field</a></h3>
+
+<pre>my $string = $sort_rule-&#62;get_field();</pre>
+
+<p>Accessor for &#8220;field&#8221; member.</p>
+
+<h3><a class='u'
+name="get_type"
+>get_type</a></h3>
+
+<pre>my $int = $sort_rule-&#62;get_type();</pre>
+
+<p>Accessor for &#8220;type&#8221; member.</p>
+
+<h3><a class='u'
+name="get_reverse"
+>get_reverse</a></h3>
+
+<pre>my $bool = $sort_rule-&#62;get_reverse();</pre>
+
+<p>Accessor for &#8220;reverse&#8221; member.</p>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::SortRule isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/SortSpec.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/SortSpec.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/SortSpec.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/SortSpec.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,62 @@
+Title: Lucy::Search::SortSpec – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::SortSpec - Specify a custom sort order for search results.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $sort_spec = Lucy::Search::SortSpec-&#62;new(
+    rules =&#62; [
+        Lucy::Search::SortRule-&#62;new( field =&#62; &#39;date&#39; ),
+        Lucy::Search::SortRule-&#62;new( type  =&#62; &#39;doc_id&#39; ),
+    ],
+);
+my $hits = $searcher-&#62;hits(
+    query     =&#62; $query,
+    sort_spec =&#62; $sort_spec,
+);</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>By default,
+searches return results in order of relevance; SortSpec allows you to indicate 
an alternate order via an array of <a href="../../Lucy/Search/SortRule.html" 
class="podlinkpod"
+>SortRules</a>.</p>
+
+<p>Fields you wish to sort against must be <code>sortable</code>.</p>
+
+<p>For a stable sort (important when paging through results),
+add a sort-by-doc rule as the last SortRule.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $sort_spec = Lucy::Search::SortSpec-&#62;new( rules =&#62; \@rules 
);</pre>
+
+<p>Create a new SortSpec.</p>
+
+<ul>
+<li><b>rules</b> - An array of SortRules.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::SortSpec isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/Span.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/Span.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/Span.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/Span.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,141 @@
+Title: Lucy::Search::Span – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::Span - An offset,
+a length,
+and a weight.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $combined_length = $upper_span-&#62;get_length
+    + ( $upper_span-&#62;get_offset - $lower_span-&#62;get_offset );
+my $combined_span = Lucy::Search::Span-&#62;new(
+    offset =&#62; $lower_span-&#62;get_offset,
+    length =&#62; $combined_length,
+);
+...</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>Span objects store information about a span across an array of&#8230; 
something.
+The unit is context-dependent.</p>
+
+<p>Text is one possibility,
+in which case offset and length might be measured in Unicode code points.
+However,
+the Span could also refer to a span within an array of tokens,
+for example &#8211; in which case the start and offset might be measured in 
token positions.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $span = Lucy::Search::Span-&#62;new(
+    offset =&#62; 75,     # required
+    length =&#62; 7,      # required
+    weight =&#62; 1.0,    # default 0.0
+);</pre>
+
+<p>Create a new Span.</p>
+
+<ul>
+<li><b>offset</b> - Integer offset,
+unit is context-dependent.</li>
+
+<li><b>length</b> - Integer length,
+unit is context-dependent.</li>
+
+<li><b>weight</b> - A floating point weight.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="get_offset"
+>get_offset</a></h3>
+
+<pre>my $int = $span-&#62;get_offset();</pre>
+
+<p>Accessor for <code>offset</code> attribute.</p>
+
+<h3><a class='u'
+name="set_offset"
+>set_offset</a></h3>
+
+<pre>$span-&#62;set_offset($offset);</pre>
+
+<p>Setter for <code>offset</code> attribute.</p>
+
+<h3><a class='u'
+name="get_length"
+>get_length</a></h3>
+
+<pre>my $int = $span-&#62;get_length();</pre>
+
+<p>Accessor for <code>length</code> attribute.</p>
+
+<h3><a class='u'
+name="set_length"
+>set_length</a></h3>
+
+<pre>$span-&#62;set_length($length);</pre>
+
+<p>Setter for <code>length</code> attribute.</p>
+
+<h3><a class='u'
+name="get_weight"
+>get_weight</a></h3>
+
+<pre>my $float = $span-&#62;get_weight();</pre>
+
+<p>Accessor for <code>weight</code> attribute.</p>
+
+<h3><a class='u'
+name="set_weight"
+>set_weight</a></h3>
+
+<pre>$span-&#62;set_weight($weight);</pre>
+
+<p>Setter for <code>weight</code> attribute.</p>
+
+<h3><a class='u'
+name="compare_to"
+>compare_to</a></h3>
+
+<pre>my $int = $span-&#62;compare_to($other);</pre>
+
+<p>Indicate whether one object is less than,
+equal to,
+or greater than another.</p>
+
+<ul>
+<li><b>other</b> - Another Obj.</li>
+</ul>
+
+<p>Returns: 0 if the objects are equal,
+a negative number if <code>self</code> is less than <code>other</code>,
+and a positive number if <code>self</code> is greater than 
<code>other</code>.</p>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::Span isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Search/TermQuery.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Search/TermQuery.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Search/TermQuery.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Search/TermQuery.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,100 @@
+Title: Lucy::Search::TermQuery – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Search::TermQuery - Query which matches individual terms.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $term_query = Lucy::Search::TermQuery-&#62;new(
+    field =&#62; &#39;content&#39;,
+    term  =&#62; &#39;foo&#39;, 
+);
+my $hits = $searcher-&#62;hits( query =&#62; $term_query );</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>TermQuery is a subclass of <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Query</a> for matching individual terms in a specific field.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $term_query = Lucy::Search::TermQuery-&#62;new(
+    field =&#62; &#39;content&#39;,    # required
+    term  =&#62; &#39;foo&#39;,        # required
+);</pre>
+
+<p>Create a new TermQuery.</p>
+
+<ul>
+<li><b>field</b> - Field name.</li>
+
+<li><b>term</b> - Term text.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="get_field"
+>get_field</a></h3>
+
+<pre>my $string = $term_query-&#62;get_field();</pre>
+
+<p>Accessor for object&#8217;s <code>field</code> member.</p>
+
+<h3><a class='u'
+name="get_term"
+>get_term</a></h3>
+
+<pre>my $obj = $term_query-&#62;get_term();</pre>
+
+<p>Accessor for object&#8217;s <code>term</code> member.</p>
+
+<h3><a class='u'
+name="make_compiler"
+>make_compiler</a></h3>
+
+<pre>my $compiler = $term_query-&#62;make_compiler(
+    searcher    =&#62; $searcher     # required
+    boost       =&#62; $boost        # required
+    subordinate =&#62; $subordinate  # default: false
+);</pre>
+
+<p>Abstract factory method returning a Compiler derived from this Query.</p>
+
+<ul>
+<li><b>searcher</b> - A Searcher.</li>
+
+<li><b>boost</b> - A scoring multiplier.</li>
+
+<li><b>subordinate</b> - Indicates whether the Query is a subquery (as opposed 
to a top-level query).
+If false,
+the implementation must invoke <a 
href="../../Lucy/Search/Compiler.html#normalize" class="podlinkpod"
+>normalize()</a> on the newly minted Compiler object before returning it.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Search::TermQuery isa <a href="../../Lucy/Search/Query.html" 
class="podlinkpod"
+>Lucy::Search::Query</a> isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Simple.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Simple.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Simple.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Simple.mdtext Mon Apr  4 09:22:30 
2016
@@ -0,0 +1,153 @@
+Title: Lucy::Simple – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Simple - Basic search engine.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<p>First,
+build an index of your documents.</p>
+
+<pre>my $index = Lucy::Simple-&#62;new(
+    path     =&#62; &#39;/path/to/index/&#39;
+    language =&#62; &#39;en&#39;,
+);
+
+while ( my ( $title, $content ) = each %source_docs ) {
+    $index-&#62;add_doc({
+        title    =&#62; $title,
+        content  =&#62; $content,
+    });
+}</pre>
+
+<p>Later,
+search the index.</p>
+
+<pre>my $total_hits = $index-&#62;search(
+    query      =&#62; $query_string,
+    offset     =&#62; 0,
+    num_wanted =&#62; 10,
+);
+
+print &#34;Total hits: $total_hits\n&#34;;
+while ( my $hit = $index-&#62;next ) {
+    print &#34;$hit-&#62;{title}\n&#34;,
+}</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>Lucy::Simple is a stripped-down interface for the Apache Lucy search engine 
library.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $lucy = Lucy::Simple-&#62;new(
+    path     =&#62; &#39;/path/to/index/&#39;,
+    language =&#62; &#39;en&#39;,
+);</pre>
+
+<p>Create a Lucy::Simple object,
+which can be used for both indexing and searching.
+Both parameters <code>path</code> and <code>language</code> are required.</p>
+
+<ul>
+<li><b>path</b> - Where the index directory should be located.
+If no index is found at the specified location,
+one will be created.</li>
+
+<li><b>language</b> - The language of the documents in your collection,
+indicated by a two-letter ISO code.
+12 languages are supported:
+<pre>|-----------------------|
+| Language   | ISO code |
+|-----------------------|
+| Danish     | da       |
+| Dutch      | nl       |
+| English    | en       |
+| Finnish    | fi       |
+| French     | fr       |
+| German     | de       |
+| Italian    | it       |
+| Norwegian  | no       |
+| Portuguese | pt       |
+| Spanish    | es       |
+| Swedish    | sv       |
+| Russian    | ru       |
+|-----------------------|</pre>
+</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="add_doc"
+>add_doc</a></h3>
+
+<pre>$lucy-&#62;add_doc({
+    location =&#62; $url,
+    title    =&#62; $title,
+    content  =&#62; $content,
+});</pre>
+
+<p>Add a document to the index.
+The document must be supplied as a hashref,
+with field names as keys and content as values.</p>
+
+<h3><a class='u'
+name="search"
+>search</a></h3>
+
+<pre>my $int = $simple-&#62;search(
+    query      =&#62; $query       # required
+    offset     =&#62; $offset      # default: 0
+    num_wanted =&#62; $num_wanted  # default: 10
+);</pre>
+
+<p>Search the index.
+Returns the total number of documents which match the query.
+(This number is unlikely to match <code>num_wanted</code>.)</p>
+
+<ul>
+<li><b>query</b> - A search query string.</li>
+
+<li><b>offset</b> - The number of most-relevant hits to discard,
+typically used when &#8220;paging&#8221; through hits N at a time.
+Setting offset to 20 and num_wanted to 10 retrieves hits 21-30,
+assuming that 30 hits can be found.</li>
+
+<li><b>num_wanted</b> - The number of hits you would like to see after 
<code>offset</code> is taken into account.</li>
+</ul>
+
+<h3><a class='u'
+name="next"
+>next</a></h3>
+
+<pre>my $hit_doc = $simple-&#62;next();</pre>
+
+<p>Return the next hit,
+or undef when the iterator is exhausted.</p>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Simple isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Store/FSFolder.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Store/FSFolder.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Store/FSFolder.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Store/FSFolder.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,55 @@
+Title: Lucy::Store::FSFolder – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Store::FSFolder - File System implementation of Folder.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $folder = Lucy::Store::FSFolder-&#62;new(
+    path =&#62; &#39;/path/to/folder&#39;,
+);</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>Implementation of <a href="../../Lucy/Store/Folder.html" class="podlinkpod"
+>Folder</a> using a single file system directory and multiple files.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $folder = Lucy::Store::FSFolder-&#62;new(
+    path =&#62; &#39;/path/to/folder&#39;,
+);</pre>
+
+<p>Create a new Folder.</p>
+
+<ul>
+<li><b>path</b> - Location of the index.
+If the specified directory does not exist already,
+it will NOT be created,
+in order to prevent misconfigured read applications from spawning bogus files 
&#8211; so it may be necessary to create the directory yourself.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Store::FSFolder isa <a href="../../Lucy/Store/Folder.html" 
class="podlinkpod"
+>Lucy::Store::Folder</a> isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Store/Folder.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Store/Folder.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Store/Folder.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Store/Folder.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,39 @@
+Title: Lucy::Store::Folder – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Store::Folder - Abstract class representing a directory.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre># Abstract base class.</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>A &#8220;file&#8221; within a Folder might be a real file on disk &#8211; 
or it might be a RAM buffer.
+Similarly,
+Delete() might delete a file from the file system,
+or a key-value pair from a hash,
+or something else.</p>
+
+<p>The archetypal implementation of Folder,
+<a href="../../Lucy/Store/FSFolder.html" class="podlinkpod"
+>FSFolder</a>,
+represents a directory on the file system holding a collection of files.</p>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Store::Folder isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Store/Lock.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Store/Lock.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Store/Lock.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Store/Lock.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,155 @@
+Title: Lucy::Store::Lock – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Store::Lock - Abstract class representing an interprocess mutex 
lock.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $lock = $lock_factory-&#62;make_lock(
+    name    =&#62; &#39;write&#39;,
+    timeout =&#62; 5000,
+);
+$lock-&#62;obtain or die &#34;can&#39;t get lock for &#34; . 
$lock-&#62;get_name;
+do_stuff();
+$lock-&#62;release;</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>The Lock class produces an interprocess mutex lock.
+The default subclass uses dot-lock files,
+but alternative implementations are possible.</p>
+
+<p>Each lock must have a name which is unique per resource to be locked.
+Each lock also has a &#8220;host&#8221; id which should be unique per machine; 
it is used to help clear away stale locks.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $lock = Lucy::Store::Lock-&#62;new(
+    name     =&#62; &#39;commit&#39;,     # required
+    folder   =&#62; $folder,      # required
+    host     =&#62; $hostname,    # required
+    timeout  =&#62; 5000,         # default: 0
+    interval =&#62; 1000,         # default: 100
+);</pre>
+
+<p>Abstract constructor.</p>
+
+<ul>
+<li><b>folder</b> - A Folder.</li>
+
+<li><b>name</b> - String identifying the resource to be locked,
+which must consist solely of characters matching [-_.A-Za-z0-9].</li>
+
+<li><b>host</b> - A unique per-machine identifier.</li>
+
+<li><b>timeout</b> - Time in milliseconds to keep retrying before abandoning 
the attempt to <a href="#obtain" class="podlinkpod"
+>obtain()</a> a lock.</li>
+
+<li><b>interval</b> - Time in milliseconds between retries.</li>
+</ul>
+
+<h2><a class='u'
+name="ABSTRACT_METHODS"
+>ABSTRACT METHODS</a></h2>
+
+<h3><a class='u'
+name="shared"
+>shared</a></h3>
+
+<pre>my $bool = $lock-&#62;shared();</pre>
+
+<p>Returns true if the Lock is shared,
+false if the Lock is exclusive.</p>
+
+<h3><a class='u'
+name="request"
+>request</a></h3>
+
+<pre>my $bool = $lock-&#62;request();</pre>
+
+<p>Make one attempt to acquire the lock.</p>
+
+<p>The semantics of <a href="#request" class="podlinkpod"
+>request()</a> differ depending on whether <a href="#shared" class="podlinkpod"
+>shared()</a> returns true.
+If the Lock is <a href="#shared" class="podlinkpod"
+>shared()</a>,
+then <a href="#request" class="podlinkpod"
+>request()</a> should not fail if another lock is held against the resource 
identified by <code>name</code> (though it might fail for other reasons).
+If it is not <a href="#shared" class="podlinkpod"
+>shared()</a> &#8211; i.e.
+it&#8217;s an exclusive (write) lock &#8211; then other locks should cause <a 
href="#request" class="podlinkpod"
+>request()</a> to fail.</p>
+
+<p>Returns: true on success,
+false on failure (sets the global error object returned by 
Clownfish-&#62;error).</p>
+
+<h3><a class='u'
+name="release"
+>release</a></h3>
+
+<pre>$lock-&#62;release();</pre>
+
+<p>Release the lock.</p>
+
+<h3><a class='u'
+name="is_locked"
+>is_locked</a></h3>
+
+<pre>my $bool = $lock-&#62;is_locked();</pre>
+
+<p>Indicate whether the resource identified by this lock&#8217;s name is 
currently locked.</p>
+
+<p>Returns: true if the resource is locked,
+false otherwise.</p>
+
+<h3><a class='u'
+name="clear_stale"
+>clear_stale</a></h3>
+
+<pre>$lock-&#62;clear_stale();</pre>
+
+<p>Release all locks that meet the following three conditions: the lock name 
matches,
+the host id matches,
+and the process id that the lock was created under no longer identifies an 
active process.</p>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="obtain"
+>obtain</a></h3>
+
+<pre>my $bool = $lock-&#62;obtain();</pre>
+
+<p>Call <a href="#request" class="podlinkpod"
+>request()</a> once per <code>interval</code> until <a href="#request" 
class="podlinkpod"
+>request()</a> returns success or the <code>timeout</code> has been 
reached.</p>
+
+<p>Returns: true on success,
+false on failure (sets the global error object returned by 
Clownfish-&#62;error).</p>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Store::Lock isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Store/LockErr.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Store/LockErr.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Store/LockErr.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Store/LockErr.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,43 @@
+Title: Lucy::Store::LockErr – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Store::LockErr - Lock exception.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>while (1) {
+    my $bg_merger = eval {
+        Lucy::Index::BackgroundMerger-&#62;new( index =&#62; $index );
+    };
+    if ( blessed($@) and $@-&#62;isa(&#34;Lucy::Store::LockErr&#34;) ) {
+        warn &#34;Retrying...\n&#34;;
+    }
+    elsif (!$bg_merger) {
+        # Re-throw.
+        die &#34;Failed to open BackgroundMerger: $@&#34;;
+    }
+    ...
+}</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>LockErr is a subclass of <a href="../../Clownfish/Err.html" 
class="podlinkpod"
+>Err</a> which indicates that a file locking problem occurred.</p>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Store::LockErr isa Clownfish::Err isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Store/LockFactory.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Store/LockFactory.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Store/LockFactory.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Store/LockFactory.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,120 @@
+Title: Lucy::Store::LockFactory – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Store::LockFactory - Create Locks.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>use Sys::Hostname qw( hostname );
+my $hostname = hostname() or die &#34;Can&#39;t get unique hostname&#34;;
+my $folder = Lucy::Store::FSFolder-&#62;new( 
+    path =&#62; &#39;/path/to/index&#39;, 
+);
+my $lock_factory = Lucy::Store::LockFactory-&#62;new(
+    folder =&#62; $folder,
+    host   =&#62; $hostname,
+);
+my $write_lock = $lock_factory-&#62;make_lock(
+    name     =&#62; &#39;write&#39;,
+    timeout  =&#62; 5000,
+    interval =&#62; 100,
+);</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>LockFactory is used to spin off interprocess mutex locks used by various 
index reading and writing components.
+The default implementation uses lockfiles,
+but LockFactory subclasses which are implemented using alternatives such as 
flock() are possible.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $lock_factory = Lucy::Store::LockFactory-&#62;new(
+    folder =&#62; $folder,      # required
+    host   =&#62; $hostname,    # required
+);</pre>
+
+<p>Create a new LockFactory.</p>
+
+<ul>
+<li><b>folder</b> - A <a href="../../Lucy/Store/Folder.html" class="podlinkpod"
+>Folder</a>.</li>
+
+<li><b>host</b> - An identifier which should be unique per-machine.</li>
+</ul>
+
+<h2><a class='u'
+name="METHODS"
+>METHODS</a></h2>
+
+<h3><a class='u'
+name="make_lock"
+>make_lock</a></h3>
+
+<pre>my $lock = $lock_factory-&#62;make_lock(
+    name     =&#62; $name      # required
+    timeout  =&#62; $timeout   # default: 0
+    interval =&#62; $interval  # default: 100
+);</pre>
+
+<p>Return a Lock object,
+which,
+once <a href="../../Lucy/Store/Lock.html#obtain" class="podlinkpod"
+>obtain()</a> returns successfully,
+maintains an exclusive lock on a resource.</p>
+
+<ul>
+<li><b>name</b> - A file-system-friendly id which identifies the resource to 
be locked.</li>
+
+<li><b>timeout</b> - Time in milliseconds to keep retrying before abandoning 
the attempt to <a href="../../Lucy/Store/Lock.html#obtain" class="podlinkpod"
+>obtain()</a> a lock.</li>
+
+<li><b>interval</b> - Time in milliseconds between retries.</li>
+</ul>
+
+<h3><a class='u'
+name="make_shared_lock"
+>make_shared_lock</a></h3>
+
+<pre>my $lock = $lock_factory-&#62;make_shared_lock(
+    name     =&#62; $name      # required
+    timeout  =&#62; $timeout   # default: 0
+    interval =&#62; $interval  # default: 100
+);</pre>
+
+<p>Return a Lock object for which <a href="../../Lucy/Store/Lock.html#shared" 
class="podlinkpod"
+>shared()</a> returns true,
+and which maintains a non-exclusive lock on a resource once <a 
href="../../Lucy/Store/Lock.html#obtain" class="podlinkpod"
+>obtain()</a> returns success.</p>
+
+<ul>
+<li><b>name</b> - A file-system-friendly id which identifies the resource to 
be locked.</li>
+
+<li><b>timeout</b> - Time in milliseconds to keep retrying before abandoning 
the attempt to <a href="../../Lucy/Store/Lock.html#obtain" class="podlinkpod"
+>obtain()</a> a lock.</li>
+
+<li><b>interval</b> - Time in milliseconds between retries.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Store::LockFactory isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/Lucy/Store/RAMFolder.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/Lucy/Store/RAMFolder.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/Lucy/Store/RAMFolder.mdtext (added)
+++ lucy/site/trunk/content/docs/perl/Lucy/Store/RAMFolder.mdtext Mon Apr  4 
09:22:30 2016
@@ -0,0 +1,57 @@
+Title: Lucy::Store::RAMFolder – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>Lucy::Store::RAMFolder - In-memory Folder implementation.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre>my $folder = Lucy::Store::RAMFolder-&#62;new;
+
+# or sometimes...
+my $folder = Lucy::Store::RAMFolder-&#62;new(
+    path =&#62; $relative_path,
+);</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>RAMFolder is an entirely in-memory implementation of <a 
href="../../Lucy/Store/Folder.html" class="podlinkpod"
+>Folder</a>,
+primarily used for testing and development.</p>
+
+<h2><a class='u'
+name="CONSTRUCTORS"
+>CONSTRUCTORS</a></h2>
+
+<h3><a class='u'
+name="new"
+>new</a></h3>
+
+<pre>my $folder = Lucy::Store::RAMFolder-&#62;new(
+    path =&#62; $relative_path,   # default: empty string
+);</pre>
+
+<p>Create a new RAMFolder.</p>
+
+<ul>
+<li><b>path</b> - Relative path,
+used for subfolders.</li>
+</ul>
+
+<h2><a class='u'
+name="INHERITANCE"
+>INHERITANCE</a></h2>
+
+<p>Lucy::Store::RAMFolder isa <a href="../../Lucy/Store/Folder.html" 
class="podlinkpod"
+>Lucy::Store::Folder</a> isa Clownfish::Obj.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/LucyX/Index/ByteBufDocReader.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/LucyX/Index/ByteBufDocReader.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/LucyX/Index/ByteBufDocReader.mdtext 
(added)
+++ lucy/site/trunk/content/docs/perl/LucyX/Index/ByteBufDocReader.mdtext Mon 
Apr  4 09:22:30 2016
@@ -0,0 +1,25 @@
+Title: LucyX::Index::ByteBufDocReader – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>LucyX::Index::ByteBufDocReader - Read a Doc as a fixed-width byte array.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<pre># See LucyX::Index::ByteBufDocWriter</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>This is a proof-of-concept class to demonstrate alternate implementations 
for fetching documents.
+It is unsupported.</p>
+
+</div>

Added: lucy/site/trunk/content/docs/perl/LucyX/Index/ByteBufDocWriter.mdtext
URL: 
http://svn.apache.org/viewvc/lucy/site/trunk/content/docs/perl/LucyX/Index/ByteBufDocWriter.mdtext?rev=1737642&view=auto
==============================================================================
--- lucy/site/trunk/content/docs/perl/LucyX/Index/ByteBufDocWriter.mdtext 
(added)
+++ lucy/site/trunk/content/docs/perl/LucyX/Index/ByteBufDocWriter.mdtext Mon 
Apr  4 09:22:30 2016
@@ -0,0 +1,90 @@
+Title: LucyX::Index::ByteBufDocWriter – Apache Lucy Documentation
+
+<div>
+<a name='___top' class='dummyTopAnchor' ></a>
+
+<h2><a class='u'
+name="NAME"
+>NAME</a></h2>
+
+<p>LucyX::Index::ByteBufDocWriter - Write a Doc as a fixed-width byte 
array.</p>
+
+<h2><a class='u'
+name="SYNOPSIS"
+>SYNOPSIS</a></h2>
+
+<p>Create an <a href="../../Lucy/Plan/Architecture.html" class="podlinkpod"
+>Architecture</a> subclass which overrides register_doc_writer() and 
register_doc_reader():</p>
+
+<pre>package MyArchitecture;
+use base qw( Lucy::Plan::Architecture );
+use LucyX::Index::ByteBufDocReader;
+use LucyX::Index::ByteBufDocWriter;
+
+sub register_doc_writer {
+    my ( $self, $seg_writer ) = @_; 
+    my $doc_writer = LucyX::Index::ByteBufDocWriter-&#62;new(
+        width      =&#62; 16,
+        field      =&#62; &#39;value&#39;,
+        snapshot   =&#62; $seg_writer-&#62;get_snapshot,
+        segment    =&#62; $seg_writer-&#62;get_segment,
+        polyreader =&#62; $seg_writer-&#62;get_polyreader,
+    );  
+    $seg_writer-&#62;register(
+        api       =&#62; &#34;Lucy::Index::DocReader&#34;,
+        component =&#62; $doc_writer,
+    );  
+    $seg_writer-&#62;add_writer($doc_writer);
+}
+
+sub register_doc_reader {
+    my ( $self, $seg_reader ) = @_; 
+    my $doc_reader = LucyX::Index::ByteBufDocReader-&#62;new(
+        width    =&#62; 16,
+        field    =&#62; &#39;value&#39;,
+        schema   =&#62; $seg_reader-&#62;get_schema,
+        folder   =&#62; $seg_reader-&#62;get_folder,
+        segments =&#62; $seg_reader-&#62;get_segments,
+        seg_tick =&#62; $seg_reader-&#62;get_seg_tick,
+        snapshot =&#62; $seg_reader-&#62;get_snapshot,
+    );  
+    $seg_reader-&#62;register(
+        api       =&#62; &#39;Lucy::Index::DocReader&#39;,
+        component =&#62; $doc_reader,
+    );  
+}
+
+package MySchema;
+use base qw( Lucy::Plan::Schema );
+
+sub architecture { MyArchitecture-&#62;new }</pre>
+
+<p>Proceed as normal in your indexer app,
+making sure that every supplied document supplies a valid value for the field 
in question:</p>
+
+<pre>$indexer-&#62;add_doc({
+    title   =&#62; $title,
+    content =&#62; $content,
+    id      =&#62; $id,      # &#60;---- Must meet spec.
+});</pre>
+
+<p>Then,
+in your search app:</p>
+
+<pre>my $searcher = Lucy::Search::IndexSearcher-&#62;new( 
+    index =&#62; &#39;/path/to/index&#39;,
+);
+my $hits = $searcher-&#62;hits( query =&#62; $query );
+while ( my $id = $hits-&#62;next ) {
+    my $real_doc = $external_document_source-&#62;fetch( $doc-&#62;{value} );
+    ...
+}</pre>
+
+<h2><a class='u'
+name="DESCRIPTION"
+>DESCRIPTION</a></h2>
+
+<p>This is a proof-of-concept class to demonstrate alternate implementations 
for fetching documents.
+It is unsupported.</p>
+
+</div>


Reply via email to