Class SimpleQueryParser
SimpleQueryParser is used to parse human readable query syntax.
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 ' ' '\n' '\r' and '\t'
and certain operators may be used to delimit tokens ( ) + | " .
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.
Query Operators
- '
+
' specifies AND
operation: token1+token2
- '
|
' specifies OR
operation: token1|token2
- '
-
' negates a single token: -token0
- '
"
' creates phrases of terms: "term1 term2 ..."
- '
' at the end of terms specifies prefix query: term
- '
~
N' at the end of terms specifies fuzzy query: term~1
- '
~
N' at the end of phrases specifies near query: "term1 term2"~5
- '
(
' and ')
' specifies precedence: token1 + (token2 | token3)
The default operator is OR
if no other operator is specified.
For example, the following will OR
token1
and token2
together:
token1 token2
Normal operator precedence will be simple order from right to left.
For example, the following will evaluate token1 OR token2
first,
then AND
with token3
:
token1 | token2 + token3
Escaping
An individual term may contain any possible character with certain characters
requiring escaping using a '</code>'. The following characters will need to be escaped in
terms and phrases:
+ | " ( ) ' </code>
The '-
' operator is a special case. On individual terms (not phrases) the first
character of a term that is -
must be escaped; however, any '-
' characters
beyond the first character do not need to be escaped.
For example:
-term1
-- Specifies NOT
operation against term1
-term1
-- Searches for the term -term1
.term-1
-- Searches for the term term-1
.term-1
-- Searches for the term term-1
.
The '
' operator is a special case. On individual terms (not phrases) the last
character of a term that is '
' must be escaped; however, any '
' characters
before the last character do not need to be escaped:
term1
-- Searches for the prefix term1
term1*
-- Searches for the term term1
term1
-- Searches for the term term1
term*1
-- Searches for the term term1
Note that above examples consider the terms before text processing.
Inheritance
System.Object
Lucene.Net.Util.QueryBuilder
SimpleQueryParser
Inherited Members
Lucene.Net.Util.QueryBuilder.Analyzer
Lucene.Net.Util.QueryBuilder.EnablePositionIncrements
Lucene.Net.Util.QueryBuilder.NewTermQuery(Lucene.Net.Index.Term)
Lucene.Net.Util.QueryBuilder.NewPhraseQuery()
Lucene.Net.Util.QueryBuilder.NewMultiPhraseQuery()
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Assembly: Lucene.Net.QueryParser.dll
Syntax
public class SimpleQueryParser : QueryBuilder
Constructors
|
Improve this Doc
View Source
SimpleQueryParser(Analyzer, IDictionary<String, Single>)
Creates a new parser searching over multiple fields with different weights.
Declaration
public SimpleQueryParser(Analyzer analyzer, IDictionary<string, float> weights)
Parameters
Type |
Name |
Description |
Lucene.Net.Analysis.Analyzer |
analyzer |
|
System.Collections.Generic.IDictionary<System.String, System.Single> |
weights |
|
|
Improve this Doc
View Source
SimpleQueryParser(Analyzer, IDictionary<String, Single>, Operator)
Creates a new parser with custom flags used to enable/disable certain features.
Declaration
public SimpleQueryParser(Analyzer analyzer, IDictionary<string, float> weights, Operator flags)
Parameters
Type |
Name |
Description |
Lucene.Net.Analysis.Analyzer |
analyzer |
|
System.Collections.Generic.IDictionary<System.String, System.Single> |
weights |
|
Operator |
flags |
|
|
Improve this Doc
View Source
SimpleQueryParser(Analyzer, String)
Creates a new parser searching over a single field.
Declaration
public SimpleQueryParser(Analyzer analyzer, string field)
Parameters
Type |
Name |
Description |
Lucene.Net.Analysis.Analyzer |
analyzer |
|
System.String |
field |
|
Fields
|
Improve this Doc
View Source
m_flags
flags to the parser (to turn features on/off)
Declaration
protected readonly Operator m_flags
Field Value
|
Improve this Doc
View Source
m_weights
Map of fields to query against with their weights
Declaration
protected readonly IDictionary<string, float> m_weights
Field Value
Type |
Description |
System.Collections.Generic.IDictionary<System.String, System.Single> |
|
Properties
|
Improve this Doc
View Source
DefaultOperator
Gets or Sets the implicit operator setting, which will be
either SHOULD or MUST.
Declaration
public virtual Occur DefaultOperator { get; set; }
Property Value
Type |
Description |
Lucene.Net.Search.Occur |
|
Methods
|
Improve this Doc
View Source
NewDefaultQuery(String)
Factory method to generate a standard query (no phrase or prefix operators).
Declaration
protected virtual Query NewDefaultQuery(string text)
Parameters
Type |
Name |
Description |
System.String |
text |
|
Returns
Type |
Description |
Lucene.Net.Search.Query |
|
|
Improve this Doc
View Source
NewFuzzyQuery(String, Int32)
Factory method to generate a fuzzy query.
Declaration
protected virtual Query NewFuzzyQuery(string text, int fuzziness)
Parameters
Type |
Name |
Description |
System.String |
text |
|
System.Int32 |
fuzziness |
|
Returns
Type |
Description |
Lucene.Net.Search.Query |
|
|
Improve this Doc
View Source
NewPhraseQuery(String, Int32)
Factory method to generate a phrase query with slop.
Declaration
protected virtual Query NewPhraseQuery(string text, int slop)
Parameters
Type |
Name |
Description |
System.String |
text |
|
System.Int32 |
slop |
|
Returns
Type |
Description |
Lucene.Net.Search.Query |
|
|
Improve this Doc
View Source
NewPrefixQuery(String)
Factory method to generate a prefix query.
Declaration
protected virtual Query NewPrefixQuery(string text)
Parameters
Type |
Name |
Description |
System.String |
text |
|
Returns
Type |
Description |
Lucene.Net.Search.Query |
|
|
Improve this Doc
View Source
Parse(String)
Parses the query text and returns parsed query (or null if empty)
Declaration
public Query Parse(string queryText)
Parameters
Type |
Name |
Description |
System.String |
queryText |
|
Returns
Type |
Description |
Lucene.Net.Search.Query |
|
|
Improve this Doc
View Source
Simplify(BooleanQuery)
Helper to simplify boolean queries with 0 or 1 clause
Declaration
protected virtual Query Simplify(BooleanQuery bq)
Parameters
Type |
Name |
Description |
Lucene.Net.Search.BooleanQuery |
bq |
|
Returns
Type |
Description |
Lucene.Net.Search.Query |
|