1. A computer-implemented method for refining search results, the method comprising the actions of: receiving, by one or more computer processors, a search query; determining, by one or more computer processors, whether the search query is a compound search query, wherein a compound search query includes at least two search queries separated by at least one logical operator; in response to determining the search query is a compound search query, parsing, by one or more computer processors, the compound search query into at least a first sub-query and a second sub-query; performing, by one or more computer processors, a search for each of the sub-queries and the compound search query; receiving, by one or more computer processors, a set of results from each search; determining, by one or more computer processors, a selection is made of a received result from the search of the first sub-query; creating, by one or more computer processors, a new search query that includes text from the selected received result and the second sub-query; performing, by one or more computer processors, a second search using the selected received result and the second sub-query; and determining, by one or more computer processors, a ranked order for each set of received results, wherein the ranked order is determined based on a weight assigned to each search result obtained, wherein the weight is determined based on a preference of a user, the preference being set prior to entering the search query and including a preference for social media data, geographic location data, and a preference based on a prior history of the user's searches, and one or more of: a relevancy to the search query, and a timeliness of the received result.