Можно попробовать вычислять расстояние между строками с помощью
функции levenshtein. Ещё можно подумать о том, чтобы бить названия на слова (выкидывая знаки препинания), и считать количество слов по точным совпадениям. По приведённым примерам должно работать не хуже.