i had implemented this for a client, however it was not too complicated and a simple one (as my clients budget was quite low)
basically i displayed related articles based on score (higher the score, better the chances of showing an article as related)
this score depends upon few simple things:
1) - match the tags of any article with existing articles in database (this has the highest multiplier) so if 3 tags match, i multiply with 10, that way score = 30
2) - match the title of article with subjects of existing articles in database after removing common words (like a, the, how, etc). i used sql server free text to give me rank for this. i multiply this rank with 5. so if 3 words match, the score = 15
i then add the scores from above 2 and display them in high to low order.
but 1 very important point here - i also allowed my client to explicitly specify related articles. so if my client explicitly specified 2 articles, then i would show those 2 first and then run my algorithim to show remaing 3 on the list (5 in all)
i know its a simply solution, not 100% perfect but i had to build this keeping my clients budget in mind. you can always add a lot more factors to this (like matching the content, date (newest to oldest preference), popularity (number of comments and views) etc etc
hope this helps...