1. A computer-implemented method of generating answers to questions based on a corpus of data, said method comprising: receiving an input query; breaking said input query into query terms, said query terms comprising searchable components; conducting a first search in said corpus of data using one of more of said searchable components to obtain documents including candidate answers, wherein all documents including candidate answers are stored in a data storage device; analyzing said obtained documents and each document's metadata to generate a set of candidate answers; conducting a second search in said corpus of data using said candidate answers and said searchable components of said query terms to obtain one or more supporting passages, wherein said supporting passages have at least one of said candidate answers and at least one of said searchable components of said query terms; scoring said candidate answers using said supporting passages, wherein said scoring is carried out by a plurality of parallel implemented scoring modules, each scoring module producing a candidate score component, said candidate score components comprising a term match score, a textual alignment score and semantic relation score; combining each of said candidate score components to determine an overall candidate score for each of said candidate answers; selecting one or more query answers based on said candidate score; generating a query response based on said one or more query answers for delivery to a user.