Matching is yours. The library parses the query and combines your handlers. Wildcards, prefixes, stemming, ranking and fuzzy matching are up to the handlers.
Filtering only. A query does not sort, page or select fields: sort:date is a key like any other, with the handler you give it.
One syntax. The operators, keywords and date keywords are fixed, and in English.
No syntax errors to report. A malformed query is read as text, so there is no error position to show the user; see Malformed queries.