Struct tantivy::query::QueryParser[][src]

pub struct QueryParser { /* fields omitted */ }
Expand description

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’s SimpleTokenizer, hence becoming ["barack", "obama"]. The terms are then searched within the default terms of the query parser.

    e.g. If body and title 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().

  • boolean operators AND, OR. AND takes precedence over OR, so that a AND b OR c is interpreted as (a AND b) OR c.

  • In addition to the boolean operators, the -, + can help define. These operators are sufficient to express all queries using boolean operators. For instance x AND y OR z can be written ((+x +y) z). In addition, these operators can help define “required optional” queries. (+x y) matches the same document set as simply x, but y will help refining the score.

  • 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 between a and c (inclusive lower bound, exclusive upper bound). Inclusive bounds are [], exclusive are {}.

  • date values: The query parser supports rfc3339 formatted dates. For example "2002-10-02T15:00:00.05Z" or some_date_field:[2002-10-02T15:00:00Z TO 2002-10-02T18:00:00Z}

  • all docs query: A plain * will match all documents in the index.

Parts of the queries can be boosted by appending ^boostfactor. For instance, "SRE"^2.0 OR devops^0.4 will boost documents containing SRE instead of devops. Negative boosts are not allowed.

It is also possible to define a boost for a some specific field, at the query parser level. (See set_boost(...) ). Typically you may want to boost a title field.

Implementations

Creates a QueryParser, given

  • schema - index Schema
  • default_fields - fields used to search if no field is specifically defined in the query.

Creates a QueryParser, given

  • an index
  • a set of default - fields used to search if no field is specifically defined in the query.

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.

Sets a boost for a specific field.

The parse query will automatically boost this field.

If the query defines a query boost through the query language (e.g: country:France^3.0), the two boosts (the one defined in the query, and the one defined in the QueryParser) are multiplied together.

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

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s. Read more

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s. Read more

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait. Read more

Performs the conversion.

Performs the conversion.

The alignment of pointer.

The type for initializers.

Initializes a with the given initializer. Read more

Dereferences the given pointer. Read more

Mutably dereferences the given pointer. Read more

Drops the object pointed to by the given pointer. Read more

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.