Yes, this is a good approach too.

Or we can do a Longest Common Subsequence also, which is more refined than this approach.
Refer this - http://en.wikipedia.org/wiki/Longest_common_subsequence_problem

I think this is a better approach.

When comparing, it can jump some characters to find the max match. 

So, on comparing "Blankets - Australian Red Cross" and "Blankets - 123457 - Australian Red Cross", it will give the result as "Blankets - Australian Red Cross"

Also, "Blanket - Australian Red Cross" and "Blankets - 123457 - Australian Red Cross" will give "Blanket - Australian Red Cross". So, there is no strict word matches. It can match any SUBSEQUENCES of the given strings.

Also, "Buckets - Australian Red Cross" and "Blankets - 123457 - Australian Red Cross" would give "Bkets - Australian Red Cross" which is shorter than match of "Blankets - Australian Red Cross" and "Blankets - 123457 - Australian Red Cross".

The other cases will work as before.