blob: bb269d7f6bc19b759bef21a391db9749be88dd78 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Namespace Lucene.Net.QueryParsers.Flexible.Standard.Processors
| Apache Lucene.NET 4.8.0-beta00010 Documentation </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Lucene.Net.QueryParsers.Flexible.Standard.Processors
| Apache Lucene.NET 4.8.0-beta00010 Documentation ">
<meta name="generator" content="docfx 2.56.0.0">
<link rel="shortcut icon" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/favicon.ico">
<link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.css">
<link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.css">
<link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.css">
<meta property="docfx:navrel" content="toc.html">
<meta property="docfx:tocrel" content="queryparser/toc.html">
<meta property="docfx:rel" content="https://lucenenet.apache.org/docs/4.8.0-beta00009/">
</head>
<body data-spy="scroll" data-target="#affix" data-offset="120">
<div id="wrapper">
<header>
<nav id="autocollapse" class="navbar ng-scope" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">
<img id="logo" class="svg" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/lucene-net-color.png" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar">
<form class="navbar-form navbar-right" role="search" id="search">
<div class="form-group">
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
</div>
</form>
</div>
</div>
</nav>
<div class="subnav navbar navbar-default">
<div class="container hide-when-search">
<ul class="level0 breadcrumb">
<li>
<a href="https://lucenenet.apache.org/docs/4.8.0-beta00009/">API</a>
<span id="breadcrumb">
<ul class="breadcrumb">
<li></li>
</ul>
</span>
</li>
</ul>
</div>
</div>
</header>
<div class="container body-content">
<div id="search-results">
<div class="search-list"></div>
<div class="sr-items">
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
</div>
<ul id="pagination"></ul>
</div>
</div>
<div role="main" class="container body-content hide-when-search">
<div class="sidenav hide-when-search">
<a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
<div class="sidetoggle collapse" id="sidetoggle">
<div id="sidetoc"></div>
</div>
</div>
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="Lucene.Net.QueryParsers.Flexible.Standard.Processors">
<h1 id="Lucene_Net_QueryParsers_Flexible_Standard_Processors" data-uid="Lucene.Net.QueryParsers.Flexible.Standard.Processors" class="text-break">Namespace Lucene.Net.QueryParsers.Flexible.Standard.Processors
</h1>
<div class="markdown level0 summary"><!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<p>Lucene Query Node Processors.</p>
<h2 id="lucene-query-node-processors">Lucene Query Node Processors</h2>
<p> The package org.apache.lucene.queryparser.flexible.standard.processors contains every processor needed to assembly a pipeline that modifies the query node tree according to the actual Lucene queries. </p>
<p> These processors are already assembled correctly in the StandardQueryNodeProcessorPipeline. </p>
</div>
<div class="markdown level0 conceptual"></div>
<div class="markdown level0 remarks"></div>
<h3 id="classes">Classes
</h3>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.AllowLeadingWildcardProcessor.html">AllowLeadingWildcardProcessor</a></h4>
<section><p>This processor verifies if
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_ALLOW_LEADING_WILDCARD">ALLOW_LEADING_WILDCARD</a> is defined in the
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Config.QueryConfigHandler.html">QueryConfigHandler</a>. If it is and leading wildcard is not allowed, it
looks for every <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.WildcardQueryNode.html">WildcardQueryNode</a> contained in the query node tree
and throws an exception if any of them has a leading wildcard (&apos;*&apos; or &apos;?&apos;).</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.AnalyzerQueryNodeProcessor.html">AnalyzerQueryNodeProcessor</a></h4>
<section><p>This processor verifies if <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_ANALYZER">ANALYZER</a>
is defined in the <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Config.QueryConfigHandler.html">QueryConfigHandler</a>. If it is and the analyzer is
not <code>null</code>, it looks for every <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.FieldQueryNode.html">FieldQueryNode</a> that is not
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.WildcardQueryNode.html">WildcardQueryNode</a>, <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.FuzzyQueryNode.html">FuzzyQueryNode</a> or
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.IRangeQueryNode.html">IRangeQueryNode</a> contained in the query node tree, then it applies
the analyzer to that <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.FieldQueryNode.html">FieldQueryNode</a> object.
<p>
If the analyzer return only one term, the returned term is set to the
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.FieldQueryNode.html">FieldQueryNode</a> and it&apos;s returned.
<p>
If the analyzer return more than one term, a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.TokenizedPhraseQueryNode.html">TokenizedPhraseQueryNode</a>
or <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.MultiPhraseQueryNode.html">MultiPhraseQueryNode</a> is created, whether there is one or more
terms at the same position, and it&apos;s returned.
<p>
If no term is returned by the analyzer a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.NoTokenFoundQueryNode.html">NoTokenFoundQueryNode</a> object
is returned.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.BooleanQuery2ModifierNodeProcessor.html">BooleanQuery2ModifierNodeProcessor</a></h4>
<section><p>This processor is used to apply the correct <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.ModifierQueryNode.html">ModifierQueryNode</a> to
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.BooleanQueryNode.html">BooleanQueryNode</a>s children. This is a variant of
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Precedence.Processors.BooleanModifiersQueryNodeProcessor.html">BooleanModifiersQueryNodeProcessor</a> which ignores precedence.
<p>
The <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Parser.StandardSyntaxParser.html">StandardSyntaxParser</a> knows the rules of precedence, but lucene
does not. e.g. <pre><code>(A AND B OR C AND D)</code></pre> ist treated like</p>
<pre><code>(+A +B +C +D)</code></pre>.
<p><p>
This processor walks through the query node tree looking for
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.BooleanQueryNode.html">BooleanQueryNode</a>s. If an <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.AndQueryNode.html">AndQueryNode</a> is found, every child,
which is not a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.ModifierQueryNode.html">ModifierQueryNode</a> or the <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.ModifierQueryNode.html">ModifierQueryNode</a> is
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.Modifier.html#Lucene_Net_QueryParsers_Flexible_Core_Nodes_Modifier_MOD_NONE">MOD_NONE</a>, becomes a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.Modifier.html#Lucene_Net_QueryParsers_Flexible_Core_Nodes_Modifier_MOD_REQ">MOD_REQ</a>. For default
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.BooleanQueryNode.html">BooleanQueryNode</a>, it checks the default operator is
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.StandardQueryConfigHandler.Operator.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_StandardQueryConfigHandler_Operator_AND">AND</a>, if it is, the same operation when an
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.AndQueryNode.html">AndQueryNode</a> is found is applied to it. Each <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.BooleanQueryNode.html">BooleanQueryNode</a>
which direct parent is also a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.BooleanQueryNode.html">BooleanQueryNode</a> is removed (to ignore
the rules of precedence).</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.BooleanSingleChildOptimizationQueryNodeProcessor.html">BooleanSingleChildOptimizationQueryNodeProcessor</a></h4>
<section><p>This processor removes every <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.BooleanQueryNode.html">BooleanQueryNode</a> that contains only one
child and returns this child. If this child is <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.ModifierQueryNode.html">ModifierQueryNode</a> that
was defined by the user. A modifier is not defined by the user when it&apos;s a
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.BooleanModifierNode.html">BooleanModifierNode</a></p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.BoostQueryNodeProcessor.html">BoostQueryNodeProcessor</a></h4>
<section><p>This processor iterates the query node tree looking for every
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.IFieldableNode.html">IFieldableNode</a> that has <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_BOOST">BOOST</a> in its
config. If there is, the boost is applied to that <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.IFieldableNode.html">IFieldableNode</a>.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.DefaultPhraseSlopQueryNodeProcessor.html">DefaultPhraseSlopQueryNodeProcessor</a></h4>
<section><p>This processor verifies if <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_PHRASE_SLOP">PHRASE_SLOP</a>
is defined in the <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Config.QueryConfigHandler.html">QueryConfigHandler</a>. If it is, it looks for every
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.TokenizedPhraseQueryNode.html">TokenizedPhraseQueryNode</a> and <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.MultiPhraseQueryNode.html">MultiPhraseQueryNode</a> that does
not have any <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.SlopQueryNode.html">SlopQueryNode</a> applied to it and creates an
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.SlopQueryNode.html">SlopQueryNode</a> and apply to it. The new <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.SlopQueryNode.html">SlopQueryNode</a> has the
same slop value defined in the configuration.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.FuzzyQueryNodeProcessor.html">FuzzyQueryNodeProcessor</a></h4>
<section><p>This processor iterates the query node tree looking for every
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.FuzzyQueryNode.html">FuzzyQueryNode</a>, when this kind of node is found, it checks on the
query configuration for
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_FUZZY_CONFIG">FUZZY_CONFIG</a>, gets the
fuzzy prefix length and default similarity from it and set to the fuzzy node.
For more information about fuzzy prefix length check: <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Search.FuzzyQuery.html">FuzzyQuery</a>.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.GroupQueryNodeProcessor.html">GroupQueryNodeProcessor</a></h4>
<section><p>The <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Parser.ISyntaxParser.html">ISyntaxParser</a>
generates query node trees that consider the boolean operator precedence, but
Lucene current syntax does not support boolean precedence, so this processor
remove all the precedence and apply the equivalent modifier according to the
boolean operation defined on an specific query node.
<p>
If there is a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.GroupQueryNode.html">GroupQueryNode</a> in the query node tree, the query node
tree is not merged with the one above it.
<p>
Example: TODO: describe a good example to show how this processor works</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.LowercaseExpandedTermsQueryNodeProcessor.html">LowercaseExpandedTermsQueryNodeProcessor</a></h4>
<section><p>This processor verifies if
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_LOWERCASE_EXPANDED_TERMS">LOWERCASE_EXPANDED_TERMS</a> is defined in the
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Config.QueryConfigHandler.html">QueryConfigHandler</a>. If it is and the expanded terms should be
lower-cased, it looks for every <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.WildcardQueryNode.html">WildcardQueryNode</a>,
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.FuzzyQueryNode.html">FuzzyQueryNode</a> and children of a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.IRangeQueryNode.html">IRangeQueryNode</a> and lower-case its
term.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.MatchAllDocsQueryNodeProcessor.html">MatchAllDocsQueryNodeProcessor</a></h4>
<section><p>This processor converts every <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.WildcardQueryNode.html">WildcardQueryNode</a> that is &quot;<em>:</em>&quot; to
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.MatchAllDocsQueryNode.html">MatchAllDocsQueryNode</a>.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.MultiFieldQueryNodeProcessor.html">MultiFieldQueryNodeProcessor</a></h4>
<section><p>This processor is used to expand terms so the query looks for the same term
in different fields. It also boosts a query based on its field.
<p>
This processor looks for every <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.IFieldableNode.html">IFieldableNode</a> contained in the query
node tree. If a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.IFieldableNode.html">IFieldableNode</a> is found, it checks if there is a
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_MULTI_FIELDS">MULTI_FIELDS</a> defined in the <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Config.QueryConfigHandler.html">QueryConfigHandler</a>. If
there is, the <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.IFieldableNode.html">IFieldableNode</a> is cloned N times and the clones are
added to a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.BooleanQueryNode.html">BooleanQueryNode</a> together with the original node. N is
defined by the number of fields that it will be expanded to. The
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.BooleanQueryNode.html">BooleanQueryNode</a> is returned.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.MultiTermRewriteMethodProcessor.html">MultiTermRewriteMethodProcessor</a></h4>
<section><p>This processor instates the default
<span class="xref">Lucene.Net.Search.MultiTermQuery.RewriteMethod</span>,
<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Search.MultiTermQuery.html#Lucene_Net_Search_MultiTermQuery_CONSTANT_SCORE_AUTO_REWRITE_DEFAULT">CONSTANT_SCORE_AUTO_REWRITE_DEFAULT</a>, for multi-term
query nodes.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.NumericQueryNodeProcessor.html">NumericQueryNodeProcessor</a></h4>
<section><p>This processor is used to convert <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.FieldQueryNode.html">FieldQueryNode</a>s to
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.NumericRangeQueryNode.html">NumericRangeQueryNode</a>s. It looks for
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_NUMERIC_CONFIG">NUMERIC_CONFIG</a> set in the <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Config.FieldConfig.html">FieldConfig</a> of
every <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.FieldQueryNode.html">FieldQueryNode</a> found. If
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_NUMERIC_CONFIG">NUMERIC_CONFIG</a> is found, it considers that
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.FieldQueryNode.html">FieldQueryNode</a> to be a numeric query and convert it to
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.NumericRangeQueryNode.html">NumericRangeQueryNode</a> with upper and lower inclusive and lower and
upper equals to the value represented by the <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.FieldQueryNode.html">FieldQueryNode</a> converted
to <span class="xref">System.Object</span> representing a .NET numeric type. It means that <strong>field:1</strong> is converted to <strong>field:[1
TO 1]</strong>.
<p>
Note that <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.FieldQueryNode.html">FieldQueryNode</a>s children of a
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.IRangeQueryNode.html">IRangeQueryNode</a> are ignored.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.NumericRangeQueryNodeProcessor.html">NumericRangeQueryNodeProcessor</a></h4>
<section><p>This processor is used to convert <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.TermRangeQueryNode.html">TermRangeQueryNode</a>s to
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.NumericRangeQueryNode.html">NumericRangeQueryNode</a>s. It looks for
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_NUMERIC_CONFIG">NUMERIC_CONFIG</a> set in the <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Config.FieldConfig.html">FieldConfig</a> of
every <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.TermRangeQueryNode.html">TermRangeQueryNode</a> found. If
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_NUMERIC_CONFIG">NUMERIC_CONFIG</a> is found, it considers that
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.TermRangeQueryNode.html">TermRangeQueryNode</a> to be a numeric range query and convert it to
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.NumericRangeQueryNode.html">NumericRangeQueryNode</a>.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.OpenRangeQueryNodeProcessor.html">OpenRangeQueryNodeProcessor</a></h4>
<section><p>Processes <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Search.TermRangeQuery.html">TermRangeQuery</a>s with open ranges.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.PhraseSlopQueryNodeProcessor.html">PhraseSlopQueryNodeProcessor</a></h4>
<section><p>This processor removes invalid <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.SlopQueryNode.html">SlopQueryNode</a> objects in the query
node tree. A <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.SlopQueryNode.html">SlopQueryNode</a> is invalid if its child is neither a
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.TokenizedPhraseQueryNode.html">TokenizedPhraseQueryNode</a> nor a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.MultiPhraseQueryNode.html">MultiPhraseQueryNode</a>.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.RemoveEmptyNonLeafQueryNodeProcessor.html">RemoveEmptyNonLeafQueryNodeProcessor</a></h4>
<section><p>This processor removes every <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode.html">IQueryNode</a> 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 <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.MatchNoDocsQueryNode.html">MatchNoDocsQueryNode</a> object is returned.
<p>
This processor is used at the end of a pipeline to avoid invalid query node
tree structures like a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.GroupQueryNode.html">GroupQueryNode</a> or <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.ModifierQueryNode.html">ModifierQueryNode</a>
with no children.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.StandardQueryNodeProcessorPipeline.html">StandardQueryNodeProcessorPipeline</a></h4>
<section><p>This pipeline has all the processors needed to process a query node tree,
generated by <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Parser.StandardSyntaxParser.html">StandardSyntaxParser</a>, already assembled.
<p>
The order they are assembled affects the results.
<p>
This processor pipeline was designed to work with
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.StandardQueryConfigHandler.html">StandardQueryConfigHandler</a>.
<p>
The result query node tree can be used to build a <span class="xref">Lucene.Net.Search.Query</span> object using
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Builders.StandardQueryTreeBuilder.html">StandardQueryTreeBuilder</a>.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.TermRangeQueryNodeProcessor.html">TermRangeQueryNodeProcessor</a></h4>
<section><p>This processors process <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.TermRangeQueryNode.html">TermRangeQueryNode</a>s. It reads the lower and
upper bounds value from the <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.TermRangeQueryNode.html">TermRangeQueryNode</a> object and try
to parse their values using a <code>dateFormat</code>. If the values cannot be
parsed to a date value, it will only create the <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.TermRangeQueryNode.html">TermRangeQueryNode</a>
using the non-parsed values.
<p>
If a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_LOCALE">LOCALE</a> is defined in the
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Config.QueryConfigHandler.html">QueryConfigHandler</a> it will be used to parse the date, otherwise
<span class="xref">System.Globalization.CultureInfo.CurrentCulture</span> will be used.
<p>
If a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Config.ConfigurationKeys.html#Lucene_Net_QueryParsers_Flexible_Standard_Config_ConfigurationKeys_DATE_RESOLUTION">DATE_RESOLUTION</a> is defined and the
<span class="xref">Lucene.Net.Documents.DateTools.Resolution</span> is not <code>null</code> it will also be used to parse the
date value.</p>
</section>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.WildcardQueryNodeProcessor.html">WildcardQueryNodeProcessor</a></h4>
<section><p>The <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Parser.StandardSyntaxParser.html">StandardSyntaxParser</a> creates <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.PrefixWildcardQueryNode.html">PrefixWildcardQueryNode</a> nodes which
have values containing the prefixed wildcard. However, Lucene
<a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Search.PrefixQuery.html">PrefixQuery</a> cannot contain the prefixed wildcard. So, this processor
basically removed the prefixed wildcard from the
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Nodes.PrefixWildcardQueryNode.html">PrefixWildcardQueryNode</a> value.</p>
</section>
</article>
</div>
<div class="hidden-sm col-md-2" role="complementary">
<div class="sideaffix">
<div class="contribution">
<ul class="nav">
<li>
<a href="https://github.com/apache/lucenenet/blob/docs/4.8.0-beta00010/src/Lucene.Net.QueryParser/Flexible/Standard/Processors/package.md/#L2" class="contribution-link">Improve this Doc</a>
</li>
</ul>
</div>
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
<!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
</nav>
</div>
</div>
</div>
</div>
<footer>
<div class="grad-bottom"></div>
<div class="footer">
<div class="container">
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
Copyright © 2020 Licensed to the Apache Software Foundation (ASF)
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.js"></script>
<script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.js"></script>
<script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.js"></script>
</body>
</html>