﻿<!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
   | Apache Lucene.NET 4.8.0-beta00008 Documentation </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Namespace Lucene.Net.QueryParsers.Flexible.Standard
   | 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.QueryParsers.Flexible.Standard">
  
  <h1 id="Lucene_Net_QueryParsers_Flexible_Standard" data-uid="Lucene.Net.QueryParsers.Flexible.Standard" class="text-break">Namespace Lucene.Net.QueryParsers.Flexible.Standard
  </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>Implementation of the {@linkplain org.apache.lucene.queryparser.classic Lucene classic query parser} using the flexible query parser frameworks</p>
<h2 id="lucene-flexible-query-parser-implementation">Lucene Flexible Query Parser Implementation</h2>
<p> The old Lucene query parser used to have only one class that performed all the parsing operations. In the new query parser structure, the parsing was divided in 3 steps: parsing (syntax), processing (semantic) and building. </p>
<p> The classes contained in the package org.apache.lucene.queryParser.standard are used to reproduce the same behavior as the old query parser. </p>
<p> Check <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.StandardQueryParser.html">StandardQueryParser</a> to quick start using the Lucene query parser. </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.QueryParserUtil.html">QueryParserUtil</a></h4>
      <section><p>This class defines utility methods to (help) parse query strings into
<a class="xref" href="../Lucene.Net/Lucene.Net.Search.Query.html">Query</a> objects.</p>
</section>
      <h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.StandardQueryParser.html">StandardQueryParser</a></h4>
      <section><p>This class is a helper that enables users to easily use the Lucene query
parser.
<p>
To construct a Query object from a query string, use the
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.StandardQueryParser.html#Lucene_Net_QueryParsers_Flexible_Standard_StandardQueryParser_Parse_System_String_System_String_">Parse(String, String)</a> method:</p>
<pre><code>StandardQueryParser queryParserHelper = new StandardQueryParser();
Query query = queryParserHelper.Parse(&quot;a AND b&quot;, &quot;defaultField&quot;);</code></pre>
<p>
To change any configuration before parsing the query string do, for example:
<pre><code>// the query config handler returned by StandardQueryParser is a
// StandardQueryConfigHandler
queryParserHelper.QueryConfigHandler.Analyzer = new WhitespaceAnalyzer();</code></pre>
<p>
The syntax for query strings is as follows (copied from the old QueryParser
javadoc):
<p>
A Query is a series of clauses. A clause may be prefixed by:
<ul><li>
    a plus (<code>+</code>) or a minus (<code>-</code>) sign, indicating that
    the clause is required or prohibited respectively; or
</li><li>
a term followed by a colon, indicating the field to be searched. This
enables one to construct queries which search multiple fields.
</li></ul>

A clause may be either:
<ul><li>
    a term, indicating all the documents that contain this term; or
</li><li>
a nested query, enclosed in parentheses. Note that this may be used with
a <code>+</code>/<code>-</code> prefix to require any of a set of terms.
</li></ul>

Thus, in BNF, the query grammar is:
<pre><code>    Query  ::= ( Clause )*
    Clause ::= [&quot;+&quot;, &quot;-&quot;] [&lt;TERM> &quot;:&quot;] ( &lt;TERM> | &quot;(&quot; Query &quot;)&quot; )</code></pre>

<p>
Examples of appropriately formatted queries can be found in the query syntax documentation.
</p>
<p>
The text parser used by this helper is a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Parser.StandardSyntaxParser.html">StandardSyntaxParser</a>.
</p>
<p>
The query node processor used by this helper is a
<a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Processors.StandardQueryNodeProcessorPipeline.html">StandardQueryNodeProcessorPipeline</a>.
</p>
<p>
The builder used by this helper is a <a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.Builders.StandardQueryTreeBuilder.html">StandardQueryTreeBuilder</a>.
</p>
</section>
    <h3 id="interfaces">Interfaces
  </h3>
      <h4><a class="xref" href="Lucene.Net.QueryParsers.Flexible.Standard.ICommonQueryParserConfiguration.html">ICommonQueryParserConfiguration</a></h4>
      <section><p>Configuration options common across queryparser implementations.</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-beta00008/src/Lucene.Net.QueryParser/Flexible/Standard/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="../../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>
