For several years, I used the community tags module to allow site users to tag content. It was then supplemented by auto-tagging new content by using the search module's results for individual tags that are input on other content. However, a new option is emerging. I am testing the Open Calais module, which has an excellent introduction by Lullabot.
Rather than relying on members to generate a complete vocabulary of tags, Calais allows us to automatically build out the tag vocabulary by tapping into a broad open community. The only apparent limitation that I've experienced is that the confidence level has to be lowered more than expected to get the target number of tags per content. On the range of 0.0 to 1.0, I had to set it around 0.3 to get the number of results I hoped for on any individual piece of content. Of course, even then, Calais is an organic system that will grow and expand over time -- so we have to update periodically and/or contribute back to the project.