String matching is very problem-specific, because most of the time you will have the same characteristics of noise in your strings to be matched, be it extra punctuation, typos or spelling errors. You will need to find an algorithm that is appropriate for the problems in your input data if you are doing this on a wide scale.
Soundex will give you a degree of confidence that two strings sound the same, but you may have to do some upfront cleaning first (like removing punctuation and tokenizing the string into separate words).
The best thing you can do is to run a test, there are an enormous amount of different algorithms you can use, levenshtein being a great one, as is soundex (although your mileage will vary with your problem area). There are also variations on those two algorithms, BTW.
I suggest having a look at the simmetrics and second string libraries which have loads of string matching implementations (of the two I prefer the second string library).
It sounds like you have an interesting problem to solve, good luck!