Class RemoveEmptyNonLeafQueryNodeProcessor
This processor removes every IQueryNode that is not a leaf and has not children. If after processing the entire tree the root node is not a leaf and has no children, a MatchNoDocsQueryNode object is returned.
This processor is used at the end of a pipeline to avoid invalid query node tree structures like a GroupQueryNode or ModifierQueryNode with no children.Implements
Inherited Members
Namespace: Lucene.Net.QueryParsers.Flexible.Standard.Processors
Assembly: Lucene.Net.QueryParser.dll
Syntax
public class RemoveEmptyNonLeafQueryNodeProcessor : QueryNodeProcessor, IQueryNodeProcessor
Constructors
RemoveEmptyNonLeafQueryNodeProcessor()
This processor removes every IQueryNode that is not a leaf and has not children. If after processing the entire tree the root node is not a leaf and has no children, a MatchNoDocsQueryNode object is returned.
This processor is used at the end of a pipeline to avoid invalid query node tree structures like a GroupQueryNode or ModifierQueryNode with no children.Declaration
public RemoveEmptyNonLeafQueryNodeProcessor()
See Also
Methods
PostProcessNode(IQueryNode)
This method is invoked for every node when walking up the tree.
Declaration
protected override IQueryNode PostProcessNode(IQueryNode node)
Parameters
Type | Name | Description |
---|---|---|
IQueryNode | node | node the query node to be post-processed |
Returns
Type | Description |
---|---|
IQueryNode | a query node |
Overrides
Exceptions
Type | Condition |
---|---|
QueryNodeException | if something goes wrong during the query node processing |
See Also
PreProcessNode(IQueryNode)
This method is invoked for every node when walking down the tree.
Declaration
protected override IQueryNode PreProcessNode(IQueryNode node)
Parameters
Type | Name | Description |
---|---|---|
IQueryNode | node | the query node to be pre-processed |
Returns
Type | Description |
---|---|
IQueryNode | a query node |
Overrides
Exceptions
Type | Condition |
---|---|
QueryNodeException | if something goes wrong during the query node processing |
See Also
Process(IQueryNode)
Processes a query node tree. It may return the same or another query tree.
I should never return null
.
Declaration
public override IQueryNode Process(IQueryNode queryTree)
Parameters
Type | Name | Description |
---|---|---|
IQueryNode | queryTree | tree root node |
Returns
Type | Description |
---|---|
IQueryNode | the processed query tree |
Overrides
See Also
SetChildrenOrder(IList<IQueryNode>)
This method is invoked for every node that has at least on child. It's invoked right before PostProcessNode(IQueryNode) is invoked.
Declaration
protected override IList<IQueryNode> SetChildrenOrder(IList<IQueryNode> children)
Parameters
Type | Name | Description |
---|---|---|
IList<IQueryNode> | children | the list containing all current node's children |
Returns
Type | Description |
---|---|
IList<IQueryNode> | a new list containing all children that should be set to the current node |
Overrides
Exceptions
Type | Condition |
---|---|
QueryNodeException | if something goes wrong during the query node processing |