Author: buildbot
Date: Mon Apr  4 09:23:00 2016
New Revision: 984655

Log:
Staging update by buildbot for lucy

Added:
    websites/staging/lucy/trunk/content/docs/0.4.0/
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/Analyzer.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/CaseFolder.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/EasyAnalyzer.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/Normalizer.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/PolyAnalyzer.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/RegexTokenizer.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/SnowballStemmer.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/SnowballStopFilter.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/StandardTokenizer.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/CustomQuery.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/CustomQueryParser.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/FastUpdates.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/DevGuide.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/DocIDs.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/FileFormat.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/FileLocking.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/IRTheory.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Tutorial/
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Tutorial.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Tutorial/Analysis.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Tutorial/BeyondSimple.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Tutorial/FieldType.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Tutorial/Highlighter.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Tutorial/QueryObjects.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Tutorial/Simple.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Document/
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Document/Doc.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Document/HitDoc.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Highlight/
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Highlight/Highlighter.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/BackgroundMerger.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/DataReader.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/DataWriter.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/DeletionsWriter.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/DocReader.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/IndexManager.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/IndexReader.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/Indexer.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/Lexicon.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/LexiconReader.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/PolyReader.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/PostingList.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/PostingListReader.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/SegReader.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/SegWriter.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/Segment.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/Similarity.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Index/Snapshot.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Object/
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Object/BitVector.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Object/Err.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Object/Obj.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Plan/
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Plan/Architecture.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Plan/BlobType.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Plan/FieldType.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Plan/FullTextType.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Plan/Schema.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Plan/StringType.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/ANDQuery.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/Collector/
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/Collector.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/Collector/BitCollector.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/Compiler.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/Hits.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/IndexSearcher.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/LeafQuery.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/MatchAllQuery.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/Matcher.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/NOTQuery.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/NoMatchQuery.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/ORQuery.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/PhraseQuery.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/PolyQuery.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/PolySearcher.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/Query.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/QueryParser.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/RangeQuery.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/RequiredOptionalQuery.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/Searcher.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/SortRule.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/SortSpec.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/Span.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Search/TermQuery.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Simple.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Store/
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Store/FSFolder.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Store/Folder.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Store/Lock.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Store/LockErr.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Store/LockFactory.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Store/RAMFolder.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Index/
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Index/ByteBufDocReader.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Index/ByteBufDocWriter.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Index/LongFieldSim.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Index/ZlibDocReader.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Index/ZlibDocWriter.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Remote/
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Remote/ClusterSearcher.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Remote/SearchClient.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Remote/SearchServer.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Search/
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Search/Filter.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Search/MockMatcher.html
    
websites/staging/lucy/trunk/content/docs/0.4.0/perl/LucyX/Search/ProximityQuery.html
    websites/staging/lucy/trunk/content/docs/0.4.0/perl/index.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/
    websites/staging/lucy/trunk/content/docs/perl/Clownfish.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/Blob.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/Boolean.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/ByteBuf.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/CharBuf.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/Class.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/Docs/
    
websites/staging/lucy/trunk/content/docs/perl/Clownfish/Docs/BuildingProjects.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/Docs/ClassIntro.html
    
websites/staging/lucy/trunk/content/docs/perl/Clownfish/Docs/WritingClasses.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/Err.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/Float.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/Hash.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/HashIterator.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/Integer.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/Obj.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/String.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/StringIterator.html
    websites/staging/lucy/trunk/content/docs/perl/Clownfish/Vector.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Analysis/Inversion.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Analysis/Token.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial/AnalysisTutorial.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial/BeyondSimpleTutorial.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial/FieldTypeTutorial.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial/HighlighterTutorial.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial/QueryObjectsTutorial.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial/SimpleTutorial.html
    websites/staging/lucy/trunk/content/docs/perl/clownfish-index.html
Removed:
    websites/staging/lucy/trunk/content/docs/perl/Lucy.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Analysis/Analyzer.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Analysis/CaseFolder.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Analysis/EasyAnalyzer.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Analysis/Normalizer.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Analysis/PolyAnalyzer.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Analysis/RegexTokenizer.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Analysis/SnowballStemmer.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Analysis/SnowballStopFilter.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Analysis/StandardTokenizer.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Cookbook.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Cookbook/CustomQuery.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Cookbook/CustomQueryParser.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Cookbook/FastUpdates.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/DevGuide.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/DocIDs.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/FileFormat.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/FileLocking.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/IRTheory.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial/Analysis.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial/BeyondSimple.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial/FieldType.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial/Highlighter.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial/QueryObjects.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Docs/Tutorial/Simple.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Document/Doc.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Document/HitDoc.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Highlight/Highlighter.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/BackgroundMerger.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/DataReader.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/DataWriter.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/DeletionsWriter.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/DocReader.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/IndexManager.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/IndexReader.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/Indexer.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/Lexicon.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/LexiconReader.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/PolyReader.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/PostingList.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/PostingListReader.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/SegReader.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/SegWriter.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/Segment.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/Similarity.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Index/Snapshot.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Object/BitVector.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Object/Err.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Object/Obj.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Plan/Architecture.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Plan/BlobType.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Plan/FieldType.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Plan/FullTextType.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Plan/Schema.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Plan/StringType.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/ANDQuery.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/Collector.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/Collector/BitCollector.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/Compiler.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/Hits.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/IndexSearcher.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/LeafQuery.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/MatchAllQuery.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/Matcher.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/NOTQuery.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/NoMatchQuery.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/ORQuery.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/PhraseQuery.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/PolyQuery.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/PolySearcher.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/Query.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/QueryParser.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/RangeQuery.html
    
websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/RequiredOptionalQuery.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/Searcher.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/SortRule.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/SortSpec.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/Span.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Search/TermQuery.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Simple.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Store/FSFolder.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Store/Folder.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Store/Lock.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Store/LockErr.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Store/LockFactory.html
    websites/staging/lucy/trunk/content/docs/perl/Lucy/Store/RAMFolder.html
    
websites/staging/lucy/trunk/content/docs/perl/LucyX/Index/ByteBufDocReader.html
    
websites/staging/lucy/trunk/content/docs/perl/LucyX/Index/ByteBufDocWriter.html
    websites/staging/lucy/trunk/content/docs/perl/LucyX/Index/LongFieldSim.html
    websites/staging/lucy/trunk/content/docs/perl/LucyX/Index/ZlibDocReader.html
    websites/staging/lucy/trunk/content/docs/perl/LucyX/Index/ZlibDocWriter.html
    
websites/staging/lucy/trunk/content/docs/perl/LucyX/Remote/ClusterSearcher.html
    websites/staging/lucy/trunk/content/docs/perl/LucyX/Remote/SearchClient.html
    websites/staging/lucy/trunk/content/docs/perl/LucyX/Remote/SearchServer.html
    websites/staging/lucy/trunk/content/docs/perl/LucyX/Search/Filter.html
    websites/staging/lucy/trunk/content/docs/perl/LucyX/Search/MockMatcher.html
    
websites/staging/lucy/trunk/content/docs/perl/LucyX/Search/ProximityQuery.html
Modified:
    websites/staging/lucy/trunk/content/   (props changed)
    websites/staging/lucy/trunk/content/docs/perl/index.html

Propchange: websites/staging/lucy/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Apr  4 09:23:00 2016
@@ -1 +1 @@
-1732649
+1737642

Added: websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy.html (added)
+++ websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy.html Mon Apr  4 
09:23:00 2016
@@ -0,0 +1,183 @@
+
+<html>
+<head>
+<title>Lucy - Apache Lucy Perl Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy - Apache Lucy search engine library.</p>
+
+<h1 id="VERSION">VERSION</h1>
+
+<p>0.4.2</p>
+
+<h1 id="SYNOPSIS">SYNOPSIS</h1>
+
+<p>First, plan out your index structure, create the index, and add 
documents:</p>
+
+<pre><code>    # indexer.pl
+    
+    use Lucy::Index::Indexer;
+    use Lucy::Plan::Schema;
+    use Lucy::Analysis::EasyAnalyzer;
+    use Lucy::Plan::FullTextType;
+    
+    # Create a Schema which defines index fields.
+    my $schema = Lucy::Plan::Schema-&gt;new;
+    my $easyanalyzer = Lucy::Analysis::EasyAnalyzer-&gt;new(
+        language =&gt; &#39;en&#39;,
+    );
+    my $type = Lucy::Plan::FullTextType-&gt;new(
+        analyzer =&gt; $easyanalyzer,
+    );
+    $schema-&gt;spec_field( name =&gt; &#39;title&#39;,   type =&gt; $type );
+    $schema-&gt;spec_field( name =&gt; &#39;content&#39;, type =&gt; $type );
+    
+    # Create the index and add documents.
+    my $indexer = Lucy::Index::Indexer-&gt;new(
+        schema =&gt; $schema,   
+        index  =&gt; &#39;/path/to/index&#39;,
+        create =&gt; 1,
+    );
+    while ( my ( $title, $content ) = each %source_docs ) {
+        $indexer-&gt;add_doc({
+            title   =&gt; $title,
+            content =&gt; $content,
+        });
+    }
+    $indexer-&gt;commit;</code></pre>
+
+<p>Then, search the index:</p>
+
+<pre><code>    # search.pl
+    
+    use Lucy::Search::IndexSearcher;
+    
+    my $searcher = Lucy::Search::IndexSearcher-&gt;new( 
+        index =&gt; &#39;/path/to/index&#39; 
+    );
+    my $hits = $searcher-&gt;hits( query =&gt; &quot;foo bar&quot; );
+    while ( my $hit = $hits-&gt;next ) {
+        print &quot;$hit-&gt;{title}\n&quot;;
+    }</code></pre>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<p>The Apache Lucy search engine library delivers high-performance, modular 
full-text search.</p>
+
+<h2 id="Features">Features</h2>
+
+<ul>
+
+<li><p>Extremely fast. A single machine can handle millions of documents.</p>
+
+</li>
+<li><p>Scalable to multiple machines.</p>
+
+</li>
+<li><p>Incremental indexing (addition/deletion of documents to/from an 
existing index).</p>
+
+</li>
+<li><p>Configurable near-real-time index updates.</p>
+
+</li>
+<li><p>Unicode support.</p>
+
+</li>
+<li><p>Support for boolean operators AND, OR, and AND NOT; parenthetical 
groupings; prepended +plus and -minus.</p>
+
+</li>
+<li><p>Algorithmic selection of relevant excerpts and highlighting of search 
terms within excerpts.</p>
+
+</li>
+<li><p>Highly customizable query and indexing APIs.</p>
+
+</li>
+<li><p>Customizable sorting.</p>
+
+</li>
+<li><p>Phrase matching.</p>
+
+</li>
+<li><p>Stemming.</p>
+
+</li>
+<li><p>Stoplists.</p>
+
+</li>
+</ul>
+
+<h2 id="Getting-Started">Getting Started</h2>
+
+<p><a href="Lucy/Simple.html">Lucy::Simple</a> provides a stripped down API 
which may suffice for many tasks.</p>
+
+<p><a href="Lucy/Docs/Tutorial.html">Lucy::Docs::Tutorial</a> demonstrates how 
to build a basic CGI search application.</p>
+
+<p>The tutorial spends most of its time on these five classes:</p>
+
+<ul>
+
+<li><p><a href="Lucy/Plan/Schema.html">Lucy::Plan::Schema</a> - Plan out your 
index.</p>
+
+</li>
+<li><p><a href="Lucy/Plan/FieldType.html">Lucy::Plan::FieldType</a> - Define 
index fields.</p>
+
+</li>
+<li><p><a href="Lucy/Index/Indexer.html">Lucy::Index::Indexer</a> - Manipulate 
index content.</p>
+
+</li>
+<li><p><a 
href="Lucy/Search/IndexSearcher.html">Lucy::Search::IndexSearcher</a> - Search 
an index.</p>
+
+</li>
+<li><p><a 
href="Lucy/Analysis/EasyAnalyzer.html">Lucy::Analysis::EasyAnalyzer</a> - A 
one-size-fits-all parser/tokenizer.</p>
+
+</li>
+</ul>
+
+<h2 id="Delving-Deeper">Delving Deeper</h2>
+
+<p><a href="Lucy/Docs/Cookbook.html">Lucy::Docs::Cookbook</a> augments the 
tutorial with more advanced recipes.</p>
+
+<p>For creating complex queries, see <a 
href="Lucy/Search/Query.html">Lucy::Search::Query</a> and its subclasses <a 
href="Lucy/Search/TermQuery.html">TermQuery</a>, <a 
href="Lucy/Search/PhraseQuery.html">PhraseQuery</a>, <a 
href="Lucy/Search/ANDQuery.html">ANDQuery</a>, <a 
href="Lucy/Search/ORQuery.html">ORQuery</a>, <a 
href="Lucy/Search/NOTQuery.html">NOTQuery</a>, <a 
href="Lucy/Search/RequiredOptionalQuery.html">RequiredOptionalQuery</a>, <a 
href="Lucy/Search/MatchAllQuery.html">MatchAllQuery</a>, and <a 
href="Lucy/Search/NoMatchQuery.html">NoMatchQuery</a>, plus <a 
href="Lucy/Search/QueryParser.html">Lucy::Search::QueryParser</a>.</p>
+
+<p>For distributed searching, see <a 
href="LucyX/Remote/SearchServer.html">LucyX::Remote::SearchServer</a>, <a 
href="LucyX/Remote/SearchClient.html">LucyX::Remote::SearchClient</a>, and <a 
href="LucyX/Remote/ClusterSearcher.html">LucyX::Remote::ClusterSearcher</a>.</p>
+
+<h2 id="Backwards-Compatibility-Policy">Backwards Compatibility Policy</h2>
+
+<p>Lucy will spin off stable forks into new namespaces periodically. The first 
will be named &quot;Lucy1&quot;. Users who require strong backwards 
compatibility should use a stable fork.</p>
+
+<p>The main namespace, &quot;Lucy&quot;, is an API-unstable development branch 
(as hinted at by its 0.x.x version number). Superficial interface changes 
happen frequently. Hard file format compatibility breaks which require 
reindexing are rare, as we generally try to provide continuity across multiple 
releases, but we reserve the right to make such changes.</p>
+
+<h1 id="CLASS-METHODS">CLASS METHODS</h1>
+
+<p>The Lucy module itself does not have a large interface, providing only a 
single public class method.</p>
+
+<h2 id="error">error</h2>
+
+<pre><code>    my $instream = $folder-&gt;open_in( file =&gt; &#39;foo&#39; ) 
or die Clownfish-&gt;error;</code></pre>
+
+<p>Access a shared variable which is set by some routines on failure. It will 
always be either a <a 
href="http://search.cpan.org/perldoc?Clownfish::Err";>Clownfish::Err</a> object 
or undef.</p>
+
+<h1 id="SUPPORT">SUPPORT</h1>
+
+<p>The Apache Lucy homepage, where you&#39;ll find links to our mailing lists 
and so on, is <a href="http://lucy.apache.org";>http://lucy.apache.org</a>. 
Please direct support questions to the Lucy users mailing list.</p>
+
+<h1 id="BUGS">BUGS</h1>
+
+<p>Not thread-safe.</p>
+
+<p>Some exceptions leak memory.</p>
+
+<p>If you find a bug, please inquire on the Lucy users mailing list about it, 
then report it on the Lucy issue tracker once it has been confirmed: <a 
href="https://issues.apache.org/jira/browse/LUCY";>https://issues.apache.org/jira/browse/LUCY</a>.</p>
+
+<h1 id="COPYRIGHT">COPYRIGHT</h1>
+
+<p>Apache Lucy is distributed under the Apache License, Version 2.0, as 
described in the file <code>LICENSE</code> included with the distribution.</p>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/Analyzer.html
==============================================================================
--- 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/Analyzer.html 
(added)
+++ 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/Analyzer.html 
Mon Apr  4 09:23:00 2016
@@ -0,0 +1,28 @@
+
+<html>
+<head>
+<title>Lucy::Analysis::Analyzer - Apache Lucy Perl Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Analysis::Analyzer - Tokenize/modify/filter text.</p>
+
+<h1 id="SYNOPSIS">SYNOPSIS</h1>
+
+<pre><code>    # Abstract base class.</code></pre>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<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/Analysis/RegexTokenizer.html">RegexTokenizer</a>), 
or it might perform case folding to facilitate case-insensitive search (<a 
href="../../Lucy/Analysis/Normalizer.html">Normalizer</a>).</p>
+
+<h1 id="INHERITANCE">INHERITANCE</h1>
+
+<p>Lucy::Analysis::Analyzer isa Clownfish::Obj.</p>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/CaseFolder.html
==============================================================================
--- 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/CaseFolder.html
 (added)
+++ 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/CaseFolder.html
 Mon Apr  4 09:23:00 2016
@@ -0,0 +1,42 @@
+
+<html>
+<head>
+<title>Lucy::Analysis::CaseFolder - Apache Lucy Perl Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Analysis::CaseFolder - Normalize case, facilitating case-insensitive 
search.</p>
+
+<h1 id="SYNOPSIS">SYNOPSIS</h1>
+
+<pre><code>    my $case_folder = Lucy::Analysis::CaseFolder-&gt;new;
+
+    my $polyanalyzer = Lucy::Analysis::PolyAnalyzer-&gt;new(
+        analyzers =&gt; [ $tokenizer, $case_folder, $stemmer ],
+    );</code></pre>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<p>CaseFolder is DEPRECATED. Use <a 
href="../../Lucy/Analysis/Normalizer.html">Normalizer</a> instead.</p>
+
+<p>CaseFolder normalizes text according to Unicode case-folding rules, so that 
searches will be case-insensitive.</p>
+
+<h1 id="CONSTRUCTORS">CONSTRUCTORS</h1>
+
+<h2 id="new">new()</h2>
+
+<pre><code>    my $case_folder = 
Lucy::Analysis::CaseFolder-&gt;new;</code></pre>
+
+<p>Constructor. Takes no arguments.</p>
+
+<h1 id="INHERITANCE">INHERITANCE</h1>
+
+<p>Lucy::Analysis::CaseFolder isa <a 
href="../../Lucy/Analysis/Analyzer.html">Lucy::Analysis::Analyzer</a> isa 
Clownfish::Obj.</p>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/EasyAnalyzer.html
==============================================================================
--- 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/EasyAnalyzer.html
 (added)
+++ 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/EasyAnalyzer.html
 Mon Apr  4 09:23:00 2016
@@ -0,0 +1,69 @@
+
+<html>
+<head>
+<title>Lucy::Analysis::EasyAnalyzer - Apache Lucy Perl Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Analysis::EasyAnalyzer - A simple analyzer chain.</p>
+
+<h1 id="SYNOPSIS">SYNOPSIS</h1>
+
+<pre><code>    my $schema = Lucy::Plan::Schema-&gt;new;
+    my $analyzer = Lucy::Analysis::EasyAnalyzer-&gt;new(
+        language =&gt; &#39;en&#39;,
+    );
+    my $type = Lucy::Plan::FullTextType-&gt;new(
+        analyzer =&gt; $analyzer,
+    );
+    $schema-&gt;spec_field( name =&gt; &#39;title&#39;,   type =&gt; $type );
+    $schema-&gt;spec_field( name =&gt; &#39;content&#39;, type =&gt; $type 
);</code></pre>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<p>EasyAnalyzer is an analyzer chain consisting of a <a 
href="../../Lucy/Analysis/StandardTokenizer.html">StandardTokenizer</a>, a <a 
href="../../Lucy/Analysis/Normalizer.html">Normalizer</a>, and a <a 
href="../../Lucy/Analysis/SnowballStemmer.html">SnowballStemmer</a>.</p>
+
+<p>Supported languages:</p>
+
+<pre><code>    en =&gt; English,
+    da =&gt; Danish,
+    de =&gt; German,
+    es =&gt; Spanish,
+    fi =&gt; Finnish,
+    fr =&gt; French,
+    hu =&gt; Hungarian,
+    it =&gt; Italian,
+    nl =&gt; Dutch,
+    no =&gt; Norwegian,
+    pt =&gt; Portuguese,
+    ro =&gt; Romanian,
+    ru =&gt; Russian,
+    sv =&gt; Swedish,
+    tr =&gt; Turkish,</code></pre>
+
+<h1 id="CONSTRUCTORS">CONSTRUCTORS</h1>
+
+<h2 id="new-labeled-params">new( <i>[labeled params]</i> )</h2>
+
+<pre><code>    my $analyzer = Lucy::Analysis::EasyAnalyzer-&gt;new(
+        language  =&gt; &#39;es&#39;,
+    );</code></pre>
+
+<ul>
+
+<li><p><b>language</b> - An ISO code from the list of supported languages.</p>
+
+</li>
+</ul>
+
+<h1 id="INHERITANCE">INHERITANCE</h1>
+
+<p>Lucy::Analysis::EasyAnalyzer isa <a 
href="../../Lucy/Analysis/Analyzer.html">Lucy::Analysis::Analyzer</a> isa 
Clownfish::Obj.</p>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/Normalizer.html
==============================================================================
--- 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/Normalizer.html
 (added)
+++ 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/Normalizer.html
 Mon Apr  4 09:23:00 2016
@@ -0,0 +1,57 @@
+
+<html>
+<head>
+<title>Lucy::Analysis::Normalizer - Apache Lucy Perl Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Analysis::Normalizer - Unicode normalization, case folding and accent 
stripping.</p>
+
+<h1 id="SYNOPSIS">SYNOPSIS</h1>
+
+<pre><code>    my $normalizer = Lucy::Analysis::Normalizer-&gt;new;
+    
+    my $polyanalyzer = Lucy::Analysis::PolyAnalyzer-&gt;new(
+        analyzers =&gt; [ $tokenizer, $normalizer, $stemmer ],
+    );</code></pre>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<p>Normalizer is an <a href="../../Lucy/Analysis/Analyzer.html">Analyzer</a> 
which normalizes tokens to one of the Unicode normalization forms. Optionally, 
it performs Unicode case folding and converts accented characters to their base 
character.</p>
+
+<p>If you use highlighting, Normalizer should be run after tokenization 
because it might add or remove characters.</p>
+
+<h1 id="CONSTRUCTORS">CONSTRUCTORS</h1>
+
+<h2 id="new-labeled-params">new( <i>[labeled params]</i> )</h2>
+
+<pre><code>    my $normalizer = Lucy::Analysis::Normalizer-&gt;new(
+        normalization_form =&gt; &#39;NFKC&#39;,
+        case_fold          =&gt; 1,
+        strip_accents      =&gt; 0,
+    );</code></pre>
+
+<ul>
+
+<li><p><b>normalization_form</b> - Unicode normalization form, can be one of 
&#39;NFC&#39;, &#39;NFKC&#39;, &#39;NFD&#39;, &#39;NFKD&#39;. Defaults to 
&#39;NFKC&#39;.</p>
+
+</li>
+<li><p><b>case_fold</b> - Perform case folding, default is true.</p>
+
+</li>
+<li><p><b>strip_accents</b> - Strip accents, default is false.</p>
+
+</li>
+</ul>
+
+<h1 id="INHERITANCE">INHERITANCE</h1>
+
+<p>Lucy::Analysis::Normalizer isa <a 
href="../../Lucy/Analysis/Analyzer.html">Lucy::Analysis::Analyzer</a> isa 
Clownfish::Obj.</p>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/PolyAnalyzer.html
==============================================================================
--- 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/PolyAnalyzer.html
 (added)
+++ 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/PolyAnalyzer.html
 Mon Apr  4 09:23:00 2016
@@ -0,0 +1,82 @@
+
+<html>
+<head>
+<title>Lucy::Analysis::PolyAnalyzer - Apache Lucy Perl Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Analysis::PolyAnalyzer - Multiple Analyzers in series.</p>
+
+<h1 id="SYNOPSIS">SYNOPSIS</h1>
+
+<pre><code>    my $schema = Lucy::Plan::Schema-&gt;new;
+    my $polyanalyzer = Lucy::Analysis::PolyAnalyzer-&gt;new( 
+        analyzers =&gt; \@analyzers,
+    );
+    my $type = Lucy::Plan::FullTextType-&gt;new(
+        analyzer =&gt; $polyanalyzer,
+    );
+    $schema-&gt;spec_field( name =&gt; &#39;title&#39;,   type =&gt; $type );
+    $schema-&gt;spec_field( name =&gt; &#39;content&#39;, type =&gt; $type 
);</code></pre>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<p>A PolyAnalyzer is a series of <a 
href="../../Lucy/Analysis/Analyzer.html">Analyzers</a>, each of which will be 
called upon to &quot;analyze&quot; text in turn. You can either provide the 
Analyzers yourself, or you can specify a supported language, in which case a 
PolyAnalyzer consisting of a <a 
href="../../Lucy/Analysis/CaseFolder.html">CaseFolder</a>, a <a 
href="../../Lucy/Analysis/RegexTokenizer.html">RegexTokenizer</a>, and a <a 
href="../../Lucy/Analysis/SnowballStemmer.html">SnowballStemmer</a> will be 
generated for you.</p>
+
+<p>The language parameter is DEPRECATED. Use <a 
href="../../Lucy/Analysis/EasyAnalyzer.html">EasyAnalyzer</a> instead.</p>
+
+<p>Supported languages:</p>
+
+<pre><code>    en =&gt; English,
+    da =&gt; Danish,
+    de =&gt; German,
+    es =&gt; Spanish,
+    fi =&gt; Finnish,
+    fr =&gt; French,
+    hu =&gt; Hungarian,
+    it =&gt; Italian,
+    nl =&gt; Dutch,
+    no =&gt; Norwegian,
+    pt =&gt; Portuguese,
+    ro =&gt; Romanian,
+    ru =&gt; Russian,
+    sv =&gt; Swedish,
+    tr =&gt; Turkish,</code></pre>
+
+<h1 id="CONSTRUCTORS">CONSTRUCTORS</h1>
+
+<h2 id="new-labeled-params">new( <i>[labeled params]</i> )</h2>
+
+<pre><code>    my $tokenizer    = Lucy::Analysis::StandardTokenizer-&gt;new;
+    my $normalizer   = Lucy::Analysis::Normalizer-&gt;new;
+    my $stemmer      = Lucy::Analysis::SnowballStemmer-&gt;new( language =&gt; 
&#39;en&#39; );
+    my $polyanalyzer = Lucy::Analysis::PolyAnalyzer-&gt;new(
+        analyzers =&gt; [ $tokenizer, $normalizer, $stemmer, ], );</code></pre>
+
+<ul>
+
+<li><p><b>language</b> - An ISO code from the list of supported languages. 
DEPRECATED, use <a 
href="../../Lucy/Analysis/EasyAnalyzer.html">EasyAnalyzer</a> instead.</p>
+
+</li>
+<li><p><b>analyzers</b> - An array of Analyzers. The order of the analyzers 
matters. Don&#39;t put a SnowballStemmer before a RegexTokenizer (can&#39;t 
stem whole documents or paragraphs -- just individual words), or a 
SnowballStopFilter after a SnowballStemmer (stemmed words, e.g. 
&quot;themselv&quot;, will not appear in a stoplist). In general, the sequence 
should be: tokenize, normalize, stopalize, stem.</p>
+
+</li>
+</ul>
+
+<h1 id="METHODS">METHODS</h1>
+
+<h2 id="get_analyzers">get_analyzers()</h2>
+
+<p>Getter for &quot;analyzers&quot; member.</p>
+
+<h1 id="INHERITANCE">INHERITANCE</h1>
+
+<p>Lucy::Analysis::PolyAnalyzer isa <a 
href="../../Lucy/Analysis/Analyzer.html">Lucy::Analysis::Analyzer</a> isa 
Clownfish::Obj.</p>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/RegexTokenizer.html
==============================================================================
--- 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/RegexTokenizer.html
 (added)
+++ 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/RegexTokenizer.html
 Mon Apr  4 09:23:00 2016
@@ -0,0 +1,75 @@
+
+<html>
+<head>
+<title>Lucy::Analysis::RegexTokenizer - Apache Lucy Perl Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Analysis::RegexTokenizer - Split a string into tokens.</p>
+
+<h1 id="SYNOPSIS">SYNOPSIS</h1>
+
+<pre><code>    my $whitespace_tokenizer
+        = Lucy::Analysis::RegexTokenizer-&gt;new( pattern =&gt; &#39;\S+&#39; 
);
+
+    # or...
+    my $word_char_tokenizer
+        = Lucy::Analysis::RegexTokenizer-&gt;new( pattern =&gt; &#39;\w+&#39; 
);
+
+    # or...
+    my $apostrophising_tokenizer = Lucy::Analysis::RegexTokenizer-&gt;new;
+
+    # Then... once you have a tokenizer, put it into a PolyAnalyzer:
+    my $polyanalyzer = Lucy::Analysis::PolyAnalyzer-&gt;new(
+        analyzers =&gt; [ $word_char_tokenizer, $normalizer, $stemmer ], 
);</code></pre>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<p>Generically, &quot;tokenizing&quot; is a process of breaking up a string 
into an array of &quot;tokens&quot;. For instance, the string &quot;three blind 
mice&quot; might be tokenized into &quot;three&quot;, &quot;blind&quot;, 
&quot;mice&quot;.</p>
+
+<p>Lucy::Analysis::RegexTokenizer decides where it should break up the text 
based on a regular expression compiled from a supplied <code>pattern</code> 
matching one token. If our source string is...</p>
+
+<pre><code>    &quot;Eats, Shoots and Leaves.&quot;</code></pre>
+
+<p>... then a &quot;whitespace tokenizer&quot; with a <code>pattern</code> of 
<code>&quot;\\S+&quot;</code> produces...</p>
+
+<pre><code>    Eats,
+    Shoots
+    and
+    Leaves.</code></pre>
+
+<p>... while a &quot;word character tokenizer&quot; with a 
<code>pattern</code> of <code>&quot;\\w+&quot;</code> produces...</p>
+
+<pre><code>    Eats
+    Shoots
+    and
+    Leaves</code></pre>
+
+<p>... the difference being that the word character tokenizer skips over 
punctuation as well as whitespace when determining token boundaries.</p>
+
+<h1 id="CONSTRUCTORS">CONSTRUCTORS</h1>
+
+<h2 id="new-labeled-params">new( <i>[labeled params]</i> )</h2>
+
+<pre><code>    my $word_char_tokenizer = 
Lucy::Analysis::RegexTokenizer-&gt;new(
+        pattern =&gt; &#39;\w+&#39;,    # required
+    );</code></pre>
+
+<ul>
+
+<li><p><b>pattern</b> - A string specifying a Perl-syntax regular expression 
which should match one token. The default value is 
<code>\w+(?:[\x{2019}&#39;]\w+)*</code>, which matches &quot;it&#39;s&quot; as 
well as &quot;it&quot; and &quot;O&#39;Henry&#39;s&quot; as well as 
&quot;Henry&quot;.</p>
+
+</li>
+</ul>
+
+<h1 id="INHERITANCE">INHERITANCE</h1>
+
+<p>Lucy::Analysis::RegexTokenizer isa <a 
href="../../Lucy/Analysis/Analyzer.html">Lucy::Analysis::Analyzer</a> isa 
Clownfish::Obj.</p>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/SnowballStemmer.html
==============================================================================
--- 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/SnowballStemmer.html
 (added)
+++ 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/SnowballStemmer.html
 Mon Apr  4 09:23:00 2016
@@ -0,0 +1,47 @@
+
+<html>
+<head>
+<title>Lucy::Analysis::SnowballStemmer - Apache Lucy Perl Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Analysis::SnowballStemmer - Reduce related words to a shared root.</p>
+
+<h1 id="SYNOPSIS">SYNOPSIS</h1>
+
+<pre><code>    my $stemmer = Lucy::Analysis::SnowballStemmer-&gt;new( language 
=&gt; &#39;es&#39; );
+    
+    my $polyanalyzer = Lucy::Analysis::PolyAnalyzer-&gt;new(
+        analyzers =&gt; [ $tokenizer, $normalizer, $stemmer ],
+    );</code></pre>
+
+<p>This class is a wrapper around the Snowball stemming library, so it 
supports the same languages.</p>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<p>SnowballStemmer is an <a 
href="../../Lucy/Analysis/Analyzer.html">Analyzer</a> which reduces related 
words to a root form (using the &quot;Snowball&quot; stemming library). For 
instance, &quot;horse&quot;, &quot;horses&quot;, and &quot;horsing&quot; all 
become &quot;hors&quot; -- so that a search for &#39;horse&#39; will also match 
documents containing &#39;horses&#39; and &#39;horsing&#39;.</p>
+
+<h1 id="CONSTRUCTORS">CONSTRUCTORS</h1>
+
+<h2 id="new-labeled-params">new( <i>[labeled params]</i> )</h2>
+
+<pre><code>    my $stemmer = Lucy::Analysis::SnowballStemmer-&gt;new( language 
=&gt; &#39;es&#39; );</code></pre>
+
+<ul>
+
+<li><p><b>language</b> - A two-letter ISO code identifying a language 
supported by Snowball.</p>
+
+</li>
+</ul>
+
+<h1 id="INHERITANCE">INHERITANCE</h1>
+
+<p>Lucy::Analysis::SnowballStemmer isa <a 
href="../../Lucy/Analysis/Analyzer.html">Lucy::Analysis::Analyzer</a> isa 
Clownfish::Obj.</p>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/SnowballStopFilter.html
==============================================================================
--- 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/SnowballStopFilter.html
 (added)
+++ 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/SnowballStopFilter.html
 Mon Apr  4 09:23:00 2016
@@ -0,0 +1,84 @@
+
+<html>
+<head>
+<title>Lucy::Analysis::SnowballStopFilter - Apache Lucy Perl 
Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Analysis::SnowballStopFilter - Suppress a &quot;stoplist&quot; of 
common words.</p>
+
+<h1 id="SYNOPSIS">SYNOPSIS</h1>
+
+<pre><code>    my $stopfilter = Lucy::Analysis::SnowballStopFilter-&gt;new(
+        language =&gt; &#39;fr&#39;,
+    );
+    my $polyanalyzer = Lucy::Analysis::PolyAnalyzer-&gt;new(
+        analyzers =&gt; [ $tokenizer, $normalizer, $stopfilter, $stemmer ],
+    );</code></pre>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<p>A &quot;stoplist&quot; is collection of &quot;stopwords&quot;: words which 
are common enough to be of little value when determining search results. For 
example, so many documents in English contain &quot;the&quot;, &quot;if&quot;, 
and &quot;maybe&quot; that it may improve both performance and relevance to 
block them.</p>
+
+<p>Before filtering stopwords:</p>
+
+<pre><code>    (&quot;i&quot;, &quot;am&quot;, &quot;the&quot;, 
&quot;walrus&quot;)</code></pre>
+
+<p>After filtering stopwords:</p>
+
+<pre><code>    (&quot;walrus&quot;)</code></pre>
+
+<p>SnowballStopFilter provides default stoplists for several languages, 
courtesy of the Snowball project (&lt;http://snowball.tartarus.org&gt;), or you 
may supply your own.</p>
+
+<pre><code>    |-----------------------|
+    | ISO CODE | LANGUAGE   |
+    |-----------------------|
+    | da       | Danish     |
+    | de       | German     |
+    | en       | English    |
+    | es       | Spanish    |
+    | fi       | Finnish    |
+    | fr       | French     |
+    | hu       | Hungarian  |
+    | it       | Italian    |
+    | nl       | Dutch      |
+    | no       | Norwegian  |
+    | pt       | Portuguese |
+    | sv       | Swedish    |
+    | ru       | Russian    |
+    |-----------------------|</code></pre>
+
+<h1 id="CONSTRUCTORS">CONSTRUCTORS</h1>
+
+<h2 id="new-labeled-params">new( <i>[labeled params]</i> )</h2>
+
+<pre><code>    my $stopfilter = Lucy::Analysis::SnowballStopFilter-&gt;new(
+        language =&gt; &#39;de&#39;,
+    );
+    
+    # or...
+    my $stopfilter = Lucy::Analysis::SnowballStopFilter-&gt;new(
+        stoplist =&gt; \%stoplist,
+    );</code></pre>
+
+<ul>
+
+<li><p><b>stoplist</b> - A hash with stopwords as the keys.</p>
+
+</li>
+<li><p><b>language</b> - The ISO code for a supported language.</p>
+
+</li>
+</ul>
+
+<h1 id="INHERITANCE">INHERITANCE</h1>
+
+<p>Lucy::Analysis::SnowballStopFilter isa <a 
href="../../Lucy/Analysis/Analyzer.html">Lucy::Analysis::Analyzer</a> isa 
Clownfish::Obj.</p>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/StandardTokenizer.html
==============================================================================
--- 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/StandardTokenizer.html
 (added)
+++ 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Analysis/StandardTokenizer.html
 Mon Apr  4 09:23:00 2016
@@ -0,0 +1,42 @@
+
+<html>
+<head>
+<title>Lucy::Analysis::StandardTokenizer - Apache Lucy Perl 
Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Analysis::StandardTokenizer - Split a string into tokens.</p>
+
+<h1 id="SYNOPSIS">SYNOPSIS</h1>
+
+<pre><code>    my $tokenizer = Lucy::Analysis::StandardTokenizer-&gt;new;
+
+    # Then... once you have a tokenizer, put it into a PolyAnalyzer:
+    my $polyanalyzer = Lucy::Analysis::PolyAnalyzer-&gt;new(
+        analyzers =&gt; [ $tokenizer, $normalizer, $stemmer ], );</code></pre>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<p>Generically, &quot;tokenizing&quot; is a process of breaking up a string 
into an array of &quot;tokens&quot;. For instance, the string &quot;three blind 
mice&quot; might be tokenized into &quot;three&quot;, &quot;blind&quot;, 
&quot;mice&quot;.</p>
+
+<p>Lucy::Analysis::StandardTokenizer breaks up the text at the word boundaries 
defined in Unicode Standard Annex #29. It then returns those words that start 
with an alphabetic or numeric character.</p>
+
+<h1 id="CONSTRUCTORS">CONSTRUCTORS</h1>
+
+<h2 id="new">new()</h2>
+
+<pre><code>    my $tokenizer = 
Lucy::Analysis::StandardTokenizer-&gt;new;</code></pre>
+
+<p>Constructor. Takes no arguments.</p>
+
+<h1 id="INHERITANCE">INHERITANCE</h1>
+
+<p>Lucy::Analysis::StandardTokenizer isa <a 
href="../../Lucy/Analysis/Analyzer.html">Lucy::Analysis::Analyzer</a> isa 
Clownfish::Obj.</p>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook.html 
(added)
+++ websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook.html 
Mon Apr  4 09:23:00 2016
@@ -0,0 +1,43 @@
+
+<html>
+<head>
+<title>Lucy::Docs::Cookbook - Apache Lucy Perl Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Docs::Cookbook - Apache Lucy recipes.</p>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<p>The Cookbook provides thematic documentation covering some of Apache 
Lucy&#39;s more sophisticated features. For a step-by-step introduction to 
Lucy, see <a href="../../Lucy/Docs/Tutorial.html">Lucy::Docs::Tutorial</a>.</p>
+
+<h2 id="Chapters">Chapters</h2>
+
+<ul>
+
+<li><p><a 
href="../../Lucy/Docs/Cookbook/FastUpdates.html">Lucy::Docs::Cookbook::FastUpdates</a>
 - While index updates are fast on average, worst-case update performance may 
be significantly slower. To make index updates consistently quick, we must 
manually intervene to control the process of index segment consolidation.</p>
+
+</li>
+<li><p><a 
href="../../Lucy/Docs/Cookbook/CustomQuery.html">Lucy::Docs::Cookbook::CustomQuery</a>
 - Explore Lucy&#39;s support for custom query types by creating a 
&quot;PrefixQuery&quot; class to handle trailing wildcards.</p>
+
+</li>
+<li><p><a 
href="../../Lucy/Docs/Cookbook/CustomQueryParser.html">Lucy::Docs::Cookbook::CustomQueryParser</a>
 - Define your own custom search query syntax using Lucy::Search::QueryParser 
and <a 
href="http://search.cpan.org/perldoc?Parse::RecDescent";>Parse::RecDescent</a>.</p>
+
+</li>
+</ul>
+
+<h2 id="Materials">Materials</h2>
+
+<p>Some of the recipes in the Cookbook reference the completed <a 
href="../../Lucy/Docs/Tutorial.html">Tutorial</a> application. These materials 
can be found in the <code>sample</code> directory at the root of the Lucy 
distribution:</p>
+
+<pre><code>    sample/indexer.pl        # indexing app
+    sample/search.cgi        # search app
+    sample/us_constitution   # corpus</code></pre>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/CustomQuery.html
==============================================================================
--- 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/CustomQuery.html
 (added)
+++ 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/CustomQuery.html
 Mon Apr  4 09:23:00 2016
@@ -0,0 +1,272 @@
+
+<html>
+<head>
+<title>Lucy::Docs::Cookbook::CustomQuery - Apache Lucy Perl 
Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Docs::Cookbook::CustomQuery - Sample subclass of Query.</p>
+
+<h1 id="ABSTRACT">ABSTRACT</h1>
+
+<p>Explore Apache Lucy&#39;s support for custom query types by creating a 
&quot;PrefixQuery&quot; class to handle trailing wildcards.</p>
+
+<pre><code>    my $prefix_query = PrefixQuery-&gt;new(
+        field        =&gt; &#39;content&#39;,
+        query_string =&gt; &#39;foo*&#39;,
+    );
+    my $hits = $searcher-&gt;hits( query =&gt; $prefix_query );
+    ...</code></pre>
+
+<h1 id="Query-Compiler-and-Matcher">Query, Compiler, and Matcher</h1>
+
+<p>To add support for a new query type, we need three classes: a Query, a 
Compiler, and a Matcher.</p>
+
+<ul>
+
+<li><p>PrefixQuery - a subclass of <a 
href="../../../Lucy/Search/Query.html">Lucy::Search::Query</a>, and the only 
class that client code will deal with directly.</p>
+
+</li>
+<li><p>PrefixCompiler - a subclass of <a 
href="../../../Lucy/Search/Compiler.html">Lucy::Search::Compiler</a>, whose 
primary role is to compile a PrefixQuery to a PrefixMatcher.</p>
+
+</li>
+<li><p>PrefixMatcher - a subclass of <a 
href="../../../Lucy/Search/Matcher.html">Lucy::Search::Matcher</a>, which does 
the heavy lifting: it applies the query to individual documents and assigns a 
score to each match.</p>
+
+</li>
+</ul>
+
+<p>The PrefixQuery class on its own isn&#39;t enough because a Query 
object&#39;s role is limited to expressing an abstract specification for the 
search. A Query is basically nothing but metadata; execution is left to the 
Query&#39;s companion Compiler and Matcher.</p>
+
+<p>Here&#39;s a simplified sketch illustrating how a Searcher&#39;s hits() 
method ties together the three classes.</p>
+
+<pre><code>    sub hits {
+        my ( $self, $query ) = @_;
+        my $compiler = $query-&gt;make_compiler(
+            searcher =&gt; $self,
+            boost    =&gt; $query-&gt;get_boost,
+        );
+        my $matcher = $compiler-&gt;make_matcher(
+            reader     =&gt; $self-&gt;get_reader,
+            need_score =&gt; 1,
+        );
+        my @hits = $matcher-&gt;capture_hits;
+        return \@hits;
+    }</code></pre>
+
+<h2 id="PrefixQuery">PrefixQuery</h2>
+
+<p>Our PrefixQuery class will have two attributes: a query string and a field 
name.</p>
+
+<pre><code>    package PrefixQuery;
+    use base qw( Lucy::Search::Query );
+    use Carp;
+    use Scalar::Util qw( blessed );
+    
+    # Inside-out member vars and hand-rolled accessors.
+    my %query_string;
+    my %field;
+    sub get_query_string { my $self = shift; return $query_string{$$self} }
+    sub get_field        { my $self = shift; return $field{$$self} 
}</code></pre>
+
+<p>PrefixQuery&#39;s constructor collects and validates the attributes.</p>
+
+<pre><code>    sub new {
+        my ( $class, %args ) = @_;
+        my $query_string = delete $args{query_string};
+        my $field        = delete $args{field};
+        my $self         = $class-&gt;SUPER::new(%args);
+        confess(&quot;&#39;query_string&#39; param is required&quot;)
+            unless defined $query_string;
+        confess(&quot;Invalid query_string: &#39;$query_string&#39;&quot;)
+            unless $query_string =~ /\*\s*$/;
+        confess(&quot;&#39;field&#39; param is required&quot;)
+            unless defined $field;
+        $query_string{$$self} = $query_string;
+        $field{$$self}        = $field;
+        return $self;
+    }</code></pre>
+
+<p>Since this is an inside-out class, we&#39;ll need a destructor:</p>
+
+<pre><code>    sub DESTROY {
+        my $self = shift;
+        delete $query_string{$$self};
+        delete $field{$$self};
+        $self-&gt;SUPER::DESTROY;
+    }</code></pre>
+
+<p>The equals() method determines whether two Queries are logically 
equivalent:</p>
+
+<pre><code>    sub equals {
+        my ( $self, $other ) = @_;
+        return 0 unless blessed($other);
+        return 0 unless $other-&gt;isa(&quot;PrefixQuery&quot;);
+        return 0 unless $field{$$self} eq $field{$$other};
+        return 0 unless $query_string{$$self} eq $query_string{$$other};
+        return 1;
+    }</code></pre>
+
+<p>The last thing we&#39;ll need is a make_compiler() factory method which 
kicks out a subclass of <a 
href="../../../Lucy/Search/Compiler.html">Compiler</a>.</p>
+
+<pre><code>    sub make_compiler {
+        my ( $self, %args ) = @_;
+        my $subordinate = delete $args{subordinate};
+        my $compiler = PrefixCompiler-&gt;new( %args, parent =&gt; $self );
+        $compiler-&gt;normalize unless $subordinate;
+        return $compiler;
+    }</code></pre>
+
+<h2 id="PrefixCompiler">PrefixCompiler</h2>
+
+<p>PrefixQuery&#39;s make_compiler() method will be called internally at 
search-time by objects which subclass <a 
href="../../../Lucy/Search/Searcher.html">Lucy::Search::Searcher</a> -- such as 
<a href="../../../Lucy/Search/IndexSearcher.html">IndexSearchers</a>.</p>
+
+<p>A Searcher is associated with a particular collection of documents. These 
documents may all reside in one index, as with IndexSearcher, or they may be 
spread out across multiple indexes on one or more machines, as with <a 
href="../../../LucyX/Remote/ClusterSearcher.html">LucyX::Remote::ClusterSearcher</a>.</p>
+
+<p>Searcher objects have access to certain statistical information about the 
collections they represent; for instance, a Searcher can tell you how many 
documents are in the collection...</p>
+
+<pre><code>    my $maximum_number_of_docs_in_collection = 
$searcher-&gt;doc_max;</code></pre>
+
+<p>... or how many documents a specific term appears in:</p>
+
+<pre><code>    my $term_appears_in_this_many_docs = $searcher-&gt;doc_freq(
+        field =&gt; &#39;content&#39;,
+        term  =&gt; &#39;foo&#39;,
+    );</code></pre>
+
+<p>Such information can be used by sophisticated Compiler implementations to 
assign more or less heft to individual queries or sub-queries. However, 
we&#39;re not going to bother with weighting for this demo; we&#39;ll just 
assign a fixed score of 1.0 to each matching document.</p>
+
+<p>We don&#39;t need to write a constructor, as it will suffice to inherit 
new() from Lucy::Search::Compiler. The only method we need to implement for 
PrefixCompiler is make_matcher().</p>
+
+<pre><code>    package PrefixCompiler;
+    use base qw( Lucy::Search::Compiler );
+
+    sub make_matcher {
+        my ( $self, %args ) = @_;
+        my $seg_reader = $args{reader};
+
+        # Retrieve low-level components LexiconReader and PostingListReader.
+        my $lex_reader
+            = $seg_reader-&gt;obtain(&quot;Lucy::Index::LexiconReader&quot;);
+        my $plist_reader
+            = 
$seg_reader-&gt;obtain(&quot;Lucy::Index::PostingListReader&quot;);
+        
+        # Acquire a Lexicon and seek it to our query string.
+        my $substring = $self-&gt;get_parent-&gt;get_query_string;
+        $substring =~ s/\*.\s*$//;
+        my $field = $self-&gt;get_parent-&gt;get_field;
+        my $lexicon = $lex_reader-&gt;lexicon( field =&gt; $field );
+        return unless $lexicon;
+        $lexicon-&gt;seek($substring);
+        
+        # Accumulate PostingLists for each matching term.
+        my @posting_lists;
+        while ( defined( my $term = $lexicon-&gt;get_term ) ) {
+            last unless $term =~ /^\Q$substring/;
+            my $posting_list = $plist_reader-&gt;posting_list(
+                field =&gt; $field,
+                term  =&gt; $term,
+            );
+            if ($posting_list) {
+                push @posting_lists, $posting_list;
+            }
+            last unless $lexicon-&gt;next;
+        }
+        return unless @posting_lists;
+        
+        return PrefixMatcher-&gt;new( posting_lists =&gt; \@posting_lists );
+    }</code></pre>
+
+<p>PrefixCompiler gets access to a <a 
href="../../../Lucy/Index/SegReader.html">SegReader</a> object when 
make_matcher() gets called. From the SegReader and its sub-components <a 
href="../../../Lucy/Index/LexiconReader.html">LexiconReader</a> and <a 
href="../../../Lucy/Index/PostingListReader.html">PostingListReader</a>, we 
acquire a <a href="../../../Lucy/Index/Lexicon.html">Lexicon</a>, scan through 
the Lexicon&#39;s unique terms, and acquire a <a 
href="../../../Lucy/Index/PostingList.html">PostingList</a> for each term that 
matches our prefix.</p>
+
+<p>Each of these PostingList objects represents a set of documents which match 
the query.</p>
+
+<h2 id="PrefixMatcher">PrefixMatcher</h2>
+
+<p>The Matcher subclass is the most involved.</p>
+
+<pre><code>    package PrefixMatcher;
+    use base qw( Lucy::Search::Matcher );
+    
+    # Inside-out member vars.
+    my %doc_ids;
+    my %tick;
+    
+    sub new {
+        my ( $class, %args ) = @_;
+        my $posting_lists = delete $args{posting_lists};
+        my $self          = $class-&gt;SUPER::new(%args);
+        
+        # Cheesy but simple way of interleaving PostingList doc sets.
+        my %all_doc_ids;
+        for my $posting_list (@$posting_lists) {
+            while ( my $doc_id = $posting_list-&gt;next ) {
+                $all_doc_ids{$doc_id} = undef;
+            }
+        }
+        my @doc_ids = sort { $a &lt;=&gt; $b } keys %all_doc_ids;
+        $doc_ids{$$self} = \@doc_ids;
+        
+        # Track our position within the array of doc ids.
+        $tick{$$self} = -1;
+        
+        return $self;
+    }
+    
+    sub DESTROY {
+        my $self = shift;
+        delete $doc_ids{$$self};
+        delete $tick{$$self};
+        $self-&gt;SUPER::DESTROY;
+    }</code></pre>
+
+<p>The doc ids must be in order, or some will be ignored; hence the 
<code>sort</code> above.</p>
+
+<p>In addition to the constructor and destructor, there are three methods that 
must be overridden.</p>
+
+<p>next() advances the Matcher to the next valid matching doc.</p>
+
+<pre><code>    sub next {
+        my $self    = shift;
+        my $doc_ids = $doc_ids{$$self};
+        my $tick    = ++$tick{$$self};
+        return 0 if $tick &gt;= scalar @$doc_ids;
+        return $doc_ids-&gt;[$tick];
+    }</code></pre>
+
+<p>get_doc_id() returns the current document id, or 0 if the Matcher is 
exhausted. (<a href="../../../Lucy/Docs/DocIDs.html">Document numbers</a> start 
at 1, so 0 is a sentinel.)</p>
+
+<pre><code>    sub get_doc_id {
+        my $self    = shift;
+        my $tick    = $tick{$$self};
+        my $doc_ids = $doc_ids{$$self};
+        return $tick &lt; scalar @$doc_ids ? $doc_ids-&gt;[$tick] : 0;
+    }</code></pre>
+
+<p>score() conveys the relevance score of the current match. We&#39;ll just 
return a fixed score of 1.0:</p>
+
+<pre><code>    sub score { 1.0 }</code></pre>
+
+<h1 id="Usage">Usage</h1>
+
+<p>To get a basic feel for PrefixQuery, insert the FlatQueryParser module 
described in <a 
href="../../../Lucy/Docs/Cookbook/CustomQueryParser.html">Lucy::Docs::Cookbook::CustomQueryParser</a>
 (which supports PrefixQuery) into the search.cgi sample app.</p>
+
+<pre><code>    my $parser = FlatQueryParser-&gt;new( schema =&gt; 
$searcher-&gt;get_schema );
+    my $query  = $parser-&gt;parse($q);</code></pre>
+
+<p>If you&#39;re planning on using PrefixQuery in earnest, though, you may 
want to change up analyzers to avoid stemming, because stemming -- another 
approach to prefix conflation -- is not perfectly compatible with prefix 
searches.</p>
+
+<pre><code>    # Polyanalyzer with no SnowballStemmer.
+    my $analyzer = Lucy::Analysis::PolyAnalyzer-&gt;new(
+        analyzers =&gt; [
+            Lucy::Analysis::StandardTokenizer-&gt;new,
+            Lucy::Analysis::Normalizer-&gt;new,
+        ],
+    );</code></pre>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/CustomQueryParser.html
==============================================================================
--- 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/CustomQueryParser.html
 (added)
+++ 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/CustomQueryParser.html
 Mon Apr  4 09:23:00 2016
@@ -0,0 +1,192 @@
+
+<html>
+<head>
+<title>Lucy::Docs::Cookbook::CustomQueryParser - Apache Lucy Perl 
Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Docs::Cookbook::CustomQueryParser - Sample subclass of 
QueryParser.</p>
+
+<h1 id="ABSTRACT">ABSTRACT</h1>
+
+<p>Implement a custom search query language using a subclass of <a 
href="../../../Lucy/Search/QueryParser.html">Lucy::Search::QueryParser</a>.</p>
+
+<h1 id="The-language">The language</h1>
+
+<p>At first, our query language will support only simple term queries and 
phrases delimited by double quotes. For simplicity&#39;s sake, it will not 
support parenthetical groupings, boolean operators, or prepended plus/minus. 
The results for all subqueries will be unioned together -- i.e. joined using an 
OR -- which is usually the best approach for small-to-medium-sized document 
collections.</p>
+
+<p>Later, we&#39;ll add support for trailing wildcards.</p>
+
+<h1 id="Single-field-parser">Single-field parser</h1>
+
+<p>Our initial parser implentation will generate queries against a single 
fixed field, &quot;content&quot;, and it will analyze text using a fixed choice 
of English EasyAnalyzer. We won&#39;t subclass Lucy::Search::QueryParser just 
yet.</p>
+
+<pre><code>    package FlatQueryParser;
+    use Lucy::Search::TermQuery;
+    use Lucy::Search::PhraseQuery;
+    use Lucy::Search::ORQuery;
+    use Carp;
+    
+    sub new { 
+        my $analyzer = Lucy::Analysis::EasyAnalyzer-&gt;new(
+            language =&gt; &#39;en&#39;,
+        );
+        return bless { 
+            field    =&gt; &#39;content&#39;,
+            analyzer =&gt; $analyzer,
+        }, __PACKAGE__;
+    }</code></pre>
+
+<p>Some private helper subs for creating TermQuery and PhraseQuery objects 
will help keep the size of our main parse() subroutine down:</p>
+
+<pre><code>    sub _make_term_query {
+        my ( $self, $term ) = @_;
+        return Lucy::Search::TermQuery-&gt;new(
+            field =&gt; $self-&gt;{field},
+            term  =&gt; $term,
+        );
+    }
+    
+    sub _make_phrase_query {
+        my ( $self, $terms ) = @_;
+        return Lucy::Search::PhraseQuery-&gt;new(
+            field =&gt; $self-&gt;{field},
+            terms =&gt; $terms,
+        );
+    }</code></pre>
+
+<p>Our private _tokenize() method treats double-quote delimited material as a 
single token and splits on whitespace everywhere else.</p>
+
+<pre><code>    sub _tokenize {
+        my ( $self, $query_string ) = @_;
+        my @tokens;
+        while ( length $query_string ) {
+            if ( $query_string =~ s/^\s+// ) {
+                next;    # skip whitespace
+            }
+            elsif ( $query_string =~ s/^(&quot;[^&quot;]*(?:&quot;|$))// ) {
+                push @tokens, $1;    # double-quoted phrase
+            }
+            else {
+                $query_string =~ s/(\S+)//;
+                push @tokens, $1;    # single word
+            }
+        }
+        return \@tokens;
+    }</code></pre>
+
+<p>The main parsing routine creates an array of tokens by calling _tokenize(), 
runs the tokens through through the EasyAnalyzer, creates TermQuery or 
PhraseQuery objects according to how many tokens emerge from the 
EasyAnalyzer&#39;s split() method, and adds each of the sub-queries to the 
primary ORQuery.</p>
+
+<pre><code>    sub parse {
+        my ( $self, $query_string ) = @_;
+        my $tokens   = $self-&gt;_tokenize($query_string);
+        my $analyzer = $self-&gt;{analyzer};
+        my $or_query = Lucy::Search::ORQuery-&gt;new;
+    
+        for my $token (@$tokens) {
+            if ( $token =~ s/^&quot;// ) {
+                $token =~ s/&quot;$//;
+                my $terms = $analyzer-&gt;split($token);
+                my $query = $self-&gt;_make_phrase_query($terms);
+                $or_query-&gt;add_child($phrase_query);
+            }
+            else {
+                my $terms = $analyzer-&gt;split($token);
+                if ( @$terms == 1 ) {
+                    my $query = $self-&gt;_make_term_query( $terms-&gt;[0] );
+                    $or_query-&gt;add_child($query);
+                }
+                elsif ( @$terms &gt; 1 ) {
+                    my $query = $self-&gt;_make_phrase_query($terms);
+                    $or_query-&gt;add_child($query);
+                }
+            }
+        }
+    
+        return $or_query;
+    }</code></pre>
+
+<h1 id="Multi-field-parser">Multi-field parser</h1>
+
+<p>Most often, the end user will want their search query to match not only a 
single &#39;content&#39; field, but also &#39;title&#39; and so on. To make 
that happen, we have to turn queries such as this...</p>
+
+<pre><code>    foo AND NOT bar</code></pre>
+
+<p>... into the logical equivalent of this:</p>
+
+<pre><code>    (title:foo OR content:foo) AND NOT (title:bar OR 
content:bar)</code></pre>
+
+<p>Rather than continue with our own from-scratch parser class and write the 
routines to accomplish that expansion, we&#39;re now going to subclass 
Lucy::Search::QueryParser and take advantage of some of its existing 
methods.</p>
+
+<p>Our first parser implementation had the &quot;content&quot; field name and 
the choice of English EasyAnalyzer hard-coded for simplicity, but we don&#39;t 
need to do that once we subclass Lucy::Search::QueryParser. QueryParser&#39;s 
constructor -- which we will inherit, allowing us to eliminate our own 
constructor -- requires a Schema which conveys field and Analyzer information, 
so we can just defer to that.</p>
+
+<pre><code>    package FlatQueryParser;
+    use base qw( Lucy::Search::QueryParser );
+    use Lucy::Search::TermQuery;
+    use Lucy::Search::PhraseQuery;
+    use Lucy::Search::ORQuery;
+    use PrefixQuery;
+    use Carp;
+    
+    # Inherit new()</code></pre>
+
+<p>We&#39;re also going to jettison our _make_term_query() and 
_make_phrase_query() helper subs and chop our parse() subroutine way down. Our 
revised parse() routine will generate Lucy::Search::LeafQuery objects instead 
of TermQueries and PhraseQueries:</p>
+
+<pre><code>    sub parse {
+        my ( $self, $query_string ) = @_;
+        my $tokens = $self-&gt;_tokenize($query_string);
+        my $or_query = Lucy::Search::ORQuery-&gt;new;
+        for my $token (@$tokens) {
+            my $leaf_query = Lucy::Search::LeafQuery-&gt;new( text =&gt; 
$token );
+            $or_query-&gt;add_child($leaf_query);
+        }
+        return $self-&gt;expand($or_query);
+    }</code></pre>
+
+<p>The magic happens in QueryParser&#39;s expand() method, which walks the 
ORQuery object we supply to it looking for LeafQuery objects, and calls 
expand_leaf() for each one it finds. expand_leaf() performs field-specific 
analysis, decides whether each query should be a TermQuery or a PhraseQuery, 
and if multiple fields are required, creates an ORQuery which mults out e.g. 
<code>foo</code> into <code>(title:foo OR content:foo)</code>.</p>
+
+<h1 id="Extending-the-query-language">Extending the query language</h1>
+
+<p>To add support for trailing wildcards to our query language, we need to 
override expand_leaf() to accommodate PrefixQuery, while deferring to the 
parent class implementation on TermQuery and PhraseQuery.</p>
+
+<pre><code>    sub expand_leaf {
+        my ( $self, $leaf_query ) = @_;
+        my $text = $leaf_query-&gt;get_text;
+        if ( $text =~ /\*$/ ) {
+            my $or_query = Lucy::Search::ORQuery-&gt;new;
+            for my $field ( @{ $self-&gt;get_fields } ) {
+                my $prefix_query = PrefixQuery-&gt;new(
+                    field        =&gt; $field,
+                    query_string =&gt; $text,
+                );
+                $or_query-&gt;add_child($prefix_query);
+            }
+            return $or_query;
+        }
+        else {
+            return $self-&gt;SUPER::expand_leaf($leaf_query);
+        }
+    }</code></pre>
+
+<p>Ordinarily, those asterisks would have been stripped when running tokens 
through the EasyAnalyzer -- query strings containing &quot;foo*&quot; would 
produce TermQueries for the term &quot;foo&quot;. Our override intercepts 
tokens with trailing asterisks and processes them as PrefixQueries before 
<code>SUPER::expand_leaf</code> can discard them, so that a search for 
&quot;foo*&quot; can match &quot;food&quot;, &quot;foosball&quot;, and so 
on.</p>
+
+<h1 id="Usage">Usage</h1>
+
+<p>Insert our custom parser into the search.cgi sample app to get a feel for 
how it behaves:</p>
+
+<pre><code>    my $parser = FlatQueryParser-&gt;new( schema =&gt; 
$searcher-&gt;get_schema );
+    my $query  = $parser-&gt;parse( decode( &#39;UTF-8&#39;, 
$cgi-&gt;param(&#39;q&#39;) || &#39;&#39; ) );
+    my $hits   = $searcher-&gt;hits(
+        query      =&gt; $query,
+        offset     =&gt; $offset,
+        num_wanted =&gt; $page_size,
+    );
+    ...</code></pre>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/FastUpdates.html
==============================================================================
--- 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/FastUpdates.html
 (added)
+++ 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/Cookbook/FastUpdates.html
 Mon Apr  4 09:23:00 2016
@@ -0,0 +1,115 @@
+
+<html>
+<head>
+<title>Lucy::Docs::Cookbook::FastUpdates - Apache Lucy Perl 
Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Docs::Cookbook::FastUpdates - Near real-time index updates.</p>
+
+<h1 id="ABSTRACT">ABSTRACT</h1>
+
+<p>While index updates are fast on average, worst-case update performance may 
be significantly slower. To make index updates consistently quick, we must 
manually intervene to control the process of index segment consolidation.</p>
+
+<h1 id="The-problem">The problem</h1>
+
+<p>Ordinarily, modifying an index is cheap. New data is added to new segments, 
and the time to write a new segment scales more or less linearly with the 
number of documents added during the indexing session.</p>
+
+<p>Deletions are also cheap most of the time, because we don&#39;t remove 
documents immediately but instead mark them as deleted, and adding the deletion 
mark is cheap.</p>
+
+<p>However, as new segments are added and the deletion rate for existing 
segments increases, search-time performance slowly begins to degrade. At some 
point, it becomes necessary to consolidate existing segments, rewriting their 
data into a new segment.</p>
+
+<p>If the recycled segments are small, the time it takes to rewrite them may 
not be significant. Every once in a while, though, a large amount of data must 
be rewritten.</p>
+
+<h1 id="Procrastinating-and-playing-catch-up">Procrastinating and playing 
catch-up</h1>
+
+<p>The simplest way to force fast index updates is to avoid rewriting 
anything.</p>
+
+<p>Indexer relies upon <a 
href="../../../Lucy/Index/IndexManager.html">IndexManager</a>&#39;s recycle() 
method to tell it which segments should be consolidated. If we subclass 
IndexManager and override recycle() so that it always returns an empty array, 
we get consistently quick performance:</p>
+
+<pre><code>    package NoMergeManager;
+    use base qw( Lucy::Index::IndexManager );
+    sub recycle { [] }
+    
+    package main;
+    my $indexer = Lucy::Index::Indexer-&gt;new(
+        index =&gt; &#39;/path/to/index&#39;,
+        manager =&gt; NoMergeManager-&gt;new,
+    );
+    ...
+    $indexer-&gt;commit;</code></pre>
+
+<p>However, we can&#39;t procrastinate forever. Eventually, we&#39;ll have to 
run an ordinary, uncontrolled indexing session, potentially triggering a large 
rewrite of lots of small and/or degraded segments:</p>
+
+<pre><code>    my $indexer = Lucy::Index::Indexer-&gt;new( 
+        index =&gt; &#39;/path/to/index&#39;, 
+        # manager =&gt; NoMergeManager-&gt;new,
+    );
+    ...
+    $indexer-&gt;commit;</code></pre>
+
+<h1 id="Acceptable-worst-case-update-time-slower-degradation">Acceptable 
worst-case update time, slower degradation</h1>
+
+<p>Never merging anything at all in the main indexing process is probably 
overkill. Small segments are relatively cheap to merge; we just need to guard 
against the big rewrites.</p>
+
+<p>Setting a ceiling on the number of documents in the segments to be recycled 
allows us to avoid a mass proliferation of tiny, single-document segments, 
while still offering decent worst-case update speed:</p>
+
+<pre><code>    package LightMergeManager;
+    use base qw( Lucy::Index::IndexManager );
+    
+    sub recycle {
+        my $self = shift;
+        my $seg_readers = $self-&gt;SUPER::recycle(@_);
+        @$seg_readers = grep { $_-&gt;doc_max &lt; 10 } @$seg_readers;
+        return $seg_readers;
+    }</code></pre>
+
+<p>However, we still have to consolidate every once in a while, and while that 
happens content updates will be locked out.</p>
+
+<h1 id="Background-merging">Background merging</h1>
+
+<p>If it&#39;s not acceptable to lock out updates while the index 
consolidation process runs, the alternative is to move the consolidation 
process out of band, using Lucy::Index::BackgroundMerger.</p>
+
+<p>It&#39;s never safe to have more than one Indexer attempting to modify the 
content of an index at the same time, but a BackgroundMerger and an Indexer can 
operate simultaneously:</p>
+
+<pre><code>    # Indexing process.
+    use Scalar::Util qw( blessed );
+    my $retries = 0;
+    while (1) {
+        eval {
+            my $indexer = Lucy::Index::Indexer-&gt;new(
+                    index =&gt; &#39;/path/to/index&#39;,
+                    manager =&gt; LightMergeManager-&gt;new,
+                );
+            $indexer-&gt;add_doc($doc);
+            $indexer-&gt;commit;
+        };
+        last unless $@;
+        if ( blessed($@) and $@-&gt;isa(&quot;Lucy::Store::LockErr&quot;) ) {
+            # Catch LockErr.
+            warn &quot;Couldn&#39;t get lock ($retries retries)&quot;;
+            $retries++;
+        }
+        else {
+            die &quot;Write failed: $@&quot;;
+        }
+    }
+
+    # Background merge process.
+    my $manager = Lucy::Index::IndexManager-&gt;new;
+    $manager-&gt;set_write_lock_timeout(60_000);
+    my $bg_merger = Lucy::Index::BackgroundMerger-&gt;new(
+        index   =&gt; &#39;/path/to/index&#39;,
+        manager =&gt; $manager,
+    );
+    $bg_merger-&gt;commit;</code></pre>
+
+<p>The exception handling code becomes useful once you have more than one 
index modification process happening simultaneously. By default, Indexer tries 
several times to acquire a write lock over the span of one second, then holds 
it until commit() completes. BackgroundMerger handles most of its work without 
the write lock, but it does need it briefly once at the beginning and once 
again near the end. Under normal loads, the internal retry logic will resolve 
conflicts, but if it&#39;s not acceptable to miss an insert, you probably want 
to catch LockErr exceptions thrown by Indexer. In contrast, a LockErr from 
BackgroundMerger probably just needs to be logged.</p>
+
+</body>
+</html>
+

Added: 
websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/DevGuide.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/DevGuide.html 
(added)
+++ websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/DevGuide.html 
Mon Apr  4 09:23:00 2016
@@ -0,0 +1,36 @@
+
+<html>
+<head>
+<title>Lucy::Docs::DevGuide - Apache Lucy Perl Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Docs::DevGuide - Quick-start guide to hacking on Apache Lucy.</p>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<p>The Apache Lucy code base is organized into roughly four layers:</p>
+
+<pre><code>   * Charmonizer - compiler and OS configuration probing.
+   * Clownfish - header files.
+   * C - implementation files.
+   * Host - binding language.</code></pre>
+
+<p>Charmonizer is a configuration prober which writes a single header file, 
&quot;charmony.h&quot;, describing the build environment and facilitating 
cross-platform development. It&#39;s similar to Autoconf or Metaconfig, but 
written in pure C.</p>
+
+<p>The &quot;.cfh&quot; files within the Lucy core are Clownfish header files. 
Clownfish is a purpose-built, declaration-only language which superimposes a 
single-inheritance object model on top of C which is specifically designed to 
co-exist happily with variety of &quot;host&quot; languages and to allow 
limited run-time dynamic subclassing. For more information see the Clownfish 
docs, but if there&#39;s one thing you should know about Clownfish OO before 
you start hacking, it&#39;s that method calls are differentiated from functions 
by capitalization:</p>
+
+<pre><code>    Indexer_Add_Doc   &lt;-- Method, typically uses dynamic 
dispatch.
+    Indexer_add_doc   &lt;-- Function, always a direct invocation.</code></pre>
+
+<p>The C files within the Lucy core are where most of Lucy&#39;s low-level 
functionality lies. They implement the interface defined by the Clownfish 
header files.</p>
+
+<p>The C core is intentionally left incomplete, however; to be usable, it must 
be bound to a &quot;host&quot; language. (In this context, even C is considered 
a &quot;host&quot; which must implement the missing pieces and be 
&quot;bound&quot; to the core.) Some of the binding code is autogenerated by 
Clownfish on a spec customized for each language. Other pieces are hand-coded 
in either C (using the host&#39;s C API) or the host language itself.</p>
+
+</body>
+</html>
+

Added: websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/DocIDs.html
==============================================================================
--- websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/DocIDs.html 
(added)
+++ websites/staging/lucy/trunk/content/docs/0.4.0/perl/Lucy/Docs/DocIDs.html 
Mon Apr  4 09:23:00 2016
@@ -0,0 +1,34 @@
+
+<html>
+<head>
+<title>Lucy::Docs::DocIDs - Apache Lucy Perl Documentation</title>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+</head>
+<body>
+
+
+<h1 id="NAME">NAME</h1>
+
+<p>Lucy::Docs::DocIDs - Characteristics of Apache Lucy document ids.</p>
+
+<h1 id="DESCRIPTION">DESCRIPTION</h1>
+
+<h2 id="Document-ids-are-signed-32-bit-integers">Document ids are signed 
32-bit integers</h2>
+
+<p>Document ids in Apache Lucy start at 1. Because 0 is never a valid doc id, 
we can use it as a sentinel value:</p>
+
+<pre><code>    while ( my $doc_id = $posting_list-&gt;next ) {
+        ...
+    }</code></pre>
+
+<h2 id="Document-ids-are-ephemeral">Document ids are ephemeral</h2>
+
+<p>The document ids used by Lucy are associated with a single index snapshot. 
The moment an index is updated, the mapping of document ids to documents is 
subject to change.</p>
+
+<p>Since IndexReader objects represent a point-in-time view of an index, 
document ids are guaranteed to remain static for the life of the reader. 
However, because they are not permanent, Lucy document ids cannot be used as 
foreign keys to locate records in external data sources. If you truly need a 
primary key field, you must define it and populate it yourself.</p>
+
+<p>Furthermore, the order of document ids does not tell you anything about the 
sequence in which documents were added to the index.</p>
+
+</body>
+</html>
+


Reply via email to