This is an abstract base class for queries.
A query is a specification of the content an properties of the desired
documents. Every search is done by matching a query against the document
index and locating the ones that match the query.
The simplest query specifies a single term (or word) that is to be matched
against a single field (e.g. author) of each of the documents in the index.
This kind of query matches any document that contains the term in the
A more complex queries may contain nested queries with and, or, not
or phrase relations. Queries may also contains specification of which
document fields to match against the various parts of the query
(.e.g. authors and title) and hints that may effects the ranking of
the matched documents (boost factor).