1. A method, comprising: computing, by a processor, a plurality of sets of candidate tags for a document, wherein the plurality of sets of candidate tags include a set of candidate tags based on document-specific factors including keywords in the document, a set of candidate tags based on collaborative factors including tags that other users have applied to the document, a set of candidate tags based on personalized factors including information about a user and a set of candidate tags based on tag co-occurrences factors including tags that are often applied together with certain keywords; combining the plurality of sets of candidate tags from different factors into an overall recommendation list of candidate tags; returning at least one suggested tag from the overall recommendation list of candidate tags; recording at least one applied tag that is applied to the document by a user of a computer system; and adjusting the overall recommendation list of candidate tags based on the at least one applied tag.