Дополнительно, после разбиения строки на слова, их можно сравнивать с помощью levinshtein(). Потом с учетом длины слова получать коэффициент похожести. Таким образом можно с довольно точно определять схожесть, даже если допущена опечатка в слове, или если оно написано немного иначе.
Ну и дополнительный бонус — транслитерация строки и очистка ее от мусора.
1. Разбить обе строки на массивы слов (split)
2. Цикл поиска элементов одного массива в другом (подсчет совпадений = k)
3. Нахождение числа совпадений для второго массива из пропорции k1/n1=k2/n2 (n — число элементов массива)
4. Разница |k1-k2| и есть коэффициент похожести