﻿<!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.Ext
   | Apache Lucene.NET 4.8.0-beta00008 Documentation </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Namespace Lucene.Net.QueryParsers.Ext
   | 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.Ext">
  
  <h1 id="Lucene_Net_QueryParsers_Ext" data-uid="Lucene.Net.QueryParsers.Ext" class="text-break">Namespace Lucene.Net.QueryParsers.Ext
  </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>Extendable QueryParser provides a simple and flexible extension mechanism by overloading query field names.</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.Ext.ExtendableQueryParser.html">ExtendableQueryParser</a></h4>
      <section><p>The <a class="xref" href="Lucene.Net.QueryParsers.Ext.ExtendableQueryParser.html">ExtendableQueryParser</a> enables arbitrary query parser extension
based on a customizable field naming scheme. The lucene query syntax allows
implicit and explicit field definitions as query prefix followed by a colon
(&apos;:&apos;) character. The <a class="xref" href="Lucene.Net.QueryParsers.Ext.ExtendableQueryParser.html">ExtendableQueryParser</a> allows to encode extension
keys into the field symbol associated with a registered instance of
<a class="xref" href="Lucene.Net.QueryParsers.Ext.ParserExtension.html">ParserExtension</a>. A customizable separation character separates the
extension key from the actual field symbol. The <a class="xref" href="Lucene.Net.QueryParsers.Ext.ExtendableQueryParser.html">ExtendableQueryParser</a>
splits (<a class="xref" href="Lucene.Net.QueryParsers.Ext.Extensions.html#Lucene_Net_QueryParsers_Ext_Extensions_SplitExtensionField_System_String_System_String_">SplitExtensionField(String, String)</a>) the
extension key from the field symbol and tries to resolve the associated
<a class="xref" href="Lucene.Net.QueryParsers.Ext.ParserExtension.html">ParserExtension</a>. If the parser can&apos;t resolve the key or the field
token does not contain a separation character, <a class="xref" href="Lucene.Net.QueryParsers.Ext.ExtendableQueryParser.html">ExtendableQueryParser</a>
yields the same behavior as its super class <a class="xref" href="Lucene.Net.QueryParsers.Classic.QueryParser.html">QueryParser</a>. Otherwise,
if the key is associated with a <a class="xref" href="Lucene.Net.QueryParsers.Ext.ParserExtension.html">ParserExtension</a> instance, the parser
builds an instance of <a class="xref" href="Lucene.Net.QueryParsers.Ext.ExtensionQuery.html">ExtensionQuery</a> to be processed by
<a class="xref" href="Lucene.Net.QueryParsers.Ext.ParserExtension.html#Lucene_Net_QueryParsers_Ext_ParserExtension_Parse_Lucene_Net_QueryParsers_Ext_ExtensionQuery_">Parse(ExtensionQuery)</a>.If a extension field does not
contain a field part the default field for the query will be used.
<p>
To guarantee that an extension field is processed with its associated
extension, the extension query part must escape any special characters like
&apos;*&apos; or &apos;[&apos;. If the extension query contains any whitespace characters, the
extension query part must be enclosed in quotes.
Example (&apos;_&apos; used as separation character):</p>
<pre>
  title_customExt:&quot;Apache Lucene\?&quot; OR content_customExt:prefix\*
</pre>

<p>Search on the default field:</p>
<pre>
  _customExt:&quot;Apache Lucene\?&quot; OR _customExt:prefix\*
</pre>
<p>
<p>
The <a class="xref" href="Lucene.Net.QueryParsers.Ext.ExtendableQueryParser.html">ExtendableQueryParser</a> itself does not implement the logic how
field and extension key are separated or ordered. All logic regarding the
extension key and field symbol parsing is located in <a class="xref" href="Lucene.Net.QueryParsers.Ext.Extensions.html">Extensions</a>.
Customized extension schemes should be implemented by sub-classing
<a class="xref" href="Lucene.Net.QueryParsers.Ext.Extensions.html">Extensions</a>.
</p>
<p>
For details about the default encoding scheme see <a class="xref" href="Lucene.Net.QueryParsers.Ext.Extensions.html">Extensions</a>.
</p></p>
</section>
      <h4><a class="xref" href="Lucene.Net.QueryParsers.Ext.ExtensionQuery.html">ExtensionQuery</a></h4>
      <section><p><a class="xref" href="Lucene.Net.QueryParsers.Ext.ExtensionQuery.html">ExtensionQuery</a> holds all query components extracted from the original
query string like the query field and the extension query string.</p>
</section>
      <h4><a class="xref" href="Lucene.Net.QueryParsers.Ext.Extensions.html">Extensions</a></h4>
      <section><p>The <a class="xref" href="Lucene.Net.QueryParsers.Ext.Extensions.html">Extensions</a> class represents an extension mapping to associate
<a class="xref" href="Lucene.Net.QueryParsers.Ext.ParserExtension.html">ParserExtension</a> instances with extension keys. An extension key is a
string encoded into a Lucene standard query parser field symbol recognized by
<a class="xref" href="Lucene.Net.QueryParsers.Ext.ExtendableQueryParser.html">ExtendableQueryParser</a>. The query parser passes each extension field
token to <a class="xref" href="Lucene.Net.QueryParsers.Ext.Extensions.html#Lucene_Net_QueryParsers_Ext_Extensions_SplitExtensionField_System_String_System_String_">SplitExtensionField(String, String)</a> to separate the
extension key from the field identifier.
<p>
In addition to the key to extension mapping this class also defines the field
name overloading scheme. <a class="xref" href="Lucene.Net.QueryParsers.Ext.ExtendableQueryParser.html">ExtendableQueryParser</a> uses the given
extension to split the actual field name and extension key by calling
<a class="xref" href="Lucene.Net.QueryParsers.Ext.Extensions.html#Lucene_Net_QueryParsers_Ext_Extensions_SplitExtensionField_System_String_System_String_">SplitExtensionField(String, String)</a>. To change the order or the key
/ field name encoding scheme users can subclass <a class="xref" href="Lucene.Net.QueryParsers.Ext.Extensions.html">Extensions</a> to
implement their own.</p>
</section>
      <h4><a class="xref" href="Lucene.Net.QueryParsers.Ext.ParserExtension.html">ParserExtension</a></h4>
      <section><p>This class represents an extension base class to the Lucene standard
<a class="xref" href="Lucene.Net.QueryParsers.Classic.QueryParser.html">QueryParser</a>. The
<a class="xref" href="Lucene.Net.QueryParsers.Classic.QueryParser.html">QueryParser</a> is generated by the JavaCC
parser generator. Changing or adding functionality or syntax in the standard
query parser requires changes to the JavaCC source file. To enable extending
the standard query parser without changing the JavaCC sources and re-generate
the parser the <a class="xref" href="Lucene.Net.QueryParsers.Ext.ParserExtension.html">ParserExtension</a> can be customized and plugged into an
instance of <a class="xref" href="Lucene.Net.QueryParsers.Ext.ExtendableQueryParser.html">ExtendableQueryParser</a>, a direct subclass of
<a class="xref" href="Lucene.Net.QueryParsers.Classic.QueryParser.html">QueryParser</a>.</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/Ext/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>
