Fork me on GitHub
  • API

    Show / Hide Table of Contents

    Namespace Lucene.Net.QueryParsers.Simple

    A simple query parser for human-entered queries.

    Classes

    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.

    Enums

    Operator

    • Improve this Doc
    Back to top Copyright © 2021 The Apache Software Foundation, Licensed under the Apache License, Version 2.0
    Apache Lucene.Net, Lucene.Net, Apache, the Apache feather logo, and the Apache Lucene.Net project logo are trademarks of The Apache Software Foundation.
    All other marks mentioned may be trademarks or registered trademarks of their respective owners.