# Package org.apache.lucene.queryparser.flexible.core.nodes

package org.apache.lucene.queryparser.flexible.core.nodes
Query nodes commonly used by query parser implementations.

## Query Nodes

The package `org.apache.lucene.queryParser.nodes` contains all the basic query nodes. The interface that represents a query node is `QueryNode`.

`QueryNode`s are used by the text parser to create a syntax tree. These nodes are designed to be used by UI or other text parsers. The default Lucene text parser is `StandardSyntaxParser`, it implements Lucene's standard syntax.

`QueryNode` interface should be implemented by all query nodes, the class `QueryNodeImpl` implements `QueryNode` and is extended by all current query node implementations.

A query node tree can be printed to the a stream, and it generates a pseudo XML representation with all the nodes.

A query node tree can also generate a query string that can be parsed back by the original text parser, at this point only the standard lucene syntax is supported.

Grouping nodes:

- AndQueryNode - used for AND operator
- AnyQueryNode - used for ANY operator
- OrQueryNode - used for OR operator
- BooleanQueryNode - used when no operator is specified
- ModifierQueryNode - used for modifier operator
- GroupQueryNode - used for parenthesis
- BoostQueryNode - used for boost operator
- SlopQueryNode - phrase slop
- FuzzyQueryNode - fuzzy node
- TermRangeQueryNode - used for parametric field:[low_value TO high_value]
- ProximityQueryNode - used for proximity search
- LegacyNumericRangeQueryNode - used for numeric range search
- TokenizedPhraseQueryNode - used by tokenizers/lemmatizers/analyzers for phrases/autophrases

Leaf Nodes:

- FieldQueryNode - field/value node
- LegacyNumericQueryNode - used for numeric search
- PathQueryNode - `QueryNode` object used with path-like queries
- OpaqueQueryNode - Used as for part of the query that can be parsed by other parsers. schema/value
- PrefixWildcardQueryNode - non-phrase wildcard query
- QuotedFieldQUeryNode - regular phrase node
- WildcardQueryNode - non-phrase wildcard query

Utility Nodes:

- DeletedQueryNode - used by processors on optimizations
- MatchAllDocsQueryNode - used by processors on optimizations
- MatchNoDocsQueryNode - used by processors on optimizations
- NoTokenFoundQueryNode - used by tokenizers/lemmatizers/analyzers

Related Packages
Package
Description
org.apache.lucene.queryparser.flexible.core
Core classes of the flexible query parser framework.
Class
Description
AndQueryNode
A `AndQueryNode` represents an AND boolean operation performed on a list of nodes.
AnyQueryNode
A `AnyQueryNode` represents an ANY operator performed on a list of nodes.
BooleanQueryNode
A `BooleanQueryNode` represents a list of elements which do not have an explicit boolean operator defined between them.
BoostQueryNode
A `BoostQueryNode` boosts the QueryNode tree which is under this node.
DeletedQueryNode
A `DeletedQueryNode` represents a node that was deleted from the query node tree.
FieldableNode
A query node implements `FieldableNode` interface to indicate that its children and itself are associated to a specific field.
FieldQueryNode
A `FieldQueryNode` represents a element that contains field/text tuple
FieldValuePairQueryNode<T>
This interface should be implemented by `QueryNode` that holds a field and an arbitrary value.
FuzzyQueryNode
A `FuzzyQueryNode` represents a element that contains field/text/similarity tuple
GroupQueryNode
A `GroupQueryNode` represents a location where the original user typed real parenthesis on the query string.
MatchAllDocsQueryNode
A `MatchAllDocsQueryNode` indicates that a query node tree or subtree will match all documents if executed in the index.
MatchNoDocsQueryNode
A `MatchNoDocsQueryNode` indicates that a query node tree or subtree will not match any documents if executed in the index.
ModifierQueryNode
A `ModifierQueryNode` indicates the modifier value (+,-,?,NONE) for each term on the query string.
ModifierQueryNode.Modifier
Modifier type: such as required (REQ), prohibited (NOT)
NoTokenFoundQueryNode
A `NoTokenFoundQueryNode` is used if a term is convert into no tokens by the tokenizer/lemmatizer/analyzer (null).
OpaqueQueryNode
A `OpaqueQueryNode` is used for specify values that are not supposed to be parsed by the parser.
OrQueryNode
A `OrQueryNode` represents an OR boolean operation performed on a list of nodes.
PathQueryNode
A `PathQueryNode` is used to store queries like /company/USA/California /product/shoes/brown.
PathQueryNode.QueryText
Term text with a beginning and end position
PhraseSlopQueryNode
Query node for `PhraseQuery`'s slop factor.
ProximityQueryNode
A `ProximityQueryNode` represents a query where the terms should meet specific distance conditions.
ProximityQueryNode.ProximityType
utility class containing the distance condition and number
ProximityQueryNode.Type
Distance condition: PARAGRAPH, SENTENCE, or NUMBER
QueryNode
A `QueryNode` is a interface implemented by all nodes on a QueryNode tree.
QueryNodeImpl
A `QueryNodeImpl` is the default implementation of the interface `QueryNode`
QuotedFieldQueryNode
A `QuotedFieldQueryNode` represents phrase query.
RangeQueryNode<T extends FieldValuePairQueryNode<?>>
This interface should be implemented by a `QueryNode` that represents some kind of range query.
SlopQueryNode
A `SlopQueryNode` represents phrase query with a slop.
TextableQueryNode
Interface for a node that has text as a `CharSequence`
TokenizedPhraseQueryNode
A `TokenizedPhraseQueryNode` represents a node created by a code that tokenizes/lemmatizes/analyzes.
ValueQueryNode<T>
This interface should be implemented by `QueryNode` that holds an arbitrary value.