1. A method of generating answers to questions, comprising: receiving an input query; decomposing the input query into a plurality of different subqueries; conducting a search in one or more data sources to identify at least one candidate answer to each of the subqueries; for each of the candidate answers for each of the subqueries, applying a candidate ranking function to determine a ranking for said each of the candidate answers; for each of the subqueries, selecting one of the candidate answers to the subquery based on the ranking of said one of the candidate answers; and applying a logical synthesis component to synthesize a candidate answer for the input query from the selected ones of the candidate answers to the subqueries.