I created a little record-matching utility for use in importing data form a third party administrator once. I had it take the first three letters of the incoming feed and spit out a list of the best possible matches from our production data.
I did it with two list boxes, the first being the stuff to match, the second being our prod stuff. If we had terms that didn't match, I could see the best possiblities side by side. Then I would select the right one, press a button to update our metadata and we were good to go. Next time that import came around the database already know which vendor names matched up to our internal stuff.
Mine was fairly primitive. All I did was take the first three letters of the incoming stuff and found strings that contained that term anywhere.
I do have a slightly more comprehensive, but much slower method of comparing which I did in excel. The idea there was to break up the source word into as many three-letter terms as possible. Then I would search my target string for each of those terms. I would then store a count of the number of matching terms to effectively create a rank. Then I would evaluate the ranks for the best possible match.