expose previously-hidden javadocs in queryparser, fail the build if we have secret javadocs in the future, tidy up package.htmls in queryparser

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1328844 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Robert Muir 2012-04-22 11:27:52 +00:00
parent 17696e5ea1
commit ba57e92f22
19 changed files with 164 additions and 178 deletions

View File

@ -1290,6 +1290,7 @@ ${tests-output}/junit4-*.suites - per-JVM executed suites
charset="${javadoc.charset}"
docencoding="${javadoc.charset}"
noindex="true"
includenosourcepackages="true"
author="true"
version="true"
linksource="@{linksource}"

View File

@ -21,7 +21,7 @@
</head>
<body>
Contains the necessary classes to implement query builders
Necessary classes to implement query builders.
<h2>Query Parser Builders</h2>
<p>

View File

@ -21,7 +21,7 @@
</head>
<body>
Contains the base classes used to configure the query processing
Base classes used to configure the query processing.
<h2>Query Configuration Interfaces</h2>
<p>

View File

@ -21,7 +21,7 @@
</head>
<body>
Contains messages usually used by query parser implementations
Messages usually used by query parser implementations.
<h2>Query Parser Messages</h2>

View File

@ -21,7 +21,7 @@
</head>
<body>
Contains query nodes that are commonly used by query parser implementations
Query nodes commonly used by query parser implementations.
<h2>Query Nodes</h2>
<p>

View File

@ -21,7 +21,7 @@
</head>
<body>
Contains the core classes of the flexible query parser framework
Core classes of the flexible query parser framework.
<h2>Flexible Query Parser</h2>

View File

@ -21,7 +21,7 @@
</head>
<body>
Contains the necessary interfaces to implement text parsers
Necessary interfaces to implement text parsers.
<h2>Parser</h2>
<p>

View File

@ -20,7 +20,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
Utility classes to used with the Query Parser
Utility classes to used with the Query Parser.
<h2>Utility classes to used with the Query Parser</h2>
<p>
This package contains utility classes used with the query parsers.

View File

@ -1,145 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!--
TODO: this documentation is NOT VISIBLE because there are no classes in this package.
merge into overview.html with descriptions of the other QPs -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Apache Lucene Flexible Query Parser</title>
</head>
<body>
<h2>Apache Lucene Flexible Query Parser</h2>
<p>
This project contains the new Lucene query parser implementation, which matches the syntax of the core QueryParser but offers a more modular architecture to enable customization.
</p>
<p>
It's currently divided in 2 main packages:
<ul>
<li>{@link org.apache.lucene.queryParser.core}: it contains the query parser API classes, which should be extended by query parser implementations. </li>
<li>{@link org.apache.lucene.queryParser.standard}: it contains the current Lucene query parser implementation using the new query parser API.</li>
</ul>
</p>
<h3>Features</h3>
<ol>
<li>Full support for boolean logic (not enabled)</li>
<li>QueryNode Trees - support for several syntaxes,
that can be converted into similar syntax QueryNode trees.</li>
<li>QueryNode Processors - Optimize, validate, rewrite the
QueryNode trees</li>
<li>Processors Pipelines - Select your favorite Processor
and build a processor pipeline, to implement the features you need</li>
<li>Config Interfaces - Allow the consumer of the Query Parser to implement
a diff Config Handler Objects to suite their needs.</li>
<li>Standard Builders - convert QueryNode's into several lucene
representations. Supported conversion is using a 2.4 compatible logic</li>
<li>QueryNode tree's can be converted to a lucene 2.4 syntax string, using toQueryString</li>
</ol>
<h3>Design</h3>
<p>
This new query parser was designed to have very generic
architecture, so that it can be easily used for different
products with varying query syntaxes. This code is much more
flexible and extensible than the Lucene query parser in 2.4.X.
</p>
<p>
The new query parser goal is to separate syntax and semantics of a query. E.g. 'a AND
b', '+a +b', 'AND(a,b)' could be different syntaxes for the same query.
It distinguishes the semantics of the different query components, e.g.
whether and how to tokenize/lemmatize/normalize the different terms or
which Query objects to create for the terms. It allows to
write a parser with a new syntax, while reusing the underlying
semantics, as quickly as possible.
</p>
<p>
The query parser has three layers and its core is what we call the
QueryNode tree. It is a tree that initially represents the syntax of the
original query, e.g. for 'a AND b':
</p>
<pre>
AND
/ \
A B
</pre>
<p>
The three layers are:
</p>
<dl>
<dt>QueryParser</dt>
<dd>
This layer is the text parsing layer which simply transforms the
query text string into a {@link org.apache.lucene.queryParser.core.nodes.QueryNode} tree. Every text parser
must implement the interface {@link org.apache.lucene.queryParser.core.parser.SyntaxParser}.
Lucene default implementations implements it using JavaCC.
</dd>
<dt>QueryNodeProcessor</dt>
<dd>The query node processors do most of the work. It is in fact a
configurable chain of processors. Each processors can walk the tree and
modify nodes or even the tree's structure. That makes it possible to
e.g. do query optimization before the query is executed or to tokenize
terms.
</dd>
<dt>QueryBuilder</dt>
<dd>
The third layer is a configurable map of builders, which map {@link org.apache.lucene.queryParser.core.nodes.QueryNode} types to its specific
builder that will transform the QueryNode into Lucene Query object.
</dd>
</dl>
<p>
Furthermore, the query parser uses flexible configuration objects. It also uses message classes that
allow to attach resource bundles. This makes it possible to translate
messages, which is an important feature of a query parser.
</p>
<p>
This design allows to develop different query syntaxes very quickly.
</p>
<h3>StandardQueryParser and QueryParserWrapper</h3>
<p>
The standard (default) Lucene query parser is located under
org.apache.lucene.queryParser.standard.
<p>
To make it simpler to use the new query parser
the class {@link org.apache.lucene.queryParser.standard.StandardQueryParser} may be helpful,
specially for people that do not want to extend the Query Parser.
It uses the default Lucene query processors, text parser and builders, so
you don't need to worry about dealing with those.
{@link org.apache.lucene.queryParser.standard.StandardQueryParser} usage:
<pre class="prettyprint">
StandardQueryParser qpHelper = new StandardQueryParser();
StandardQueryConfigHandler config = qpHelper.getQueryConfigHandler();
config.setAllowLeadingWildcard(true);
config.setAnalyzer(new WhitespaceAnalyzer());
Query query = qpHelper.parse("apache AND lucene", "defaultField");
</pre>
</body>
</html>

View File

@ -21,7 +21,7 @@
</head>
<body>
This package contains the Precedence Query Parser Implementation
Precedence Query Parser Implementation
<h2>Lucene Precedence Query Parser</h2>

View File

@ -21,7 +21,7 @@
</head>
<body>
This package contains the processors used by Precedence Query Parser
Processors used by Precedence Query Parser
<h2>Lucene Precedence Query Parser Processors</h2>

View File

@ -21,6 +21,8 @@
</head>
<body>
Standard Lucene Query Node Builders.
<h2>Standard Lucene Query Node Builders</h2>
<p>
The package org.apache.lucene.queryparser.flexible.standard.builders contains all the builders needed

View File

@ -21,6 +21,8 @@
</head>
<body>
Standard Lucene Query Configuration.
<h2>Standard Lucene Query Configuration</h2>
<p>
The package org.apache.lucene.queryparser.flexible.standard.config contains the Lucene

View File

@ -21,6 +21,8 @@
</head>
<body>
Standard Lucene Query Nodes.
<h2>Standard Lucene Query Nodes</h2>
<p>
The package org.apache.lucene.queryparser.flexible.standard.nodes contains QueryNode classes

View File

@ -21,7 +21,7 @@
</head>
<body>
Contains the implementation of the {@linkplain org.apache.lucene.queryparser.classic Lucene classic query parser} using the flexible query parser frameworks
Implementation of the {@linkplain org.apache.lucene.queryparser.classic Lucene classic query parser} using the flexible query parser frameworks
<h2>Lucene Flexible Query Parser Implementation</h2>
<p>

View File

@ -21,6 +21,8 @@
</head>
<body>
Lucene Query Parser.
<h2>Lucene Query Parser</h2>
<p>
The package org.apache.lucene.queryparser.flexible.standard.parser contains the query parser.

View File

@ -21,6 +21,8 @@
</head>
<body>
Lucene Query Node Processors.
<h2>Lucene Query Node Processors</h2>
<p>
The package org.apache.lucene.queryparser.flexible.standard.processors contains every processor needed to assembly a pipeline

View File

@ -1,22 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<html>
<body>
A QueryParser that supports the Span family of queries as well as pre and infix notation.
</body>
</html>

View File

@ -21,6 +21,148 @@
</title>
</head>
<body>
QueryParsers
Apache Lucene QueryParsers.
<p>
This module provides a number of queryparsers:
<ul>
<li><a href="#classic">Classic</a>
<li><a href="#analyzing">Analyzing</a>
<li><a href="#complexphrase">Complex Phrase</a>
<li><a href="#extendable">Extendable</a>
<li><a href="#flexible">Flexible</a>
<li><a href="#surround">Surround</a>
<li><a href="#xml">XML</a>
</ul>
<hr/>
<h2><a name="classic">Classic</a></h2>
A Simple Lucene QueryParser implemented with JavaCC.
<h2><a name="analyzing">Analyzing</a></h2>
QueryParser that passes Fuzzy-, Prefix-, Range-, and WildcardQuerys through the given analyzer.
<h2><a name="complexphrase">Complex Phrase</a></h2>
QueryParser which permits complex phrase query syntax eg "(john jon jonathan~) peters*"
<h2><a name="extendable">Extendable</a></h2>
Extendable QueryParser provides a simple and flexible extension mechanism by overloading query field names.
<h2><a name="flexible">Flexible</a></h2>
<p>
This project contains the new Lucene query parser implementation, which matches the syntax of the core QueryParser but offers a more modular architecture to enable customization.
</p>
<p>
It's currently divided in 2 main packages:
<ul>
<li>{@link org.apache.lucene.queryparser.flexible.core}: it contains the query parser API classes, which should be extended by query parser implementations. </li>
<li>{@link org.apache.lucene.queryparser.flexible.standard}: it contains the current Lucene query parser implementation using the new query parser API.</li>
</ul>
</p>
<h3>Features</h3>
<ol>
<li>Full support for boolean logic (not enabled)</li>
<li>QueryNode Trees - support for several syntaxes,
that can be converted into similar syntax QueryNode trees.</li>
<li>QueryNode Processors - Optimize, validate, rewrite the
QueryNode trees</li>
<li>Processors Pipelines - Select your favorite Processor
and build a processor pipeline, to implement the features you need</li>
<li>Config Interfaces - Allow the consumer of the Query Parser to implement
a diff Config Handler Objects to suite their needs.</li>
<li>Standard Builders - convert QueryNode's into several lucene
representations. Supported conversion is using a 2.4 compatible logic</li>
<li>QueryNode tree's can be converted to a lucene 2.4 syntax string, using toQueryString</li>
</ol>
<h3>Design</h3>
<p>
This new query parser was designed to have very generic
architecture, so that it can be easily used for different
products with varying query syntaxes. This code is much more
flexible and extensible than the Lucene query parser in 2.4.X.
</p>
<p>
The new query parser goal is to separate syntax and semantics of a query. E.g. 'a AND
b', '+a +b', 'AND(a,b)' could be different syntaxes for the same query.
It distinguishes the semantics of the different query components, e.g.
whether and how to tokenize/lemmatize/normalize the different terms or
which Query objects to create for the terms. It allows to
write a parser with a new syntax, while reusing the underlying
semantics, as quickly as possible.
</p>
<p>
The query parser has three layers and its core is what we call the
QueryNode tree. It is a tree that initially represents the syntax of the
original query, e.g. for 'a AND b':
</p>
<pre>
AND
/ \
A B
</pre>
<p>
The three layers are:
</p>
<dl>
<dt>QueryParser</dt>
<dd>
This layer is the text parsing layer which simply transforms the
query text string into a {@link org.apache.lucene.queryparser.flexible.core.nodes.QueryNode} tree. Every text parser
must implement the interface {@link org.apache.lucene.queryparser.flexible.core.parser.SyntaxParser}.
Lucene default implementations implements it using JavaCC.
</dd>
<dt>QueryNodeProcessor</dt>
<dd>The query node processors do most of the work. It is in fact a
configurable chain of processors. Each processors can walk the tree and
modify nodes or even the tree's structure. That makes it possible to
e.g. do query optimization before the query is executed or to tokenize
terms.
</dd>
<dt>QueryBuilder</dt>
<dd>
The third layer is a configurable map of builders, which map {@link org.apache.lucene.queryparser.flexible.core.nodes.QueryNode} types to its specific
builder that will transform the QueryNode into Lucene Query object.
</dd>
</dl>
<p>
Furthermore, the query parser uses flexible configuration objects. It also uses message classes that
allow to attach resource bundles. This makes it possible to translate
messages, which is an important feature of a query parser.
</p>
<p>
This design allows to develop different query syntaxes very quickly.
</p>
<h3>StandardQueryParser and QueryParserWrapper</h3>
<p>
The classic Lucene query parser is located under
{@link org.apache.lucene.queryparser.classic}.
<p>
To make it simpler to use the new query parser
the class {@link org.apache.lucene.queryparser.flexible.standard.StandardQueryParser} may be helpful,
specially for people that do not want to extend the Query Parser.
It uses the default Lucene query processors, text parser and builders, so
you don't need to worry about dealing with those.
{@link org.apache.lucene.queryparser.flexible.standard.StandardQueryParser} usage:
<pre class="prettyprint">
StandardQueryParser qpHelper = new StandardQueryParser();
StandardQueryConfigHandler config = qpHelper.getQueryConfigHandler();
config.setAllowLeadingWildcard(true);
config.setAnalyzer(new WhitespaceAnalyzer());
Query query = qpHelper.parse("apache AND lucene", "defaultField");
</pre>
<h2><a name="surround">Surround</a></h2>
<p>
A QueryParser that supports the Span family of queries as well as pre and infix notation.
</p>
<h2><a name="xml">XML</a></h2>
A QueryParser that produces Lucene Query objects from XML streams.
<p>
</p>
</body>
</html>