Class BooleanQuery2ModifierNodeProcessor

java.lang.Object
org.apache.lucene.queryparser.flexible.standard.processors.BooleanQuery2ModifierNodeProcessor
All Implemented Interfaces:
QueryNodeProcessor

public class BooleanQuery2ModifierNodeProcessor extends Object implements QueryNodeProcessor
This processor is used to apply the correct ModifierQueryNode to BooleanQueryNodes children. This is a variant of BooleanModifiersQueryNodeProcessor which ignores precedence.

The StandardSyntaxParser knows the rules of precedence, but lucene does not. e.g. (A AND B OR C AND D) ist treated like (+A +B +C +D).

This processor walks through the query node tree looking for BooleanQueryNodes. If an AndQueryNode is found, every child, which is not a ModifierQueryNode or the ModifierQueryNode is ModifierQueryNode.Modifier.MOD_NONE, becomes a ModifierQueryNode.Modifier.MOD_REQ. For default BooleanQueryNode, it checks the default operator is StandardQueryConfigHandler.Operator.AND, if it is, the same operation when an AndQueryNode is found is applied to it. Each BooleanQueryNode which direct parent is also a BooleanQueryNode is removed (to ignore the rules of precedence).

See Also: