Как работает функция Soundex в SQL Server? - PullRequest
7 голосов
/ 04 сентября 2011

Вот пример кода Soundex в SQL:

SELECT SOUNDEX('Smith'), SOUNDEX('Smythe');
----- ----- 
S530  S530  

Как 'Smith' становится S530?

В этом примере первая цифра - S, потому что это первый символ во входном выражении, но как рассчитываются оставшиеся три цифры?

Ответы [ 2 ]

10 голосов
/ 04 сентября 2011

Посмотрите на эту статью

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

  • 1 = B, F, P, V
  • 2 = C,G, J, K, Q, S, X, Z
  • 3 = D, T
  • 4 = L
  • 5 = M, N
  • 6 = R

Двойные буквы с одинаковым кодом Soundex, A, E, I, O, U, H, W, Y и некоторыми префиксами игнорируются ...

Итак, для Смита и Смайта код создается так:

S  S   ->   S
m  m   ->   5
i  y   ->   0
t  t   ->   3
h  h   ->   0
   e   ->   -
0 голосов
/ 22 августа 2018

Что такое Soundex?

Soundex :

фонетический алгоритм индексации имен по звуку, как произносится на английском языке ; впервые разработанный Робертом К. Расселом и Маргарет Кинг Оделл в 1918 году

Как это работает?

Существует несколько реализаций Soundex, но большинство реализуют следующие шаги:

  1. Сохраните первую букву имени и отбросьте все остальные вхождения гласных и h,w:
    |a, e, i, o, u, y, h, w | → "" |
  2. Заменить согласных цифрами следующим образом (после первой буквы):
    | b, f, p, v | → 1 |
    | c, g, j, k, q, s, x, z | → 2 |
    | d, t | → 3 |
    | l | → 4 |
    | m, n | → 5 |
    | r | → 6 |
  3. Заменить идентичные соседние числа одним значением (, если они были рядом друг с другом до шага 1 ):
    | M33 | → M3 |
  4. Вырезать или Накладку с нулями или вырезать для получения 4-значного результата:
    | M3 | → M300 |
    | M34123 | → M341 |

Вот интерактивная демонстрация в jsFiddle :

jsFiddle Demo

А вот демонстрация SQL с использованием SQL Fiddle

В SQL Server SOUNDEX часто используется вместе с DIFFERENCE, который используется для подсчета количества идентичных итоговых цифр (как в игре mastermind ), причем более высокие числа соответствуют наиболее близко.

Mastermind

Какие есть альтернативы?

Важно понимать ограничения и критику soundex и того, где люди пытались его улучшить, в частности, опираясь только на английское произношение, а также отбрасывает много данных, что приводит к большему количеству ложных срабатываний .


Оба Метафон & Двойной Метафон по-прежнему фокусируются на произношении на английском языке, но добавляют гораздо больше детализации нюансам речь на английском (т.е. PHF)

Фил Фактор написал функцию метафона в SQL с источником на github


Soundex чаще всего используется для идентификации похожих имен, и ему будет очень трудно найти любые похожие псевдонимы (т.е. RobertRob или Bob). В ответ на этот вопрос в Базе данных псевдонимов / псевдонимов людей вы можете включить поиск по аналогичным псевдонимам в процессе сопоставления.

Вот несколько бесплатных списков распространенных псевдонимов:

Дополнительная литература:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...