|
|
The following special operators can be used:
hello | world
hello -world hello !world
@title hello @body world
"hello world"
"hello world"~10
"the world is a wonderful place"/3
Here's an example query which uses most of these operators:
Example 6. Extended query example
"hello world" @title "example program"~5 @body python -(php|perl)
There always is implicit AND operator, so "hello world" means that both "hello" and "world" must be present in matching document.
OR operator precedence is higher than AND, so "looking for cat | dog | mouse" means "looking for ( cat | dog | mouse )" and not "(looking for cat) | dog | mouse".
Proximity distance is specified in words, adjusted for word count, and applies to all words within quotes. For instance, "cat dog mouse"~5 query means that there must be less than 8-word span which contains all 3 words, ie. "CAT aaa bbb ccc DOG eee fff MOUSE" document will not match this query, because this span is exactly 8 words long.
Quorum matching operator introduces a kind of fuzzy matching. It will only match those documents that pass a given threshold of given words. The example above ("the world is a wonderful place"/3) will match all documents that have at least 3 of the 6 specified words.
Nested brackets, as in queries like
aaa | ( bbb ccc | ( ddd eee ) )
are not allowed yet, but this will be fixed.
Negation (ie. operator NOT) is only allowed on top level and not within brackets (ie. groups). This isn't going to change, because supporting nested negations would make phrase ranking implementation way too complicated.