Здравствуйте.
Спасибо за статью, довольно интересный алгоритм.
Дело в том, что у меня аналогичная задача, только справочник другой (не КЛАДР). В нем слово «проспект» пишется полностью, например: "Ленина проспект", "Победы проспект" и т.д.
Таким образом, если пользователь вводит "пр. Ленина", то алгоритм выдает не проспект, а улицу "Ленина", т.к. слова "пр" и "проспект" являются не созвучными:
soundex('pr') = P600
soundex('prospekt') = P621
Как вы сравнивали soundex's – жестко (то есть по полному совпадению) или допускали некоторую погрешность (если да, то как это делали)?
Расхождение 'pr' и 'prospekt': |(621 - 600) / ((600 + 621) / 2) | = 3.4% (отношение разницы между кодами к среднему значению кода)
Я не знаю, насколько это правильно и допустимо ли такое, как думаете?
Если перефразировать — допустимо ли говорить о созвучии слов, если их soundex-коды отличаются на малую величину (например, 4%)?
Пока я решил проблему так: сокращения "пр" заменяю на "проспект", а потом запускаю алгоритм.
Спасибо.