blob: ca36119a140789fe85c31209ca41ee0715944ae1 [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.Simple
| Apache Lucene.NET 4.8.0-beta00010 Documentation </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Lucene.Net.QueryParsers.Simple
| 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.Simple">
<h1 id="Lucene_Net_QueryParsers_Simple" data-uid="Lucene.Net.QueryParsers.Simple" class="text-break">Namespace Lucene.Net.QueryParsers.Simple
</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.
-->
<pre><code>A simple query parser for human-entered queries.
</code></pre></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.Simple.SimpleQueryParser.html">SimpleQueryParser</a></h4>
<section><p><a class="xref" href="Lucene.Net.QueryParsers.Simple.SimpleQueryParser.html">SimpleQueryParser</a> is used to parse human readable query syntax.
<p>
The main idea behind this parser is that a person should be able to type
whatever they want to represent a query, and this parser will do its best
to interpret what to search for no matter how poorly composed the request
may be. Tokens are considered to be any of a term, phrase, or subquery for the
operations described below. Whitespace including &apos; &apos; &apos;\n&apos; &apos;\r&apos; and &apos;\t&apos;
and certain operators may be used to delimit tokens ( ) + | &quot; .
<p>
Any errors in query syntax will be ignored and the parser will attempt
to decipher what it can; however, this may mean odd or unexpected results.
<h4>Query Operators</h4>
<ul><li>&apos;<code>+</code>&apos; specifies <code>AND</code> operation: <code>token1+token2</code></li><li>&apos;<code>|</code>&apos; specifies <code>OR</code> operation: <code>token1|token2</code></li><li>&apos;<code>-</code>&apos; negates a single token: <code>-token0</code></li><li>&apos;<code>&quot;</code>&apos; creates phrases of terms: <code>&quot;term1 term2 ...&quot;</code></li><li>&apos;<code><em></em></code>&apos; at the end of terms specifies prefix query: <code>term</code></li><li>&apos;<code>~</code>N&apos; at the end of terms specifies fuzzy query: <code>term~1</code></li><li>&apos;<code>~</code>N&apos; at the end of phrases specifies near query: <code>&quot;term1 term2&quot;~5</code></li><li>&apos;<code>(</code>&apos; and &apos;<code>)</code>&apos; specifies precedence: <code>token1 + (token2 | token3)</code></li></ul>
<p>
The default operator is <code>OR</code> if no other operator is specified.
For example, the following will <code>OR</code> <code>token1</code> and <code>token2</code> together:
<code>token1 token2</code>
<p>
Normal operator precedence will be simple order from right to left.
For example, the following will evaluate <code>token1 OR token2</code> first,
then <code>AND</code> with <code>token3</code>:</p>
<pre><code>token1 | token2 + token3</code></pre>
<p><h4>Escaping</h4>
<p>
An individual term may contain any possible character with certain characters
requiring escaping using a &apos;<code>&lt;/code&gt;&apos;. The following characters will need to be escaped in
terms and phrases:
<code>+ | &quot; ( ) &apos; &lt;/code&gt;
<p>
The &apos;<code>-</code>&apos; operator is a special case. On individual terms (not phrases) the first
character of a term that is <code>-</code> must be escaped; however, any &apos;<code>-</code>&apos; characters
beyond the first character do not need to be escaped.
For example:
<ul><li><code>-term1</code> -- Specifies <code>NOT</code> operation against <code>term1</code></li><li><code>-term1</code> -- Searches for the term <code>-term1</code>.</li><li><code>term-1</code> -- Searches for the term <code>term-1</code>.</li><li><code>term-1</code> -- Searches for the term <code>term-1</code>.</li></ul>
<p>
The &apos;<code><em></em></code>&apos; operator is a special case. On individual terms (not phrases) the last
character of a term that is &apos;<code></code>&apos; must be escaped; however, any &apos;<code><em></em></code>&apos; characters
before the last character do not need to be escaped:
<ul><li><code>term1</code> -- Searches for the prefix <code>term1</code></li><li><code>term1*</code> -- Searches for the term <code>term1<em></em></code></li><li><code>term1</code> -- Searches for the term <code>term<em>1</em></code></li><li><code>term*1</code> -- Searches for the term <code>term1</code></li></ul>
<p>
Note that above examples consider the terms before text processing.</p>
</code></code></section>
<h3 id="enums">Enums
</h3>
<h4><a class="xref" href="Lucene.Net.QueryParsers.Simple.Operator.html">Operator</a></h4>
<section></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/Simple/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>