You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sa...@apache.org on 2011/02/19 17:50:25 UTC
svn commit: r1072386 [3/3] - in /lucene/dev/branches/branch_3x: ./
dev-tools/idea/lucene/contrib/benchmark/ dev-tools/idea/lucene/contrib/demo/
dev-tools/maven/lucene/contrib/benchmark/
dev-tools/maven/lucene/contrib/demo/ lucene/ lucene/contrib/benchm...
Modified: lucene/dev/branches/branch_3x/lucene/src/java/overview.html
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/overview.html?rev=1072386&r1=1072385&r2=1072386&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/overview.html (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/overview.html Sat Feb 19 16:50:23 2011
@@ -159,27 +159,19 @@ method.</li>
Some simple examples of code which does this are:
<ul>
<li>
- <a href="http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/src/demo/org/apache/lucene/demo/FileDocument.java">FileDocument.java</a> contains
-code to create a Document for a file.</li>
-
-<li>
- <a href="http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/src/demo/org/apache/lucene/demo/IndexFiles.java">IndexFiles.java</a> creates an
+ <a href="http://svn.apache.org/repos/asf/lucene/dev/branches/branch_3x/lucene/contrib/demo/src/java/org/apache/lucene/demo/IndexFiles.java">IndexFiles.java</a> creates an
index for all the files contained in a directory.</li>
<li>
- <a href="http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/src/demo/org/apache/lucene/demo/DeleteFiles.java">DeleteFiles.java</a> deletes some
-of these files from the index.</li>
-
-<li>
- <a href="http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/src/demo/org/apache/lucene/demo/SearchFiles.java">SearchFiles.java</a> prompts for
+ <a href="http://svn.apache.org/repos/asf/lucene/dev/branches/branch_3x/lucene/demo/src/java/org/apache/lucene/demo/SearchFiles.java">SearchFiles.java</a> prompts for
queries and searches an index.</li>
</ul>
To demonstrate these, try something like:
-<blockquote><tt>> <b>java -cp lucene.jar:lucene-demo.jar org.apache.lucene.demo.IndexFiles rec.food.recipes/soups</b></tt>
+<blockquote><tt>> <b>java -cp lucene.jar:lucene-demo.jar:lucene-analyzers-common.jar org.apache.lucene.demo.IndexFiles rec.food.recipes/soups</b></tt>
<br><tt>adding rec.food.recipes/soups/abalone-chowder</tt>
<br><tt> </tt>[ ... ]
-<p><tt>> <b>java -cp lucene.jar:lucene-demo.jar org.apache.lucene.demo.SearchFiles</b></tt>
+<p><tt>> <b>java -cp lucene.jar:lucene-demo.jar:lucene-analyzers-common.jar org.apache.lucene.demo.SearchFiles</b></tt>
<br><tt>Query: <b>chowder</b></tt>
<br><tt>Searching for: chowder</tt>
<br><tt>34 total matching documents</tt>
@@ -195,16 +187,5 @@ and the word "manhattan" ... ]
<br> [ Note: "+" and "-" are canonical, but "AND", "OR"
and "NOT" may be used. ]</blockquote>
-The <a href="http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/src/demo/org/apache/lucene/demo/IndexHTML.java">IndexHTML</a> demo is more sophisticated.
-It incrementally maintains an index of HTML files, adding new files as
-they appear, deleting old files as they disappear and re-indexing files
-as they change.
-<blockquote><tt>> <b>java -cp lucene.jar:lucene-demo.jar org.apache.lucene.demo.IndexHTML -create java/jdk1.1.6/docs/relnotes</b></tt>
-<br><tt>adding java/jdk1.1.6/docs/relnotes/SMICopyright.html</tt>
-<br><tt> </tt>[ ... create an index containing all the relnotes ]
-<p><tt>> <b>rm java/jdk1.1.6/docs/relnotes/smicopyright.html</b></tt>
-<p><tt>> <b>java -cp lucene.jar:lucene-demo.jar org.apache.lucene.demo.IndexHTML java/jdk1.1.6/docs/relnotes</b></tt>
-<br><tt>deleting java/jdk1.1.6/docs/relnotes/SMICopyright.html</tt></blockquote>
-
</body>
</html>
Modified: lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/demo.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/demo.xml?rev=1072386&r1=1072385&r2=1072386&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/demo.xml (original)
+++ lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/demo.xml Sat Feb 19 16:50:23 2011
@@ -18,10 +18,10 @@ It walks you through some basic installa
</section>
-<section id="About the Demos"><title>About the Demos</title>
+<section id="About the Demo"><title>About the Demo</title>
<p>
-The Lucene command-line demo code consists of two applications that demonstrate various
-functionalities of Lucene and how one should go about adding Lucene to their applications.
+The Lucene command-line demo code consists of an application that demonstrates various
+functionalities of Lucene and how you can add Lucene to your applications.
</p>
</section>
@@ -30,14 +30,23 @@ functionalities of Lucene and how one sh
First, you should <a href="http://www.apache.org/dyn/closer.cgi/lucene/java/">download</a> the
latest Lucene distribution and then extract it to a working directory. Alternatively, you can <a
href="http://wiki.apache.org/lucene-java/SourceRepository">check out the sources from
-Subversion</a>, and then run <code>ant war-demo</code> to generate the JARs and WARs.
+Subversion</a>, and then run <code>ant</code> in the <code>lucene/contrib/demo/</code>
+directory to generate the JARs.
</p>
<p>
-You should see the Lucene JAR file in the directory you created when you extracted the archive. It
-should be named something like <code>lucene-core-{version}.jar</code>. You should also see a file
-called <code>lucene-demos-{version}.jar</code>. If you checked out the sources from Subversion then
-the JARs are located under the <code>build</code> subdirectory (after running <code>ant</code>
-successfully). Put both of these files in your Java CLASSPATH.
+You need three JARs: the Lucene JAR, the common analysis JAR, and the Lucene demo JAR. You should
+see the Lucene JAR file in the directory you created when you extracted the archive -- it
+should be named something like <code>lucene-core-{version}.jar</code>. You should also see files
+called <code>lucene-analysis-common-{version}.jar</code> and <code>lucene-demos-{version}.jar</code>.
+If you checked out the sources from Subversion then the JARs are located at:
+</p>
+<ul>
+ <li><code>lucene/build/lucene-core-4.0-SNAPSHOT.jar</code></li>
+ <li><code>modules/analysis/build/common/lucene-analyzers-common-4.0-SNAPSHOT.jar</code></li>
+ <li><code>lucene/build/contrib/demo/lucene-demo-4.0-SNAPSHOT.jar</code></li>
+</ul>
+<p>
+Put all three of these files in your Java CLASSPATH.
</p>
</section>
Modified: lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/demo2.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/demo2.xml?rev=1072386&r1=1072385&r2=1072386&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/demo2.xml (original)
+++ lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/demo2.xml Sat Feb 19 16:50:23 2011
@@ -23,9 +23,9 @@ how to use Lucene in their applications.
<p>
Relative to the directory created when you extracted Lucene or retrieved it from Subversion, you
-should see a directory called <code>src</code> which in turn contains a directory called
-<code>demo</code>. This is the root for all of the Lucene demos. Under this directory is
-<code>org/apache/lucene/demo</code>. This is where all the Java sources for the demos live.
+should see a directory called <code>lucene/contrib/demo/</code>. This is the root for the Lucene
+demo. Under this directory is <code>src/java/org/apache/lucene/demo/</code>. This is where all
+the Java sources for the demo live.
</p>
<p>
@@ -39,62 +39,80 @@ Bring it up in <code>vi</code> or your e
<p>
As we discussed in the previous walk-through, the <a
-href="api/demo/org/apache/lucene/demo/IndexFiles.html">IndexFiles</a> class creates a Lucene
+href="api/contrib-demo/org/apache/lucene/demo/IndexFiles.html">IndexFiles</a> class creates a Lucene
Index. Let's take a look at how it does this.
</p>
<p>
-The first substantial thing the <code>main</code> function does is instantiate <a
-href="api/core/org/apache/lucene/index/IndexWriter.html">IndexWriter</a>. It passes the string
-"<code>index</code>" and a new instance of a class called <a
-href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a>.
-The "<code>index</code>" string is the name of the filesystem directory where all index information
-should be stored. Because we're not passing a full path, this will be created as a subdirectory of
-the current working directory (if it does not already exist). On some platforms, it may be created
-in other directories (such as the user's home directory).
+The <code>main()</code> method parses the command-line parameters, then in preparation for
+instantiating <a href="api/core/org/apache/lucene/index/IndexWriter.html">IndexWriter</a>, opens a
+<a href="api/core/org/apache/lucene/store/Directory.html">Directory</a> and instantiates
+<a href="api/module-analysis-common/org/apache/lucene/analysis/standard/StandardAnalyzer.html"
+>StandardAnalyzer</a> and
+<a href="api/core/org/apache/lucene/index/IndexWriterConfig.html">IndexWriterConfig</a>.
</p>
<p>
-The <a href="api/core/org/apache/lucene/index/IndexWriter.html">IndexWriter</a> is the main
-class responsible for creating indices. To use it you must instantiate it with a path that it can
-write the index into. If this path does not exist it will first create it. Otherwise it will
-refresh the index at that path. You can also create an index using one of the subclasses of <a
-href="api/core/org/apache/lucene/store/Directory.html">Directory</a>. In any case, you must also pass an
-instance of <a
-href="api/core/org/apache/lucene/analysis/Analyzer.html">org.apache.lucene.analysis.Analyzer</a>.
+The value of the <code>-index</code> command-line parameter is the name of the filesystem directory
+where all index information should be stored. If <code>IndexFiles</code> is invoked with a
+relative path given in the <code>-index</code> command-line parameter, or if the <code>-index</code>
+command-line parameter is not given, causing the default relative index path "<code>index</code>"
+to be used, the index path will be created as a subdirectory of the current working directory
+(if it does not already exist). On some platforms, the index path may be created in a different
+directory (such as the user's home directory).
</p>
<p>
-The particular <a href="api/core/org/apache/lucene/analysis/Analyzer.html">Analyzer</a> we
-are using, <a
-href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a>, is
-little more than a standard Java Tokenizer, converting all strings to lowercase and filtering out
-stop words and characters from the index. By stop words and characters I mean common language
-words such as articles (a, an, the, etc.) and other strings that may have less value for searching
-(e.g. <b>'s</b>) . It should be noted that there are different rules for every language, and you
-should use the proper analyzer for each. Lucene currently provides Analyzers for a number of
-different languages (see the <code>*Analyzer.java</code> sources under <a
-href="http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/contrib/analyzers/common/src/java/org/apache/lucene/analysis/">contrib/analyzers/src/java/org/apache/lucene/analysis</a>).
+The <code>-docs</code> command-line parameter value is the location of the directory containing
+files to be indexed.
+</p>
+
+<p>
+The <code>-update</code> command-line parameter tells <code>IndexFiles</code> not to delete the
+index if it already exists. When <code>-update</code> is not given, <code>IndexFiles</code> will
+first wipe the slate clean before indexing any documents.
</p>
<p>
-Looking further down in the file, you should see the <code>indexDocs()</code> code. This recursive
-function simply crawls the directories and uses <a
-href="api/demo/org/apache/lucene/demo/FileDocument.html">FileDocument</a> to create <a
-href="api/core/org/apache/lucene/document/Document.html">Document</a> objects. The <a
-href="api/core/org/apache/lucene/document/Document.html">Document</a> is simply a data object to
-represent the content in the file as well as its creation time and location. These instances are
-added to the <code>indexWriter</code>. Take a look inside <a
-href="api/demo/org/apache/lucene/demo/FileDocument.html">FileDocument</a>. It's not particularly
-complicated. It just adds fields to the <a
-href="api/core/org/apache/lucene/document/Document.html">Document</a>.
+Lucene <a href="api/core/org/apache/lucene/store/Directory.html">Directory</a>s are used by the
+<code>IndexWriter</code> to store information in the index. In addition to the
+<a href="api/core/org/apache/lucen/store/FSDirectory.html">FSDirectory</a> implementation we are using,
+there are several other <code>Directory</code> subclasses that can write to RAM, to databases, etc.
+</p>
+
+<p>
+Lucene <a href="api/core/org/apache/lucene/analysis/Analyzer.html">Analyzer</a>s are processing pipelines
+that break up text into indexed tokens, a.k.a. terms, and optionally perform other operations on these
+tokens, e.g. downcasing, synonym insertion, filtering out unwanted tokens, etc. The <code>Analyzer</code>
+we are using is <code>StandardAnalyzer</code>, which creates tokens using the Word Break rules from the
+Unicode Text Segmentation algorithm specified in <a href="http://unicode.org/reports/tr29/">Unicode
+Standard Annex #29</a>; converts tokens to lowercase; and then filters out stopwords. Stopwords are
+common language words such as articles (a, an, the, etc.) and other tokens that may have less value for
+searching. It should be noted that there are different rules for every language, and you should use the
+proper analyzer for each. Lucene currently provides Analyzers for a number of different languages (see
+the <code>*Analyzer.java</code> sources under
+<a href="http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/contrib/analyzers/common/src/java/org/apache/lucene/analysis/"
+>lucene/contrib/analyzers/common/src/java/org/apache/lucene/analysis/</a>).
</p>
<p>
-As you can see there isn't much to creating an index. The devil is in the details. You may also
-wish to examine the other samples in this directory, particularly the <a
-href="api/demo/org/apache/lucene/demo/IndexHTML.html">IndexHTML</a> class. It is a bit more
-complex but builds upon this example.
+The <code>IndexWriterConfig</code> instance holds all configuration for <code>IndexWriter</code>. For
+example, we set the <code>OpenMode</code> to use here based on the value of the <code>-update</code>
+command-line parameter.
+</p>
+
+<p>
+Looking further down in the file, after <code>IndexWriter</code> is instantiated, you should see the
+<code>indexDocs()</code> code. This recursive function crawls the directories and creates
+<a href="api/core/org/apache/lucene/document/Document.html">Document</a> objects. The
+<code>Document</code> is simply a data object to represent the text content from the file as well as
+its creation time and location. These instances are added to the <code>IndexWriter</code>. If
+the <code>-update</code> command-line parameter is given, the <code>IndexWriter</code>
+<code>OpenMode</code> will be set to <code>OpenMode.CREATE_OR_APPEND</code>, and rather than
+adding documents to the index, the <code>IndexWriter</code> will <strong>update</strong> them
+in the index by attempting to find an already-indexed document with the same identifier (in our
+case, the file path serves as the identifier); deleting it from the index if it exists; and then
+adding the new document to the index.
</p>
</section>
@@ -102,43 +120,33 @@ complex but builds upon this example.
<section id="Searching Files"><title>Searching Files</title>
<p>
-The <a href="api/demo/org/apache/lucene/demo/SearchFiles.html">SearchFiles</a> class is
-quite simple. It primarily collaborates with an <a
-href="api/core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a>, <a
-href="api/core/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a>
-(which is used in the <a
-href="api/core/org/apache/lucene/demo/IndexFiles.html">IndexFiles</a> class as well) and a
-<a href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a>. The
+The <a href="api/contrib-demo/org/apache/lucene/demo/SearchFiles.html">SearchFiles</a> class is
+quite simple. It primarily collaborates with an
+<a href="api/core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a>,
+<a href="api/modules-analysis-common/org/apache/lucene/analysis/standard/StandardAnalyzer.html"
+>StandardAnalyzer</a> (which is used in the
+<a href="api/contrib-demo/org/apache/lucene/demo/IndexFiles.html">IndexFiles</a> class as well)
+and a <a href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a>. The
query parser is constructed with an analyzer used to interpret your query text in the same way the
-documents are interpreted: finding the end of words and removing useless words like 'a', 'an' and
-'the'. The <a href="api/core/org/apache/lucene/search/Query.html">Query</a> object contains
-the results from the <a
-href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a> which is passed to
-the searcher. Note that it's also possible to programmatically construct a rich <a
-href="api/core/org/apache/lucene/search/Query.html">Query</a> object without using the query
+documents are interpreted: finding word boundaries, downcasing, and removing useless words like
+'a', 'an' and 'the'. The <a href="api/core/org/apache/lucene/search/Query.html">Query</a>
+object contains the results from the
+<a href="api/core/org/apache/lucene/queryParser/QueryParser.html">QueryParser</a> which is passed
+to the searcher. Note that it's also possible to programmatically construct a rich
+<a href="api/core/org/apache/lucene/search/Query.html">Query</a> object without using the query
parser. The query parser just enables decoding the <a href="queryparsersyntax.html">Lucene query
-syntax</a> into the corresponding <a
-href="api/core/org/apache/lucene/search/Query.html">Query</a> object. Search can be executed in
-two different ways:
+syntax</a> into the corresponding <a href="api/core/org/apache/lucene/search/Query.html">Query</a>
+object. Search can be executed in two different ways:
+</p>
+
<ul>
<li>Streaming: A <a href="api/core/org/apache/lucene/search/Collector.html">Collector</a> subclass
simply prints out the document ID and score for each matching document.</li>
-<li>Paging: Using a <a href="api/core/org/apache/lucene/search/TopScoreDocCollector.html">TopScoreDocCollector</a>
- the search results are printed in pages, sorted by score (i. e. relevance).</li>
-</ul>
-</p>
+<li>Paging: Using the <code>IndexSearcher.search(query,n)</code> method that returns
+<a href="api/core/org/apache/lucene/search/TopDocs.html">TopDocs</a> with max <code>n</code> hits,
+the search results are printed in pages, sorted by score (i.e. relevance).</li>
+</ul>
</section>
-
-<section id="The Web example..."><title>The Web example...</title>
-
-<p>
-<a href="demo3.html">read on>>></a>
-</p>
-
-</section>
-
</body>
</document>
-
-
Modified: lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/gettingstarted.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/gettingstarted.xml?rev=1072386&r1=1072385&r2=1072386&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/gettingstarted.xml (original)
+++ lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/gettingstarted.xml Sat Feb 19 16:50:23 2011
@@ -14,7 +14,7 @@
<title>Getting Started</title>
<p>
This document is intended as a "getting started" guide. It has three audiences: first-time users
-looking to install Apache Lucene in their application or web server; developers looking to modify or base
+looking to install Apache Lucene in their application; developers looking to modify or base
the applications they develop on Lucene; and developers looking to become involved in and contribute
to the development of Lucene. This document is written in tutorial and walk-through format. The
goal is to help you "get started". It does not go into great depth on some of the conceptual or
@@ -33,20 +33,6 @@ may wish to skip sections.
<li><a href="demo2.html">About the sources and implementation for the command-line Lucene
demo</a>. This section walks through the implementation details (sources) of the
command-line Lucene demo. This section is intended for developers.</li> <p/>
-
- <li><a href="demo3.html">About installing and configuring the demo template web
- application</a>. While this walk-through assumes Tomcat as your container of choice,
- there is no reason you can't (provided you have the requisite knowledge) adapt the
- instructions to your container. This section is intended for those responsible for the
- development or deployment of Lucene-based web applications.</li> <p/>
-
- <li><a href="demo4.html">About the sources used to construct the demo template web
- application</a>. Please note the template application is designed to highlight features of
- Lucene and is <b>not</b> an example of best practices. (One would hopefully use MVC
- architecture such as provided by Jakarta Struts and taglibs, but showing you how to do that
- would be WAY beyond the scope of this guide.) This section is intended for developers and
- those wishing to customize the demo template web application to their needs. </li>
-
</ul>
</section>
Modified: lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/lucene-contrib/index.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/lucene-contrib/index.xml?rev=1072386&r1=1072385&r2=1072386&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/lucene-contrib/index.xml (original)
+++ lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/lucene-contrib/index.xml Sat Feb 19 16:50:23 2011
@@ -64,6 +64,12 @@
<p>The benchmark contribution contains tools for benchmarking Lucene using standard, freely available corpora.</p>
<p>See <a href="../api/contrib-benchmark/index.html">benchmark javadoc</a></p>
</section>
+
+ <section id="demo"><title>demo</title>
+ <p>The demo contrib contains the Lucene demo: IndexFiles and SearchFiles, described under
+ <a href="../gettingstarted.html">Getting Started</a>.</p>
+ <p>See <a href="../api/contrib-demo/index.html">demo javadoc</a></p>
+ </section>
<section id="db"><title>db</title>
<p>Provides integration with Berkley DB.</p>
Modified: lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/site.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/site.xml?rev=1072386&r1=1072385&r2=1072386&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/site.xml (original)
+++ lucene/dev/branches/branch_3x/lucene/src/site/src/documentation/content/xdocs/site.xml Sat Feb 19 16:50:23 2011
@@ -50,7 +50,6 @@ See http://forrest.apache.org/docs/linki
<javadoc label="Javadocs">
<javadoc-all label="All" href="ext:javadocs-all"/>
<javadoc-core label="Core" href="ext:javadocs-core"/>
- <javadoc-demo label="Demo" href="ext:javadocs-demo"/>
<javadoc-contrib label="Contrib">
<javadoc-contrib-analyzers label="Analyzers" href="ext:javadocs-contrib-analyzers"/>
<javadoc-contrib-smartcn label="Smart Chinese Analyzer" href="ext:javadocs-contrib-smartcn"/>
@@ -59,6 +58,7 @@ See http://forrest.apache.org/docs/linki
<javadoc-contrib-bdb label="Bdb" href="ext:javadocs-contrib-bdb"/>
<javadoc-contrib-bdb-je label="Bdb-je" href="ext:javadocs-contrib-bdb-je"/>
<javadoc-contrib-benchmark label="Benchmark" href="ext:javadocs-contrib-benchmark"/>
+ <javadoc-contrib-demo label="Demo" href="ext:javadocs-contrib-demo"/>
<javadoc-contrib-highlighter label="Highlighter" href="ext:javadocs-contrib-highlighter"/>
<javadoc-contrib-icu label="ICU" href="ext:javadocs-contrib-icu"/>
<javadoc-contrib-instantiated label="Instantiated" href="ext:javadocs-contrib-instantiated"/>
@@ -102,7 +102,6 @@ See http://forrest.apache.org/docs/linki
<changes-contrib href="changes/Contrib-Changes.html" />
<javadocs-all href="api/all/index.html"/>
<javadocs-core href="api/core/index.html"/>
- <javadocs-demo href="api/demo/index.html"/>
<javadocs-contrib-analyzers href="api/contrib-analyzers/index.html"/>
<javadocs-contrib-smartcn href="api/contrib-smartcn/index.html"/>
<javadocs-contrib-stempel href="api/contrib-stempel/index.html"/>
@@ -110,6 +109,7 @@ See http://forrest.apache.org/docs/linki
<javadocs-contrib-bdb href="api/contrib-bdb/index.html"/>
<javadocs-contrib-bdb-je href="api/contrib-bdb-je/index.html"/>
<javadocs-contrib-benchmark href="api/contrib-benchmark/index.html"/>
+ <javadocs-contrib-demo href="api/contrib-demo/index.html"/>
<javadocs-contrib-highlighter href="api/contrib-highlighter/index.html"/>
<javadocs-contrib-icu href="api/contrib-icu/index.html"/>
<javadocs-contrib-instantiated href="api/contrib-instantiated/index.html"/>