Длина строки SQLite soundex

Имеет ли функция soundex в sqlite ограничение на длину строки? Как я обнаружил, что результат

SELECT soundex('Schneider Thomson'), soundex('Schneider Rene'), soundex('Schneider')

Все одно и то же значение, равное S536, однако результат:

SELECT soundex('Schn Thomson'), soundex('Schn Rene'), soundex('Schn');

Отличается для каждой строки, а значения

soundex('Schn Thomson') = S535 
soundex('Schn Rene')    = S565
soundex('Schn')         = S500

Пожалуйста, кто-нибудь может объяснить, почему?


person Ahmed Alaa    schedule 19.06.2013    source источник


Ответы (2)


алгоритм Soundex предназначен для работы с отдельными словами. (Для упрощения он кодирует первую букву и первые три следующих за ней согласных.)

person CL.    schedule 19.06.2013

Чтобы дать немного больше пояснений к ответу CL, кодировка использует первую букву, а затем кодирует следующие согласные (за исключением H, W, Y), пока не будут сгенерированы 3 цифры. Слово «Миссисипи» хорошо это иллюстрирует. МИССИСИППИ имеет SOUNDEX M210.

  1. M — это первая буква, за которой следует первая согласная S. Затем S повторяется и игнорируется кодировкой SOUNDEX.
  2. Следующей согласной буквой является P, и за ней не следует другая допустимая буква (только повторяющаяся буква p и i).
  3. Таким образом, ноль является последней цифрой.

Надеюсь, это даст немного больше пояснений о том, как SOUNDEX кодирует слова. Чтобы получить дополнительную информацию, в этой статье с сайта Genealogy.com объясняется, как использовать SOUNDEX при изучении имен. Это объясняет, почему supercell и supercalifragilisticexpialidocious имеют один и тот же SOUNDEX, S162.

person Nathan    schedule 24.07.2015
comment
Более распространенный пример с SOUNDEX и именами — Элисон и Александр имеют значения A425 (ALSN = ALXN). - person HorusKol; 05.02.2016