Функціональний блок 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-команда.