| <!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.Core.Processors |
| | Apache Lucene.NET 4.8.0-beta00011 Documentation </title> |
| <meta name="viewport" content="width=device-width"> |
| <meta name="title" content="Namespace Lucene.Net.QueryParsers.Flexible.Core.Processors |
| | Apache Lucene.NET 4.8.0-beta00011 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.Core.Processors"> |
| |
| <h1 id="Lucene_Net_QueryParsers_Flexible_Core_Processors" data-uid="Lucene.Net.QueryParsers.Flexible.Core.Processors" class="text-break">Namespace Lucene.Net.QueryParsers.Flexible.Core.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>Interfaces and implementations used by query node processors</p> |
| <h2 id="query-node-processors">Query Node Processors</h2> |
| <p> The package <tt>org.apache.lucene.queryParser.processors</tt> contains interfaces that should be implemented by every query node processor. </p> |
| <p> The interface that every query node processor should implement is <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessor.html">QueryNodeProcessor</a>. </p> |
| <p> A query node processor should be used to process a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode.html">QueryNode</a> tree. <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode.html">QueryNode</a> trees can be programmatically created or generated by a text parser. See <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Parser.html">Lucene.Net.QueryParsers.Flexible.Core.Parser</a> for more details about text parsers. </p> |
| <p> A query node processor should be used to process a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode.html">QueryNode</a> tree. <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode.html">QueryNode</a> trees can be programmatically created or generated by a text parser. See <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Parser.html">Lucene.Net.QueryParsers.Flexible.Core.Parser</a> for more details about text parsers. </p> |
| <p> A pipeline of processors can be assembled using <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessorPipeline.html">QueryNodeProcessorPipeline</a>. </p> |
| <p> Implementors may want to extend <xref:Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessorImpl>, which simplifies the implementation, because it walks automatically the <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode.html">QueryNode</a>. See <xref:Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessorImpl> for more details. </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.Core.Processors.NoChildOptimizationQueryNodeProcessor.html">NoChildOptimizationQueryNodeProcessor</a></h4> |
| <section><p>A <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.NoChildOptimizationQueryNodeProcessor.html">NoChildOptimizationQueryNodeProcessor</a> removes every |
| BooleanQueryNode, BoostQueryNode, TokenizedPhraseQueryNode or |
| ModifierQueryNode that do not have a valid children. |
| <p> |
| Example: When the children of these nodes are removed for any reason then the |
| nodes may become invalid. |
| </p></p> |
| </section> |
| <h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessor.html">QueryNodeProcessor</a></h4> |
| <section><p>This is a default implementation for the <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.IQueryNodeProcessor.html">IQueryNodeProcessor</a> |
| interface, it's an abstract class, so it should be extended by classes that |
| want to process a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode.html">IQueryNode</a> tree. |
| <p> |
| This class process <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode.html">IQueryNode</a>s from left to right in the tree. While |
| it's walking down the tree, for every node, |
| <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessor.html#Lucene_Net_QueryParsers_Flexible_Core_Processors_QueryNodeProcessor_PreProcessNode_Lucene_Net_QueryParsers_Flexible_Core_Nodes_IQueryNode_">PreProcessNode(IQueryNode)</a> is invoked. After a node's children are |
| processed, <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessor.html#Lucene_Net_QueryParsers_Flexible_Core_Processors_QueryNodeProcessor_PostProcessNode_Lucene_Net_QueryParsers_Flexible_Core_Nodes_IQueryNode_">PostProcessNode(IQueryNode)</a> is invoked for that node. |
| <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessor.html#Lucene_Net_QueryParsers_Flexible_Core_Processors_QueryNodeProcessor_SetChildrenOrder_System_Collections_Generic_IList_Lucene_Net_QueryParsers_Flexible_Core_Nodes_IQueryNode__">SetChildrenOrder(IList<IQueryNode>)</a> is invoked before |
| <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessor.html#Lucene_Net_QueryParsers_Flexible_Core_Processors_QueryNodeProcessor_PostProcessNode_Lucene_Net_QueryParsers_Flexible_Core_Nodes_IQueryNode_">PostProcessNode(IQueryNode)</a> only if the node has at least one child, |
| in <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessor.html#Lucene_Net_QueryParsers_Flexible_Core_Processors_QueryNodeProcessor_SetChildrenOrder_System_Collections_Generic_IList_Lucene_Net_QueryParsers_Flexible_Core_Nodes_IQueryNode__">SetChildrenOrder(IList<IQueryNode>)</a> the implementor might redefine the |
| children order or remove any children from the children list. |
| </p> |
| <p> |
| Here is an example about how it process the nodes: |
| </p></p> |
| <pre> |
| a |
| / \ |
| b e |
| / \ |
| c d |
| </pre> |
| <p><p> |
| Here is the order the methods would be invoked for the tree described above: |
| </p></p> |
| <pre><code> PreProcessNode( a ); |
| PreProcessNode( b ); |
| PreProcessNode( c ); |
| PostProcessNode( c ); |
| PreProcessNode( d ); |
| PostProcessNode( d ); |
| SetChildrenOrder( bChildrenList ); |
| PostProcessNode( b ); |
| PreProcessNode( e ); |
| PostProcessNode( e ); |
| SetChildrenOrder( aChildrenList ); |
| PostProcessNode( a )</code></pre> |
| </section> |
| <h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessorPipeline.html">QueryNodeProcessorPipeline</a></h4> |
| <section><p>A <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessorPipeline.html">QueryNodeProcessorPipeline</a> class should be used to build a query |
| node processor pipeline. |
| <p> |
| When a query node tree is processed using this class, it passes the query |
| node tree to each processor on the pipeline and the result from each |
| processor is passed to the next one, always following the order the |
| processors were on the pipeline. |
| <p> |
| When a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Config.QueryConfigHandler.html">QueryConfigHandler</a> object is set on a |
| <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessorPipeline.html">QueryNodeProcessorPipeline</a>, it also takes care of setting this |
| <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Config.QueryConfigHandler.html">QueryConfigHandler</a> on all processor on pipeline.</p> |
| </section> |
| <h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.RemoveDeletedQueryNodesProcessor.html">RemoveDeletedQueryNodesProcessor</a></h4> |
| <section><p>A <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.QueryNodeProcessorPipeline.html">QueryNodeProcessorPipeline</a> class removes every instance of |
| <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.DeletedQueryNode.html">DeletedQueryNode</a> from a query node tree. If the resulting root node |
| is a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.DeletedQueryNode.html">DeletedQueryNode</a>, <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.MatchNoDocsQueryNode.html">MatchNoDocsQueryNode</a> is returned.</p> |
| </section> |
| <h3 id="interfaces">Interfaces |
| </h3> |
| <h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.IQueryNodeProcessor.html">IQueryNodeProcessor</a></h4> |
| <section><p>An <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.IQueryNodeProcessor.html">IQueryNodeProcessor</a> is an interface for classes that process a |
| <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.IQueryNode.html">IQueryNode</a> tree. |
| <p> |
| The implementor of this class should perform some operation on a query node |
| tree and return the same or another query node tree. |
| </p> |
| <p> |
| It also may carry a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Config.QueryConfigHandler.html">QueryConfigHandler</a> object that contains |
| configuration about the query represented by the query tree or the |
| collection/index where it's intended to be executed. |
| </p> |
| <p> |
| In case there is any <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Config.QueryConfigHandler.html">QueryConfigHandler</a> associated to the query tree |
| to be processed, it should be set using |
| <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.IQueryNodeProcessor.html#Lucene_Net_QueryParsers_Flexible_Core_Processors_IQueryNodeProcessor_SetQueryConfigHandler_Lucene_Net_QueryParsers_Flexible_Core_Config_QueryConfigHandler_">SetQueryConfigHandler(QueryConfigHandler)</a> before |
| <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Processors.IQueryNodeProcessor.html#Lucene_Net_QueryParsers_Flexible_Core_Processors_IQueryNodeProcessor_Process_Lucene_Net_QueryParsers_Flexible_Core_Nodes_IQueryNode_">Process(IQueryNode)</a> is invoked. |
| </p></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-beta00011/src/Lucene.Net.QueryParser/Flexible/Core/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> |