blob: e390491c83e7aac9290f4bc3e30c8a38ee127324 [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.Ext
| Apache Lucene.NET 4.8.0-beta00010 Documentation </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Lucene.Net.QueryParsers.Ext
| 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.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-beta00010/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="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>