PHP: similar_text или levenshtein?

12.05.2011

Оказывается, функция similar_text() порядок букв вообще не учитывает, или учитывает как-то ну очень странно. Сравнивая слова book и okbo вы получите 50% совпадение, и отличие в 2 символа. Расстояние Левенштейна в аналогичных случаях работает гораздо лучше — для book/okbo выдаст отличие 4 (см. ниже…). Кроме того, Левенштейн корректно работает с UTF-8, а similar_text() в таком случае для русских букв будет умножать отличия на два, ну и процент соответственно изменять.

Проблема только в том, что Левенштейн выдаёт на самом деле не количество отличающихся символов, а примерное количество замен/вставок, что может несколько усложнить решение некоторых конкретных задач. В частности, для моей задачи обе функции не подходят, и придётся чего-то мудрить.

Комментарии

  1. # aktuba: 

    Ты бы хоть задачу описал, а не только проблему ;)

  2. # Тормоз

    А вот :-р

Комментирование этой статьи закрыто.

Интересное Покупки ТехникаРазное Отдых Статьи Строительство Услуги Общество Хобби Культура Советы Уют