В конце концов, и levenshtein
, и similar_text
были слишком медленными с количеством строк, которые ему пришлось пройти, даже с большим количеством проверок и только с использованием одной из них в качестве крайней меры.
В качестве эксперимента я портировал часть кода на C #, чтобы увидеть, насколько быстрее он будет по сравнению с взаимодействующим кодом. Он работал примерно через 3 минуты с тем же набором данных.
Затем я добавил дополнительное поле в таблицу и использовал расширение PECL с двойным метафоном для генерации ключей для каждой строки. Результаты были хорошими, хотя, так как некоторые включали числа, это вызвало дублирование. Полагаю, тогда я мог бы выполнить каждую из перечисленных выше функций, но решил не делать этого.
В итоге я выбрал самый простой подход - полный текст MySQL, который работал очень хорошо. Изредка бывают ошибки, хотя их легко обнаружить и исправить. Также он работает очень быстро, примерно за 3-4 секунды.