Функциональный блок SOUNDEX

Функциональный блок SOUNDEX вычисляет сходство звучания строки.

Значения Soundex обладают свойством, что слова, произносимые похоже, дают одинаковое значение Soundex. Это может быть использовано для поиска в базах данных, если вы знаете произношение, но не точное написание. Функция Soundex возвращает строку из четырех символов, начинающуюся с буквы.

Вход STR

Вход определяет строку для вычисления.

Выход

Возвращает строку с кодом Soundex.

Основные правила

Каждый код Soundex состоит из буквы, за которой следуют три цифры, например, A532 для Antcas. Если слово, которое нужно закодировать, содержит так много букв, что можно было бы получить больше цифр, то после третьей цифры прерывают. Если в слове слишком мало букв, то последние цифры дополняют нулями. Азиатское имя Lee поэтому кодируется как L000.

Цифра Представленные буквы
1 B, F, P, V
2 C, G, J, K, Q, S, X, Z
3 D, T
4 L
5 M, N
6 R

Гласные A, E, I, O и U и согласные H, W и Y игнорируются, кроме первого символа. Дополнительно для немецкого языка можно определить: Умлауты Ä, Ö и Ü игнорируются, а "шарфое S" ß кодируется как простое S.

Если несколько последовательных букв в исходной строке имеют одинаковый код Soundex, то в результате он появляется только один раз, из abfx получается примерно A120 (a остается, потому что первый символ, b и f дают одинаковый код 1, x дает 2, в конце добавляется ноль, чтобы получить четыре символа).

При практическом применении метода Soundex обычно критикуются два момента: во-первых, он очень ориентирован на английский язык, а во-вторых, он предлагает только очень грубый анализ.

Тем не менее, следует отметить, что представленный алгоритм, вероятно, является наиболее часто используемым для фонетического поиска. К этому, безусловно, способствовало то, что для базы данных Oracle уже давно был реализован соответствующий стандартный оператор PL/SQL.