A lot of web services talk about Personalization.
As we may know, matching contents with audiences' intention is the key value of any publishing site, especially web search.
Usually, web services use aggregated features to improve relevance. For example, Google's famous PageRank: if a lot of pages link to this one, it is important! Another example would be recommended posts on a BBS site or Blog RSS engagement service like feedburner.com. Usually, they are based on popularity: if a lot of people click on this, it is good; if a lot of people subscribe to this, it is cool!
In general, this aggregation approach will achieve "much-better-than-random-pick" results. However, for a given individual, this is NOT good enough: a lot of people like ipod, but I prefer zune. Hence, when searching for "mp3 player," I might want to see more zune results ;-)
The difficulty of personalization lies in two major factors: (1) huge possible combinations of different profiles (2) how to get and store users' profile.
So, how to address this issue?
I have to say, there is no out-of-package solution out there yet. But, the more you address this, the better position you are in the future competition! Hence, if you want to provide a serious web service to general audience, you want to think about personalization from the beginning of the system design.
Here are some preliminary thinkings:
(1) keep track of all the links a user clicks on your site
(2) have all the links classified based on some criteria
(3) aggregate over user, links classes, and time-frame, and keep the summarized data in user's cookie
(4) deliver contents using the summarized data as parameters
For example, if a search engine finds a user (cookie) clicks commercial links very often recently, it should really start to push more ads to him. If a user clicks sports links very often, showing sport-related ads will achieve better results.
Remember, Personalization is not about being perfect, it is about achieving competitive advance!