1. A computer-implemented method of generating a ranked list of keywords the method comprising: at a computer processor, maintaining a database recording a weighted relationship between keywords; receiving an initial keyword from a user; obtaining a stored set of web page listings previously associated with the initial keyword; obtaining a set of keywords comprising, for each web page listing in the set of web page listings, keywords previously associated with the web page listings; ranking each keyword in the set of keywords based upon the weighted relationship between the initial keyword and each keyword, thereby forming a ranked list of keywords; presenting the ranked list of keywords to the user; receiving, by the computer processor, an indication of a selected keyword that was selected by the user from the ranked list of keywords in response to the presenting; and responsive to receiving the indication of the selected keyword, updating the database to increase the weighted relationship between the initial keyword and the selected keyword.
5. The method of claim 1 wherein there exists a plurality of profiles that group users; and the updating of the database increases the relationship between the initial keyword and the selected keyword differently depending on the profile of the user.