PHP: similar_text или levenshtein?
12.05.2011 технологии
Оказывается, функция similar_text() порядок букв вообще не учитывает, или учитывает как-то ну очень странно. Сравнивая слова book и okbo вы получите 50% совпадение, и отличие в 2 символа. Расстояние Левенштейна в аналогичных случаях работает гораздо лучше — для book/okbo выдаст отличие 4 (см. ниже…). Кроме того, Левенштейн корректно работает с UTF-8, а similar_text() в таком случае для русских букв будет умножать отличия на два, ну и процент соответственно изменять.
Проблема только в том, что Левенштейн выдаёт на самом деле не количество отличающихся символов, а примерное количество замен/вставок, что может несколько усложнить решение некоторых конкретных задач. В частности, для моей задачи обе функции не подходят, и придётся чего-то мудрить.
Комментарии
Комментирование этой статьи закрыто.
« PHP: mb_str_split() Пиу-Пиу! Покупали игру в города? Обновитесь! »
Ты бы хоть задачу описал, а не только проблему ;)
А вот :-р