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

Interfaces and implementations used by query node processors

## Query Node Processors

The package `org.apache.lucene.queryParser.processors` contains interfaces that should be implemented by every query node processor.

The interface that every query node processor should implement is `QueryNodeProcessor`. A query node processor should be used to process a `QueryNode` tree. `QueryNode` trees can be programmatically created or generated by a text parser. See `org.apache.lucene.queryparser.flexible.core.parser` for more details about text parsers.

A query node processor should be used to process a `QueryNode` tree. `QueryNode` trees can be programmatically created or generated by a text parser. See `org.apache.lucene.queryparser.flexible.core.parser` for more details about text parsers.

A pipeline of processors can be assembled using `QueryNodeProcessorPipeline`.

Implementors may want to extend `QueryNodeProcessorImpl`, which simplifies the implementation, because it walks automatically the `QueryNode`. See `QueryNodeProcessorImpl` for more details.

- Interface Summary
  Interface | Description
  --- | ---
  QueryNodeProcessor | A `QueryNodeProcessor` is an interface for classes that process a `QueryNode` tree.

- Class Summary
  Class | Description
  --- | ---
  NoChildOptimizationQueryNodeProcessor | A `NoChildOptimizationQueryNodeProcessor` removes every BooleanQueryNode, BoostQueryNode, TokenizedPhraseQueryNode or ModifierQueryNode that do not have a valid children.
  QueryNodeProcessorImpl | This is a default implementation for the `QueryNodeProcessor` interface, it's an abstract class, so it should be extended by classes that want to process a `QueryNode` tree.
  QueryNodeProcessorPipeline | A `QueryNodeProcessorPipeline` class should be used to build a query node processor pipeline.
  RemoveDeletedQueryNodesProcessor | A `QueryNodeProcessorPipeline` class removes every instance of `DeletedQueryNode` from a query node tree.