1. A method for providing search results on a search engine, the method comprising: gathering a plurality of profile data; generating a user profile associated with a user identification using the plurality of profile data, wherein the user profile comprises a plurality of weight values with each weight value of the plurality of weight values associated with a corresponding feature category of a plurality of feature categories, wherein the weight value for each of the feature categories is based on an amount of personalization data of the plurality of profile data associated with the corresponding feature category; receiving a search input from a user and the user identification; generating a plurality of feature scores, each feature score associated with one of the plurality of feature categories based on the search input; and creating a ranked search result personalized to the specific user using the user profile, the creating of the ranked search result comprising: identifying a user preferred category for the user based on the user profile and the search input from the user; identifying the plurality of feature scores; identifying the weight values for each of the plurality of feature scores; determining each of the plurality of feature scores for each of the plurality of search result items; determining a total score for each of the plurality of search result items based on the feature scores for each of the plurality of search result items and the weights for each of the plurality of feature scores; ranking the plurality of search result items based on the total score; and determining a first feature category of the plurality of feature categories comprising a keyword desirability category, wherein each feature score associated with the keyword desirability category is based on a likelihood that a particular search result is a desired item based on the search input and a set of search results obtained from aggregate data from users who made similar queries.