Struct tantivy::query::QueryParser [−][src]
pub struct QueryParser { /* fields omitted */ }
Tantivy's Query parser
The language covered by the current parser is extremely simple.
-
simple terms: "e.g.:
Barack Obama
are simply tokenized using tantivy'sStandardTokenizer
, hence becoming["barack", "obama"]
. The terms are then searched within the default terms of the query parser.e.g. If
body
andtitle
are default fields, our example terms are["title:barack", "body:barack", "title:obama", "body:obama"]
. By default, all tokenized and indexed fields are default fields.Multiple terms are handled as an
OR
: any document containing at least one of the term will go through the scoring.This behavior is slower, but is not a bad idea if the user is sorting by relevance : The user typically just scans through the first few documents in order of decreasing relevance and will stop when the documents are not relevant anymore.
Switching to a default of
AND
can be done by calling.set_conjunction_by_default()
. -
negative terms: By prepending a term by a
-
, a term can be excluded from the search. This is useful for disambiguating a query. e.g.apple -fruit
-
must terms: By prepending a term by a
+
, a term can be made required for the search. -
phrase terms: Quoted terms become phrase searches on fields that have positions indexed. e.g.,
title:"Barack Obama"
will only find documents that have "barack" immediately followed by "obama". -
range terms: Range searches can be done by specifying the start and end bound. These can be inclusive or exclusive. e.g.,
title:[a TO c}
will find all documents whose title contains a word lexicographically betweena
andc
(inclusive lower bound, exclusive upper bound). Inclusive bounds are[]
, exclusive are{}
. -
all docs query: A plain
*
will match all documents in the index.
Methods
impl QueryParser
[src]
impl QueryParser
pub fn new(
schema: Schema,
default_fields: Vec<Field>,
tokenizer_manager: TokenizerManager
) -> QueryParser
[src]
pub fn new(
schema: Schema,
default_fields: Vec<Field>,
tokenizer_manager: TokenizerManager
) -> QueryParser
Creates a QueryParser
, given
- schema - index Schema
- default_fields - fields used to search if no field is specifically defined in the query.
pub fn for_index(index: &Index, default_fields: Vec<Field>) -> QueryParser
[src]
pub fn for_index(index: &Index, default_fields: Vec<Field>) -> QueryParser
Creates a QueryParser
, given
- an index
- a set of default - fields used to search if no field is specifically defined in the query.
pub fn set_conjunction_by_default(&mut self)
[src]
pub fn set_conjunction_by_default(&mut self)
Set the default way to compose queries to a conjunction.
By default, the query happy tax payer
is equivalent to the query
happy OR tax OR payer
. After calling .set_conjunction_by_default()
happy tax payer
will be interpreted by the parser as happy AND tax AND payer
.
pub fn parse_query(&self, query: &str) -> Result<Box<Query>, QueryParserError>
[src]
pub fn parse_query(&self, query: &str) -> Result<Box<Query>, QueryParserError>
Parse a query
Note that parse_query
returns an error if the input
is not a valid query.
There is currently no lenient mode for the query parser which makes it a bad choice for a public/broad user search engine.
Implementing a lenient mode for this query parser is tracked in Issue 5
Auto Trait Implementations
impl Send for QueryParser
impl Send for QueryParser
impl Sync for QueryParser
impl Sync for QueryParser