﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Lucene.Net.QueryParser | Apache Lucene.NET 4.8.0-beta00008 Documentation </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Lucene.Net.QueryParser | Apache Lucene.NET 4.8.0-beta00008 Documentation ">
    <meta name="generator" content="docfx 2.50.0.0">
    
    <link rel="shortcut icon" href="../../logo/favicon.ico">
    <link rel="stylesheet" href="../../styles/docfx.vendor.css">
    <link rel="stylesheet" href="../../styles/docfx.css">
    <link rel="stylesheet" href="../../styles/main.css">
    <meta property="docfx:navrel" content="../../toc.html">
    <meta property="docfx:tocrel" content="../toc.html">
    
    <meta property="docfx:rel" content="../../">
    
  </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="../../index.html">
                <img id="logo" class="svg" src="../../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" id="breadcrumb">
            <ul class="breadcrumb">
              <li></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.QueryParser">

    <h1 id="" data-uid="Lucene.Net.QueryParser" class="text-break">Lucene.Net.QueryParser</h1>

<!--
  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>  Apache Lucene QueryParsers.</p>
<p>  This module provides a number of queryparsers:</p>
<ul>
<li><p><a href="#classic">Classic</a></p>
</li>
<li><p><a href="#analyzing">Analyzing</a></p>
</li>
<li><p><a href="#complexphrase">Complex Phrase</a></p>
</li>
<li><p><a href="#extendable">Extendable</a></p>
</li>
<li><p><a href="#flexible">Flexible</a></p>
</li>
<li><p><a href="#surround">Surround</a></p>
</li>
<li><p><a href="#xml">XML</a></p>
</li>
</ul>
<hr>
<h2 id="classic"><a href="">Classic</a></h2>
<p>  A Simple Lucene QueryParser implemented with JavaCC.</p>
<h2 id="analyzing"><a href="">Analyzing</a></h2>
<p>  QueryParser that passes Fuzzy-, Prefix-, Range-, and WildcardQuerys through the given analyzer.</p>
<h2 id="complex-phrase"><a href="">Complex Phrase</a></h2>
<p>  QueryParser which permits complex phrase query syntax eg &quot;(john jon jonathan~) peters*&quot;</p>
<h2 id="extendable"><a href="">Extendable</a></h2>
<p>  Extendable QueryParser provides a simple and flexible extension mechanism by overloading query field names.</p>
<h2 id="flexible"><a href="">Flexible</a></h2>
<p> This project contains the new Lucene query parser implementation, which matches the syntax of the core QueryParser but offers a more modular architecture to enable customization. </p>
<p> It&#39;s currently divided in 2 main packages: * <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.html">Lucene.Net.QueryParsers.Flexible.Core</a>: it contains the query parser API classes, which should be extended by query parser implementations. * <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.html">Lucene.Net.QueryParsers.Flexible.Standard</a>: it contains the current Lucene query parser implementation using the new query parser API. </p>
<h3 id="features">Features</h3>
<ol>
<li><p>Full support for boolean logic (not enabled)</p>
</li>
<li><p>QueryNode Trees - support for several syntaxes, 
        that can be converted into similar syntax QueryNode trees.</p>
</li>
<li><p>QueryNode Processors - Optimize, validate, rewrite the 
        QueryNode trees</p>
</li>
<li><p>Processors Pipelines - Select your favorite Processor
        and build a processor pipeline, to implement the features you need</p>
</li>
<li><p>Config Interfaces - Allow the consumer of the Query Parser to implement
        a diff Config Handler Objects to suite their needs.</p>
</li>
<li><p>Standard Builders - convert QueryNode&#39;s into several lucene 
        representations. Supported conversion is using a 2.4 compatible logic</p>
</li>
<li><p>QueryNode tree&#39;s can be converted to a lucene 2.4 syntax string, using toQueryString                          </p>
</li>
</ol>
<h3 id="design">Design</h3>
<p> This new query parser was designed to have very generic architecture, so that it can be easily used for different products with varying query syntaxes. This code is much more flexible and extensible than the Lucene query parser in 2.4.X. </p>
<p> The new query parser goal is to separate syntax and semantics of a query. E.g. &#39;a AND b&#39;, &#39;+a +b&#39;, &#39;AND(a,b)&#39; could be different syntaxes for the same query. It distinguishes the semantics of the different query components, e.g. whether and how to tokenize/lemmatize/normalize the different terms or which Query objects to create for the terms. It allows to write a parser with a new syntax, while reusing the underlying semantics, as quickly as possible. </p>
<p> The query parser has three layers and its core is what we call the QueryNode tree. It is a tree that initially represents the syntax of the original query, e.g. for &#39;a AND b&#39;: </p>
<pre><code>      AND
     /   \
    A     B
</code></pre><p> The three layers are: </p>
<dl>
<dt>QueryParser</dt>
<dd>
This layer is the text parsing layer which simply transforms the
query text string into a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode.html">QueryNode</a> tree. Every text parser
must implement the interface &lt;xref:Lucene.Net.QueryParsers.Flexible.Core.Parser.SyntaxParser&gt;.
Lucene default implementations implements it using JavaCC.
</dd>

<dt>QueryNodeProcessor</dt>
<dd>The query node processors do most of the work. It is in fact a
configurable chain of processors. Each processors can walk the tree and
modify nodes or even the tree&#39;s structure. That makes it possible to
e.g. do query optimization before the query is executed or to tokenize
terms.
</dd>

<dt>QueryBuilder</dt>
<dd>
The third layer is a configurable map of builders, which map <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Core.Nodes.QueryNode.html">QueryNode</a> types to its specific 
builder that will transform the QueryNode into Lucene Query object.
</dd>

</dl>

<p> Furthermore, the query parser uses flexible configuration objects. It also uses message classes that allow to attach resource bundles. This makes it possible to translate messages, which is an important feature of a query parser. </p>
<p> This design allows to develop different query syntaxes very quickly. </p>
<h3 id="standardqueryparser-and-queryparserwrapper">StandardQueryParser and QueryParserWrapper</h3>
<p>The classic Lucene query parser is located under
<a class="xref" href="Lucene.Net.QueryParsers.Classic.html">Lucene.Net.QueryParsers.Classic</a>.</p>
<p>To make it simpler to use the new query parser 
the class <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.StandardQueryParser.html">StandardQueryParser</a> may be helpful,
specially for people that do not want to extend the Query Parser.
It uses the default Lucene query processors, text parser and builders, so
you don&#39;t need to worry about dealing with those.</p>
<p><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.StandardQueryParser.html">StandardQueryParser</a> usage:</p>
<pre><code>      StandardQueryParser qpHelper = new StandardQueryParser();
      StandardQueryConfigHandler config =  qpHelper.getQueryConfigHandler();
      config.setAllowLeadingWildcard(true);
      config.setAnalyzer(new WhitespaceAnalyzer());
      Query query = qpHelper.parse(&quot;apache AND lucene&quot;, &quot;defaultField&quot;);
</code></pre><h2 id="surround"><a href="">Surround</a></h2>
<p> A QueryParser that supports the Span family of queries as well as pre and infix notation. </p>
<h2 id="xml"><a href="">XML</a></h2>
<p>A QueryParser that produces Lucene Query objects from XML streams.</p>
</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-beta00008/src/Lucene.Net.QueryParser/overview.md/#L1" 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="../../styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="../../styles/docfx.js"></script>
    <script type="text/javascript" src="../../styles/main.js"></script>
  </body>
</html>
