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
- '
+' specifiesANDoperation:token1+token2 - '
|' specifiesORoperation: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 '
The '
The '
Note that above examples consider the terms before text processing.</code>'. The following characters will need to be escaped in
terms and phrases:
+ | " ( ) ' </code>
-' 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.' 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 term1term1* -- Searches for the term term1term1 -- Searches for the term term1term*1 -- Searches for the term term1
Inheritance
Namespace: Lucene.Net.QueryParsers.Simple
Assembly: Lucene.Net.QueryParser.dll
Syntax
public class SimpleQueryParser : QueryBuilder
Constructors
| Improve this Doc View SourceSimpleQueryParser(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 |
|---|---|---|
| Analyzer | analyzer | |
| IDictionary<System.String, System.Single> | weights |
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 |
|---|---|---|
| Analyzer | analyzer | |
| IDictionary<System.String, System.Single> | weights | |
| Operator | flags |
SimpleQueryParser(Analyzer, String)
Creates a new parser searching over a single field.
Declaration
public SimpleQueryParser(Analyzer analyzer, string field)
Parameters
| Type | Name | Description |
|---|---|---|
| Analyzer | analyzer | |
| System.String | field |
Fields
| Improve this Doc View Sourcem_flags
flags to the parser (to turn features on/off)
Declaration
protected readonly Operator m_flags
Field Value
| Type | Description |
|---|---|
| Operator |
m_weights
Map of fields to query against with their weights
Declaration
protected readonly IDictionary<string, float> m_weights
Field Value
| Type | Description |
|---|---|
| IDictionary<System.String, System.Single> |
Properties
| Improve this Doc View SourceDefaultOperator
Gets or Sets the implicit operator setting, which will be
either
Declaration
public virtual Occur DefaultOperator { get; set; }
Property Value
| Type | Description |
|---|---|
| Occur |
Methods
| Improve this Doc View SourceNewDefaultQuery(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 |
|---|---|
| Query |
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 |
|---|---|
| Query |
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 |
|---|---|
| Query |
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 |
|---|---|
| Query |
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 |
|---|---|
| Query |
Simplify(BooleanQuery)
Helper to simplify boolean queries with 0 or 1 clause
Declaration
protected virtual Query Simplify(BooleanQuery bq)
Parameters
| Type | Name | Description |
|---|---|---|
| BooleanQuery | bq |
Returns
| Type | Description |
|---|---|
| Query |