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.