Abstract base class for searchers.
Searching is the operation of locating a subset of the documents that
contains desired content or that their attributes match some specification.
The input for a search operation is a query that specifies a criteria for
selecting the documents and its output is a list of documents (hits) that
matched that criteria.
The hit list is typically ordered by some measure of relevancy (called
ranking or scoring) and may contain only a subset of the set of documents
that matched the query (typically the ones with the highest scored documents).
The search operation is performed on an index which is a specialized
database that contains a pre compiled information of the document set.
The index database is optimized for locating quickly documents that contains
certain words or terms.