public class BooleanQuery2ModifierNodeProcessor extends java.lang.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).
| Modifier and Type | Field and Description |
|---|---|
private java.util.ArrayList<QueryNode> |
childrenBuffer |
(package private) QueryConfigHandler |
queryConfigHandler |
(package private) static java.lang.String |
TAG_BOOLEAN_ROOT |
(package private) static java.lang.String |
TAG_MODIFIER |
(package private) static java.lang.String |
TAG_REMOVE |
private java.lang.Boolean |
usingAnd |
| Constructor and Description |
|---|
BooleanQuery2ModifierNodeProcessor() |
| Modifier and Type | Method and Description |
|---|---|
private QueryNode |
applyModifier(QueryNode node,
ModifierQueryNode.Modifier mod) |
protected void |
fillChildrenBufferAndApplyModifiery(QueryNode parent) |
QueryConfigHandler |
getQueryConfigHandler()
Returns the
QueryConfigHandler associated to the query tree if any,
otherwise it returns null |
protected boolean |
isDefaultBooleanQueryNode(QueryNode toTest) |
protected QueryNode |
postProcessNode(QueryNode node) |
protected QueryNode |
preProcessNode(QueryNode node) |
QueryNode |
process(QueryNode queryTree)
Processes a query node tree.
|
protected void |
processChildren(QueryNode queryTree) |
private QueryNode |
processIteration(QueryNode queryTree) |
void |
setQueryConfigHandler(QueryConfigHandler queryConfigHandler)
Sets the
QueryConfigHandler associated to the query tree. |
protected void |
tagModifierButDoNotOverride(QueryNode node,
ModifierQueryNode.Modifier mod) |
static final java.lang.String TAG_REMOVE
static final java.lang.String TAG_MODIFIER
static final java.lang.String TAG_BOOLEAN_ROOT
QueryConfigHandler queryConfigHandler
private final java.util.ArrayList<QueryNode> childrenBuffer
private java.lang.Boolean usingAnd
public QueryNode process(QueryNode queryTree) throws QueryNodeException
QueryNodeProcessornull.process in interface QueryNodeProcessorqueryTree - tree root nodeQueryNodeExceptionprotected void processChildren(QueryNode queryTree) throws QueryNodeException
QueryNodeExceptionprivate QueryNode processIteration(QueryNode queryTree) throws QueryNodeException
QueryNodeExceptionprotected void fillChildrenBufferAndApplyModifiery(QueryNode parent)
protected QueryNode postProcessNode(QueryNode node) throws QueryNodeException
QueryNodeExceptionprotected QueryNode preProcessNode(QueryNode node) throws QueryNodeException
QueryNodeExceptionprotected boolean isDefaultBooleanQueryNode(QueryNode toTest)
private QueryNode applyModifier(QueryNode node, ModifierQueryNode.Modifier mod)
protected void tagModifierButDoNotOverride(QueryNode node, ModifierQueryNode.Modifier mod)
public void setQueryConfigHandler(QueryConfigHandler queryConfigHandler)
QueryNodeProcessorQueryConfigHandler associated to the query tree.setQueryConfigHandler in interface QueryNodeProcessorpublic QueryConfigHandler getQueryConfigHandler()
QueryNodeProcessorQueryConfigHandler associated to the query tree if any,
otherwise it returns nullgetQueryConfigHandler in interface QueryNodeProcessorQueryConfigHandler associated to the query tree if any,
otherwise it returns null