11. A computer-implemented method performed at a server system having one or more processors and memory, the method comprising: receiving a search query from a user; identifying search results associated with the search query; identifying a user profile associated with the user, wherein the user profile includes a set of user-preferred search results that is determined, at least in part, by: identifying a set of candidate search results in a search history of the user, wherein each of the candidate search results has been selected by the user for at least a predefined minimum number of times; determining a popularity metric for each of the candidate search results; and selecting a subset of the candidate search results whose associated popularity metrics exceed a predefined threshold as the set of user-preferred search results; identifying in the search results, one or more search results that are associated with at least one of the user-preferred search results; ordering the search results based at least in part on the identification, in the search results, of the one or more search results that are associated with at least one of the user-preferred search results; and providing the ordered search results to the user.
17. The method of claim 11 , wherein the popularity metric of a candidate search result is a function of two or more parameters, wherein the parameters include: a time span period from the user's most remote selection of the candidate search result to the user's most recent selection of the candidate search result; and a time decay period from the user's most recent selection of the candidate search result to present.