soundex — Возвращает ключ soundex для строки


Реализация Soundex Algorithm с использованием С++

Проще говоря, Soundex Algorithm изменяет последовательность символов в код. Говорят, что символы, которые производят один и тот же код Soundex, звучат одинаково.

  • Код шириной 4 символа.
  • Первым символом кода всегда является первый символ слова

Каждый символ в алфавите принадлежит к определенной группе (по крайней мере, в этом примере, а после этого код — это правило, в котором я буду придерживаться):

  • b, p, v, f = 1
  • c, g, j, k, q, s, x, z = 2
  • d, t = 3
  • l = 4
  • m, n = 5
  • r = 6
  • Каждая другая буква в алфавите относится к группе 0.

Другие известные правила:

  • Все буквы, принадлежащие к группе 0, игнорируются, ЕСЛИ вы не получили буквы в предоставленном слове, в этом случае остальная часть кода заполняется 0.
  • То же самое число нельзя использовать дважды или более последовательно, поэтому символ игнорируется. Единственным исключением является правило выше с несколькими 0.

Например, слово «Ray» будет вызывать следующий код Soundex: R000 (R — это первый символ предоставленного слова, a — отдельно от группы 0, поэтому он игнорируется, y не относится к группе 0, поэтому он игнорируется, больше нет символов, поэтому 3 оставшихся символа кода 0).

Я создал функцию, которая передала ему 1) 128-символьный массив, который используется для создания кода Soundex и 2) пустой массив из 5 символов, который будет использоваться для хранения кода Soundex по завершении (и перейдите по ссылке, поскольку большинство массивов делают это для моей программы).

Моя проблема, однако, связана с процессом преобразования. Логика, которую я привел выше, не совсем работает в моем коде. И я не знаю, почему.

Я не уверен, что из-за моего чрезмерного использования strlen, но по какой-то причине, пока программа работает в первом цикле while, ни один из символов фактически не преобразуется в код (то есть ни один из операторов if фактически не запускается).

Так что я делаю неправильно? Любая помощь будет принята с благодарностью.

soundex()

Синтаксис:

Поддерживается следующими версиями PHP:

Описание функции:

Функции soundex() вычисляет и возвращает soundex ключ для строки.

Похоже произносящиеся слова имеют одинаковый soundex ключ.

Чаще всего функция soundex() применяется для поиска слов в базе данных , когда известно только их звучание.

Аналогом функции soundex() является функция metaphone(). Считается, что функция metaphone() дает более точные результаты.

Обязательный аргумент. Строка soundex ключ которой необходимо вычислить

Примеры:

Пример 1:

В этом примере совершенно два разных слова green (зеленый) и grin (усмешка) дадут один и тот же soundex ключ, потому что произносятся одинаково.

Работа со строками

Любая строковая функция возвратит NULL, если строка результата превышает длину, установленную параметром сервера max_allowed_packet.

integer ASCII(str string)

Возвращает ASCII-код первого левого символа строки str. Возвращает 0, если строка str пустая. Возвращает NULL, если строка str не существует.

В случае, если первый левый символ строки str является многобайтовым, возвращает его код в формате: ((первый байт ASCII- код)*256+(второй байт ASCII -код))[*256+третий байт ASCII -код. ].

Если первый левый символ строки str не является многобайтовым, то действие аналогично действию функции ASCII() — возвращает ASCII-код первого левого символа строки str.

string CONV(int_or_str integer or string, from_base integer, to_base integer)

Мощная функция для конвертирования числа (int_or_str ) из одной системы исчисления (from_base) в другую систему (to_base). Возвращает NULL, если аргументы NULL. Минимальное значение .._base — 2, максимальное 36.

string BIN(int integer)

Возвращает двоичное значение аргумента int. Аналогично действию CONV(int,10,2). Возвращает NULL, если аргумент int NULL.

string OCT(int integer)

Возвращает восьмиричное значение аргумента int. Аналогично действию CONV(int,10,8). Возвращает NULL, если аргумент int NULL.

string HEX(int_or_str string or integer)


Возвращает шестнадцатиричное значение аргумента int_or_string. Аналогично действию CONV(int,10,16). Возвращает NULL, если аргумент int_or_string NULL.

Возвращает строку символов определенных кодом/кодами ASCII. Значение NULL пропускается.

string CONCAT(str1 string, str2 string. )

Объединяет строки Результатом является строка из состоящая из аргументов. Возвращает NULL, если какой либо из аргументов является NULL. Может быть более 2 аргументов. Числовые аргументы конвертируются в соответствующие строки.

string CONCAT_WS(separator string, str1 string, str2 string. )

Объединяет строки подобно функции CONCAT(), но с разделителем separator, который всавляется между строк-аргументов. Если separator является NULL, то результат будет NULL. Функция пропускает другие аргументы, если их значение NULL.

integer LENGTH(str string)

Функции возвращают длину строки str.

Примечание: многобайтовые символы считаются функцией CHAR_LENGTH().

integer OCTET_LENGTH(str string)

Функции возвращают длину строки str.

Примечание: многобайтовые символы считаются функцией CHAR_LENGTH().

integer CHAR_LENGTH(str string)

Функции возвращают длину строки str. Поддерживает многобайтовые символы.

integer CHARACTER_LENGTH(str string)

Функции возвращают длину строки str.

Примечание: многобайтовые символы считаются функцией CHAR_LENGTH().

integer POSITION(substr string IN str string)

Возвращает позицию первого вхождения подстроки substr в строке str. Возвращает 0, если substr не найдено в строке str. Поддерживает многобайтовые символы.

integer LOCATE(substr string, str string, pos integer)

LOCATE(substr string, str string) возвращает позицию первого вхождения подстроки substr в строке str. Возвращает 0, если substr не найдено в строке str. LOCATE(substr string, str string, pos integer) возвращает позицию первого вхождения подстроки substr в строке str, но начиная с pos. Возвращает 0, если substr не найдено в строке str (с учетом позиции, естественно). Поддерживает многобайтовые символы.

integer INSTR( str string, substr string)

Возвращает позицию первого вхождения подстроки substr в строке str. Возвращает 0, если substr не найдено в строке str (с учетом позиции, естественно). Поддерживает многобайтовые символы. Аналог LOCATE(), только аргументы поменяны местами.

string LPAD( str string, len integer, padstr string)

Возвращает строку str, добавив к началу str строку padstr и приведя общее количество символов в возвращенной строке к len. Если len больше, чем сумма длин строк, то разница за счет повторения строки padstr.

string RPAD( str string, len integer, padstr string)

Возвращает строку str, добавив к концу str строку padstr и приведя общее количество символов в возвращенной строке к len. Если len больше, чем сумма длин строк, то разница за счет повторения строки padstr.

string LEFT( str string, len integer)

Возвращает len первых символов изи строки str. Поддерживает многобайтовые символы.

string RIGHT( str string, len integer)

Возвращает len последних символов изи строки str. Поддерживает многобайтовые символы.

string SUBSTRING( str string, pos integer, len integer )

string SUBSTRING(str string FROM pos integer FOR len integer)

Возвращает подстроку строки str длиною len символов с позиции pos. Поддерживает многобайтовые символы. Вариант с «FROM » используется в синтаксисе ANSI SQL92. В функции SUBSTRING() если не указан аргумент len, то возвращает всю подстроку строки str с позиции pos.

string MID(str string, pos integer, len integer)

Возвращает подстроку строки str длиною len символов с позиции pos. Поддерживает многобайтовые символы. Вариант с «FROM » используется в синтаксисе ANSI SQL92. В функции SUBSTRING() если не указан аргумент len, то возвращает всю подстроку строки str с позиции pos.

string SUBSTRING_INDEX( str string, delim string, count integer)

Возвращает всю подстроку строки str с позиции определенной разделителем delim, находящимся по счету count.

string LTRIM( str string )

Возвращает строку str, удалив пробелы с начала строки. Поддерживает многобайтовые символы.


string RTRIM( str string )

Возвращает строку str, удалив пробелы с конца строки. Поддерживает многобайтовые символы.

string TRIM( [[BOTH | LEADING | TRAILING] [remstr] string FROM] str string )

С одним аргументом «str» — возвращает строку str, удалив пробелы с конца строки. Аргумент «remstr» определяет символ/подстроку для удаления. Поддерживает многобайтовые символы. mysql> select TRIM(‘ bar ‘); -> ‘bar’

string SOUNDEX( str string )

Вычисляет soundex ключ для str. Ключ soundex имеет такое свойство, что слова, произносимые одинакого, имеют одинаковый soundex ключ, и это может быть использовано для корректировки результатов поиска. Возвращает строку длиной 4 символа, начинающуюся буквой A-Z.

string SPACE( N integer )

Возвращает строку состоящую из N пробелов.

string REPLACE( str string, from_str string, to_str string)

Возвращает строку str, заменив в ней все подстроки from_str на to_str. Поддерживает многобайтовые символы.

string REPEAT( str string, count integer)

Возвращает строку, состоящую из count раз повтореной строки str. Возвратит NULL если один из аргументов NULL.

string REVERSE( str string )

Возвращает строку, в которой все символы с последнего на первый. См. пример. Поддерживает многобайтовые символы.

string INSERT( str string, pos integer, len integer, newstr string )

Возвращает строку str, со вставкой подстроки newstr, с позиции pos строки str и длиной len символов. Поддерживает многобайтовые символы.

string ELT( N integer, str1 string, str2 string, str3 string. )

Возвратит str1, если N = 1, str2 если N = 2, И так далее. Возвратит NULL если N меньше 1 больше количества аргументов.

integer FIELD( str string, str1 string, str2 string, str3 string. )

Возвратит индекс (номер по порядку) str из списка строк str1, str2, str3, . . Возвратит 0, если str не найдена в списке.

integer FIND_IN_SET( str string, strlist string )

Возвращает значение от 1 до . в зависимости от позиции строки str среди строк (подстрок) в строке strlist. Строки (подстроки) в strlist разделены «,». Возвращает 0, если str не найдена среди строк в strlist. Возвращает NULL, если один из аргументов NULL.

string MAKE_SET( bits, str1 string , str2 string . )

Возвращает одну из строк-аргументов в зависимости от побитового состояния bits. str1 возвратится при bit 0, str2 при bit 1, и так далее.

string EXPORT_SET( bits, on string , off string, [separator char, [number_of_bits integer]])

Возвращает строку, в которой для каждого бита выводится состояние on или off . Разделены состояния separator.

string LCASE( str string ) string

Возвращает строку str, заменив в ней все заглавные буквы на прописные. Поддерживает многобайтовые символы.(По умолчанию ISO-8859-1 Latin1).

string LOWER( str string )

Возвращает строку str, заменив в ней все заглавные буквы на прописные. Поддерживает многобайтовые символы.(По умолчанию ISO-8859-1 Latin1).

string UCASE( str string )

Возвращает строку str, заменив в ней все прописные буквы на заглавные. Поддерживает многобайтовые символы.(По умолчанию ISO-8859-1 Latin1).

string UPPER( str string )

Возвращает строку str, заменив в ней все прописные буквы на заглавные. Поддерживает многобайтовые символы.(По умолчанию ISO-8859-1 Latin1).

string LOAD_FILE( file_name string )

Читает файл и возвращает его контент в виде строки. file_name является полным путем к файлу на сервере. Необходимо следить за физическим наличием самого файла и соответствующими правами доступа скрипта к нему. Файл должен быть размером не более, чем установлено параметром max_allowed_packet. При возникновении проблем (отсутствие файла и тд.) возвращает NULL.

Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…

Строковые функции mySQL

ASCII (str)


Возвращает значение кода ASCII крайнего левого символа строки str. Возвращения 0, если str — пустая строка. Возвращает пустое значение (NULL), если str является пустой:

ORD (str)

Функция подобна ASCII. Если крайний левый символ строки str — многобайтовый символ, возвращает код для того символа, рассчитанный в зависимости от значений кода ASCII составляющих его символов, используя эту формулу: ( (первый код ASCII байта) *256 + (второй код ASCII байта) ) [*256+третий код ASCII байта]. Если крайний левый символ — не многобайтовый символ, возвращает то же самое значение, что и функция ASCII ().

CONV (N, from_base, to_base)

Конвертирует числа между различными основаниями. Возвращает строковое представление числа N, конвертированный с основания from_base в основание to_base. Возвращает пустой результат (NULL), если любой параметр является NULL (ПУСТЫМ). Параметр N интерпретируется как целое число, но может быть определен как строка. Минимальное основание — 2, максимальное основание — 36. Если to_base – отрицательное число, то N расценивается как число со знаком. Иначе, N расценивается как число без знака. Функция CONV работает с точностью на 64 бита:

BIN(N)

Возвращает строковое представление двоичного значения N, где N имеет тип BIGINT. Эта функция эквивалентна следующему вызову функции CONV: CONV (N, 10,2). Возвращает пустое значение, если N является пустым значением (NULL):

OCT(N)

Возвращает строковое представление восьмеричного значения N, где N имеет тип BIGINT. Это эквивалентно вызову CONV: CONV (N, 10,8). Возвращает пустое значение (NULL), если N является пустым (NULL):

HEX(N_or_S)

Если N_OR_S — число, возвращает строковое представление шестнадцатеричного значения N, где N имеет тип BIGINT. Это эквивалентно CONV (N, 10,16. Если N_OR_S — строка, возвращает шестнадцатеричную строку N_OR_S, где каждый символ в N_OR_S преобразован в 2 шестнадцатеричных цифры.

CHAR(N. )

Функция CHAR интерпретирует параметры как целые числа и возвращает строку, состоящую из символов, каждый из которых представлен значениями кода ASCII заданных целых чисел. Пустые (NULL) входные значение параметров пропускаются

CONCAT (str1, str2. )

Результат работы данной функции — объединение строк-параметров. Возвращает пустое значение (NULL), если любой параметр является пустым значением (NULL). Может иметь больше чем 2 параметра. Числовые параметры преобразуются в эквивалентную строковую форму:

CONCAT_WS(separator,str1,str2. )

CONCAT_WS () — это, по сути, специальная форма CONCAT (). Функция производит объединение всех параметров, кроме первого, который используется как разделитель между остальными параметрами. Разделитель может быть строкой или числом. Если разделитель является пустым (NULL), результат будет ПУСТОЙ (NULL). Функция пропустит любые пустые параметры. Разделитель будет добавляться между строками, которые будут связаны:

LENGTH(str), OCTET_LENGTH(str), CHAR_LENGTH(str), CHARACTER_LENGTH(str)

Илон Маск рекомендует:  Imagemagick или фотошоп для perl

Возвращает длину строки str:

BIT_LENGTH (str)

Возвращает длину строки str в битах:

LOCATE(substr,str), POSITION(substr IN str)

Возвращает позицию первого вхождения подстроки substr в строку str. Возвращает 0, если подстрока substr не найдена:

В MySQL 3.23 эти функции чувствительны к регистру, в то время как в 4.0 регистр учитывается, если любой параметр — двоичная строка. LOCATE(substr,str,pos)

Возвращает позицию первого вхождения подстроки substr в строку str, начиная с позиции pos. Возвращения 0, если substr подстрока не найдена:

В MySQL 3.23 эти функции чувствительны к регистру, в то время как в 4.0 регистр учитывается, если любой параметр — двоичная строка. INSTR (str, substr)

Возвращает позицию первого вхождения подстроки substr в строку str. Это то же самое, что и LOCATE () с двумя параметрами, за исключением того, что параметры меняются:

В MySQL 3.23 эти функции чувствительны к регистру, в то время как в 4.0 регистр учитывается, если любой параметр — двоичная строка. LPAD(str,len,padstr)

Возвращает строку str, с пристыкованной слева строкой padstr. Если str более длинна, чем len, тогда результат будет обрезан до len символов

RPAD(str,len,padstr)

Возвращает строку str, дополненную справа строкой padstr. Если str более длинна, чем len, тогда результат будет обрезан до len символов

LEFT(str,len)

Возвращает крайние len левых символов строки str:

RIGHT(str,len)

Возвращает крайние len правых символов строки str:

SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len), MID(str,pos,len)

Возвращает подстроку строки str длиной len символов, начинающейся с позиции pos. Различная форма использования этой функции введена для совместимости с ANSI SQL92 синтаксисом:

SUBSTRING(str,pos), SUBSTRING(str FROM pos)

Возвращает подстроку строки str,начинающуюся в позиции pos.

SUBSTRING_INDEX(str,delim,count)


Возвращает подстроку из строки str при count появлении разделителя delim. Если count положительное число, то возвращается все символы слева от последнего разделителя. Если count -отрицателен, то возвращается все символы справа от последнего разделителя:

LTRIM (str)

Возвращает строку str с удаленными слева пробелами:

RTRIM (str)

Возвращает строку str с удаленными справа пробелами:

TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)

Возвращает строку str со всеми remstr префиксами и/или прибавляет удаленный. Если ни один из спецификаторов BOTH | LEADING | TRAILING не указан, по умолчанию принимается BOTH. Если не определен параметр remstr, то он по умолчанию принимается равным пробелу.

SOUNDEX (str)

Возвращает soundex строку для str. Две строки, которые кажутся почти тем же самым, должны иметь идентичные soundex строки. Стандартная soundex строка — 4 символа длины, но SOUNDEX (), функция возвращает строку произвольной длины. Все неалфавитно-цифровые символы игнорируются. Все международные алфавитные символы вне диапазона A-Z обработаны как гласные:

SPACE(N)

Возвращает строку, состоящую из N пробелов:

REPLACE(str,from_str,to_str)

Возвращает строку str со всеми всеми возникновениями строки from_str замененный строкой to_str:

REPEAT(str,count)

Возвращает строку, состоящую из строки str, повторенной count раз. Если count (\) для того, чтобы выдать корректный результат.

Soundex

Php функции


Php скрипты


soundex

(PHP 3, PHP 4, PHP 5)

soundex — Возвращает ключ soundex для строки

Описание

string soundex ( string str )

Возвращает ключ soundex для строки str .

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

Данная реализация функции soundex описана Дональдом Кнутом (Donald Knuth) в книге «The Art Of Computer Programming, vol. 3: Sorting And Searching», Addison-Wesley (1973), стр. 391-392.

Пример 1. Примеры soundex

soundex ( «Euler» ) == soundex ( «Ellery» ); // E460
soundex ( «Gauss» ) == soundex ( «Ghosh» ); // G200
soundex ( «Hilbert» ) == soundex ( «Heilbronn» ); // H416
soundex ( «Knuth» ) == soundex ( «Kant» ); // K530
soundex ( «Lloyd» ) == soundex ( «Ladd» ); // L300
soundex ( «Lukasiewicz» ) == soundex ( «Lissajous» ); // L222
?>

User Contributed Notes

Since the first letter is included in the phonetic representation in the output, it is worth pointing out that if you want a soundex key to work without the problems of klansy and clansy sounding different, take the substring from the first letter, as the first letter is the main constant of the word, and the numerical value is that of the phontic structure of the word.
crchafer-php at c2se dot com
13-Sep-2005 07:25

Rewritten, maybe — but the algorithm has some obvious
optimisations which can be done, for example.

function text__soundex( $text ) <
$k = ‘ 123 12 22455 12623 1 2 2’;
$n l = strlen ( $tN = strtoupper ( $text ) );
$p = trim ( $k < ord ( $tS = $tN < 0 >) — 65 > );
for ( $n = 1; $n $n l ; ++ $n )
if ( ( $l = trim ( $k < ord ( $tN < $n >) — 65 > ) ) != $p )
$tS .= ( $p = $l );
return substr ( $tS . ‘000’, 0, 4 );
>

// Notes:
// $k is the $k ey , essentially $SoundKey inverted
// $tN is the uppercase of the text to be optimised
// $tS is the partaully generated output
// $l is the current letter, $p the previous
// $n and $n l are iteration indicies
// 65 is ord (‘A’), precalculated for speed
// none ascii letters are not supported
// watch the brackets, quite a mixture here

(Code has suffered only basic tests, though it appears to
match the output of PHP’s soundex (), speed untested —
though this should be /much/ faster than a4_perfect’s
rewrite due to the removal of most loops and compares.)

C
2005-09-13
a4_perfect at mail dot ru
01-Aug-2005 05:18

Even be rewritten, function of [ administrator at zinious dot com ] is slower than soundex () for approx 30 times:

function MakeSoundEx ( $s tr ingtomakesoundexof )
<
$temp_Name = strtoupper ( $s tr ingtomakesoundexof );
$SoundKey = array ( 1 => «BPFV» , «CSKGJQXZ» , «DT» , «L» , «MN» , «R» , «AEHIOUWY» );
$temp_Last = «» ;
$temp_Soundex = substr ( $temp_Name , 0 , 1 );

for ( $x = 1 ; $x sizeof ( $SoundKey ); $x ++)
for ( $i = 0 ; $i strlen ( $SoundKey [ $x ] ); $i ++)
if ( $temp_Soundex == substr ( $SoundKey [ $x ] , $i — 1 , 1 ))
$temp_Last = (string)( $x == 7 ? «» : $x );

for ( $n = 1 ; $n strlen ( $temp_Name ); $n ++)
if ( strlen ( $temp_Soundex ) <
for ( $x = 1 ; $x sizeof ( $SoundKey ); $x ++)
for ( $i = 0 ; $i strlen ( $SoundKey [ $x ] ); $i ++)
if ( substr ( $temp_Name , $n — 1 , 1 )== substr ( $SoundKey [ $x ] , $i — 1 , 1 ))
<
if ( $x $temp_Last !=(string) $x )
$temp_Soundex = $temp_Soundex . $x ;
$temp_Last = (string)( $x );
>
>

return $temp_Soundex . str_repeat ( «0» , 4 — strlen ( $temp_Soundex ));
>
?>

Marc Quinton.
06-Jan-2005 05:53


a French soundex version ; could be used for other foreigns languages where soudex lacks. Perhaps, a class with each language specifics could be writen.

justin at NO dot blukrew dot SPAM dot com
21-Sep-2004 03:18

I originally looked at soundex () because I wanted to compare how indiv >soundex and metaphone wouldn’t do this (they work for words), so I wrote the following to help out. The >each new character with the preceeding characters. I’d be interested in recieving any feedback on this. Thanks.

function chrSoundAlike ( $char1 , $char2 , $opts = FALSE ) <
$char1 = strtoupper ( $char1 );
$char2 = strtoupper ( $char2 );
$opts = strtoupper ( $opts );

// Setup the sets of characters that sound alike.
// (Options: include numbers, include W, include both, or default is none of those.)
switch ( $opts ) <
case ‘NUMBERS’ :
$s ets = array ( 0 => array ( ‘A’ , ‘J’ , ‘K’ ),
1 => array ( ‘B’ , ‘C’ , ‘D’ , ‘E’ , ‘G’ , ‘P’ , ‘T’ , ‘V’ , ‘Z’ , ‘3’ ),
2 => array ( ‘F’ , ‘S’ , ‘X’ ),
3 => array ( ‘I’ , ‘Y’ ),
4 => array ( ‘M’ , ‘N’ ),
5 => array ( ‘Q’ , ‘U’ , ‘W’ ));
break;

case ‘STRICT’ :
$s ets = array ( 0 => array ( ‘A’ , ‘J’ , ‘K’ ),
1 => array ( ‘B’ , ‘C’ , ‘D’ , ‘E’ , ‘G’ , ‘P’ , ‘T’ , ‘V’ , ‘Z’ ),
2 => array ( ‘F’ , ‘S’ , ‘X’ ),
3 => array ( ‘I’ , ‘Y’ ),
4 => array ( ‘M’ , ‘N’ ),
5 => array ( ‘Q’ , ‘U’ , ‘W’ ));
break;

case ‘BOTH’ :
$s ets = array ( 0 => array ( ‘A’ , ‘J’ , ‘K’ ),
1 => array ( ‘B’ , ‘C’ , ‘D’ , ‘E’ , ‘G’ , ‘P’ , ‘T’ , ‘V’ , ‘Z’ , ‘3’ ),
2 => array ( ‘F’ , ‘S’ , ‘X’ ),
3 => array ( ‘I’ , ‘Y’ ),
4 => array ( ‘M’ , ‘N’ ),
5 => array ( ‘Q’ , ‘U’ , ‘W’ ));
break;

default:
$s ets = array ( 0 => array ( ‘A’ , ‘J’ , ‘K’ ),
1 => array ( ‘B’ , ‘C’ , ‘D’ , ‘E’ , ‘G’ , ‘P’ , ‘T’ , ‘V’ , ‘Z’ ),
2 => array ( ‘F’ , ‘S’ , ‘X’ ),
3 => array ( ‘I’ , ‘Y’ ),
4 => array ( ‘M’ , ‘N’ ),
5 => array ( ‘Q’ , ‘U’ ));
break;
>

// See if $char1 is in a set.
$matchset = array ();
for ( $i = 0 ; $i count ( $s ets ); $i ++) <
if ( in_array ( $char1 , $s ets [ $i ] )) <
$matchset = $s ets [ $i ] ;
>
>

// IF char2 is in the same set as char1, or if char1 and char2 and the same, then return true.
if ( in_array ( $char2 , $matchset ) OR $char1 == $char2 ) <
return TRUE;
> else <
return FALSE;
>
>
?>

mail at gettheeawayspam dot iaindooley dot com
11-Jul-2003 10:04

The soundex ‘different letter in front’ problem can be solved by using levenshtein () on the soundex codes. in my application, which is searching a database of album names for entries that match a particular user provided string, i do the following:

1. Search the database for the exact name
2. Search the database for entries where the name occurs anyway as a string
3. Search the database for entries where any of the words in the name ( if the user has typed in more than one word) is present, except for little words (and, the, of etc)
4. Then, if all this fails, I go to plan b:

— calculate the levenshtein distance ( levenshtein ()) between the user search term and each of the entries in the database as a percentage of the length of the user search term entered

— calculate the levenshtein distance between the metphone codes of the user search term entered and each field in the database as a percentage of the length of the metaphone code of the user search term entered

— calculate the levenshtein distance between the soundex codes of the user search term entered and each field in the database as a percentage of the length of the soundex code of the original user search term entered

if any of these percentages is less than 50 (means that two soundex codes with different first letters will be accepted!!) then the entry is accepted as a possible match.
php.net AT djwice DoT com
26-Jun-2003 04:01

Ik made the Soundex in JavaScript.

Explanation of the algoritm is on the above page.
It returns two values if a name has «van der» or something alike in it. One with that in the Soundex test and one without.

The use of regular expressions makes the ectual soundex algoritm short. Two conditions of the algoritm I did remove because in this implementation they are redundant.

pee whitt at dental dot ufl dor edu
09-Jun-2003 05:12

fie at myrealbox dot com-

regarding your soudex syllable request- i think counting vowel clusters in the word will result in an accurate count of syllables. so no soudex feature is necessary, just count through the chars in the word, and everytime you run from vowel to consanant, increment the syllable count.

using this logic, this sentence is categorized as follows.
2 1 2 1 1 (3) (0) (4) (0) 2

where (#) marks a word that is incorrectly categorized. i’m sure usiong a little thinking one could figure out the logic in those cases that would result in an accurate count. counting changes from vowel to consanant would yield-
(1) 1 2 1 2 1 (4) 1 2

taking the average and then cieling of the two types would fix most of the errors.
fie at myrealbox dot com
09-Mar-2003 04:29

eek. hosting got taken down on that server.. here’s the code for the previous

function cg_sylc( $n os ) <
$n os = strtoupper ( $n os );
$s yl lables = 0;

$before = strlen ( $n os );
$n os = str_replace (array(‘AA’,’AE’,’AI’,’AO’,’AU’,
‘EA’,’EE’,’EI’,’EO’,’EU’,’IA’,’IE’,’II’,’IO’,
‘IU’,’OA’,’OE’,’OI’,’OO’,’OU’,’UA’,’UE’,
‘UI’,’UO’,’UU’), «», $n os );
$after = strlen ( $n os );
$diference = $before — $after ;
if ( $before != $after ) $s yl lables += $diference / 2;

if ( $n os [ strlen ( $n os )-1 ] == «E») $s yl lables —;
if ( $n os [ strlen ( $n os )-1 ] == «Y») $s yl lables ++;

$before = $after ;
$n os = str_replace (array(‘A’,’E’,’I’,’O’,’U’),»», $n os );
$after = strlen ( $n os );
$s yl lables += ( $before — $after );

return $s yl lables ;
>

function cg_SoundEx( $SExStr ) <
$s yl = cg_sylc( $SExStr );
$SExStr = strtoupper ( $SExStr );

for ( $i = 1, $i i = 2, print $SExStr [ 0 ] ; ; $i i ++) <

if (( $SExStr [ $i ] != $SExStr [ $i i ] )) <
$tsstr .= $SExStr [ $i i ] ;
$i ++;
>
if ( $SExStr [ $i i ] == false) <
break;
>
>

$tsstr = str_replace (array(‘A’, ‘E’, ‘H’, ‘I’, ‘O’, ‘U’, ‘W’, ‘Y’), «», $tsstr );
$tsstr = str_replace (array(‘B’, ‘F’, ‘P’, ‘V’), «1», $tsstr );
$tsstr = str_replace (array(‘C’, ‘G’, ‘J’, ‘K’, ‘Q’, ‘S’, ‘X’, ‘Z’, ‘З’), «2», $tsstr );
$tsstr = str_replace (array(‘D’, ‘T’), «3», $tsstr );
$tsstr = str_replace (array(‘L’), «4», $tsstr );
$tsstr = str_replace (array(‘M’, ‘N’, ‘С’), «5», $tsstr );
$tsstr = str_replace (array(‘R’), «6», $tsstr );

while ( $i i i <
if ( $tsstr [ $i i i ] != false) <
$ttsstr .= $tsstr [ $i i i ] ;
> else <
$ttsstr .= «0»;
>
$i i i ++;
>
$ttsstr .= $s yl ;
print $ttsstr ;
>
fie at myrealbox dot com
26-Feb-2003 04:34

administrator at zinious dot com:

Sorry but your code wasnt soundex compliant
here were my results with your code, my code, and the default..

string: rest
R620 perform administrator’s function 0.009452
R230 perform cg’s function 0.001779
R230 perform default soundex function 9.4999999999956E-005


string: reset
R620 perform administrator’s function 0.0055900000000001
R230 perform cg’s function 0.00091799999999997
R230 perform default soundex function 0.00010600000000005

i dunno why the default, every once in a while , will for some reason be 9.xxx. very odd i think..
my code is at the bottom.. these tests were before the soundex modification as i discribe below..
btw for all the original specs on the soundex algorithm goto

dalibor dot toth at podravka dot hr:

yes it is perhaps sad that it gives you the same code,
even metaphone has that problem..
but one might not want to be so accurate.. if somone
is on search engine.. lets call it shmoogle looking
for «php array reset» and search for «php array rest»
then shmoogle might return stuff about beds and such..
( if they were all stupid and didnt use the first words
as more important) so anyways shmoogle might need it to
be less accurate in such cases.. but nonetheless..
my fix for this is to add the number of syllables at the end of the string making it 5 characters long..
this would work as fallows..

or if you wanted to just use the default soundex function

$s tr = soundex ( $s tr ).cg_sylc( $s tr );

revolutionary more or less.. problly less.
This function is only meant for one word though.. i’d like to see someone
modify it to use split and run it through a loop to get each words cg_soundex
that’ll be fun ;)
i would also like to sujest to the php zend apache kinda people who make php
to add an optional additional variable the user can specify as fallows

which would return the number of syllables at the end of the string
highly accurate sound testing woo! also you could add VOW for vowels
and CONS for consonant or whatever else someone would want..
but i really think the number of syllables will be pleanty efficiant.
umm.. if this helps anyone your welcome.. ummm.. good luck in all
your php adventures.. oh. and the final results

syllables
1 rest
2 reset
metaphone
RST rest
RST reset
soundex
R230 rest
R230 reset

string: rest
R2301 perform cg’s function 0.00211
R230 perform default soundex function 0.00011299999999997

string: reset
R2302 perform cg’s function 0.001691
R230 perform default soundex function 0.00010399999999999

the default function is a tad bit faster..
so maybe they will add this option and we’ll have speed and accuracy.

SILENT WIND OF DOOM WOOSH!
jr
16-Jan-2003 08:25

a workaround for the mysql/php differences in implementation of soundex is to do the soundex comparison entirely within mysql.

for example:
$s ql = «SELECT * FROM table WHERE substring( soundex (field), 1, 4) = substring( soundex (‘». $wordsearch .»‘), 1, 4)»;
info at nederlandsch dot net
20-Dec-2002 04:26

MySQL soundex (3.23.49) doesn’t examine the first character at all to see whether it should be skipped. Therefore the Dutch name of The Hague, the country’s government seat, ‘s-Gravenhage will give a soundex value of ‘261 in MySQL and S615 in PHP.
bestworldweb At yahoo NOSPAM dot co.nz
10-Dec-2002 09:27

Mysql seems to use 0 in the letter V instead of 1, which is what php uses (and most soundex functions)
fred AT oicgroup.net
12-Nov-2002 02:35

I am finding a peculiarity in using the Soundex function in PHP (4.2.2) against the one in MySql (3.23.39) . For instance, a soundex on the word «purchased» in PHP results in ‘P622’. The same word using the MySql Soundex function results in ‘P623’. The word ‘five’ using PHP results in ‘F100’ while MySql results in ‘F000’. I have only caught a couple that are different so far — don’t know if it’s a bug in either PHP or MySql or something than can be adjusted/accounted for in code.

Fred Dirkse
OIC Group, Inc.
www.oicgroup.net
dalibor dot toth at podravka dot hr
30-Sep-2002 02:50

Apart from Clansy nad Klansy, using strings «rest» and «reset» with soundex () gives you: 1. R230, 2. R230. Pitty.
dcallaghan at linuxmail dot org
11-Jun-2002 03:25

Although the standard soundex string is 4 characters long, and this is what’s returned by the php function, some database programs return an arbitrary number of strings. MySQL, for instance.

The MySQL documentation covers this, recommending that you may wish to use substring to output the standard 4 characters. Let’s take ‘Dostoyevski’ as an example.

select soundex («Dostoyevski»)
returns D2312
select substring( soundex («Dostoyevski»), 1, 4);
returns D231

PHP will return the value as ‘D231’

So, to use the soundex function to generate a WHERE parameter in a MySQL SELECT statement, you might try this:
$s = soundex (‘Dostoyevski’);
SELECT * FROM authors WHERE substring( soundex (lastname), 1 , 4) = «‘ . $s . ‘»‘;

Or, if you want to bypass the php function
$result = mysql_query(«select soundex (‘Dostoyevski’)»);
$s = mysql_result( $result , 0, 0);
witold4249 at rogers dot com
17-May-2002 09:11

A MUCH easier way to check for similarity between words and avoid the problems that come up with Klancy/Clancy would be to simply add any letter infront of the string

ie: OKlancy/OClancy
17-May-2002 09:07

A MUCH easier way to do the above search would be to simply add any letter in front of the string and then compare them.

ie. Klancy => LKlancy
Clancy => LClancy
bb79 at no_spam dot com
11-Apr-2002 12:29

To search for words like Clansy and Klansy, just reverse the strings:

$s 1 = «Clansy»;
$s 2 = «Klansy»;
if (( soundex ( $s 1 ) == soundex ( $s 2 )) ||
( soundex (strrev( $s 1 )) == soundex (strrev( $s 2 ))))
echo («Match»);
administrator at zinious dot com
10-Apr-2002 07:21

I wrote this function a long time ago in CGI-perl and then translated ( if you can call it that) into PHP. A little clunky to say the least, but should handle true soundex specs 100%:

function MakeSoundEx( $s tr ingtomakesoundexof )
<
$temp_Name = $s tr ingtomakesoundexof ;
$SoundKey 1 = «BPFV»;
$SoundKey 2 = «CSKGJQXZ»;
$SoundKey 3 = «DT»;
$SoundKey 4 = «L»;
$SoundKey 5 = «MN»;
$SoundKey 6 = «R»;
$SoundKey 7 = «AEHIOUWY»;

$temp_Name = strtoupper ( $temp_Name );
$temp_Last = «»;
$temp_Soundex = substr ( $temp_Name , 0, 1);

$n = 1;
for ( $i = 0; $i strlen ( $SoundKey 1 ); $i ++)
<
if ( $temp_Soundex == substr ( $SoundKey 1 , i — 1, 1))
<
$temp_Last = «1»;
>
>
for ( $i = 0; $i strlen ( $SoundKey 2 ); $i ++)
<
if ( $temp_Soundex == substr ( $SoundKey 2 , i — 1, 1))
<
$temp_Last = «2»;
>
>
for ( $i = 0; $i strlen ( $SoundKey 3 ); $i ++)
<
if ( $temp_Soundex == substr ( $SoundKey 3 , i — 1, 1))
<
$temp_Last = «3»;
>
>
for ( $i = 0; $i strlen ( $SoundKey 4 ); $i ++)
<
if ( $temp_Soundex == substr ( $SoundKey 4 , i — 1, 1))
<
$temp_Last = «4»;
>
>
for ( $i = 0; $i strlen ( $SoundKey 5 ); $i ++)
<
if ( $temp_Soundex == substr ( $SoundKey 5 , i — 1, 1))
<
$temp_Last = «5»;
>
>
for ( $i = 0; $i strlen ( $SoundKey 6 ); $i ++)
<
if ( $temp_Soundex == substr ( $SoundKey 6 , i — 1, 1))
<
$temp_Last = «6»;
>
>
for ( $i = 0; $i strlen ( $SoundKey 6 ); $i ++)
<
if ( $temp_Soundex == substr ( $SoundKey 6 , i — 1, 1))
<
$temp_Last = «»;
>
>

while ( strlen ( $temp_Soundex ) <
$temp_Soundex = $temp_Soundex .»0″;
>

// — end code—
cap at capsi dot cx
13-Dec-1999 06:16

soundex () unfortunately is very sensitive about the first character. It is not possible to use it and have Clansy and Klansy return the same value. If you want to do a phonetic search on such names you will still need to write a routine to evaluate C452 as being similar to K452.

Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite


Базы данных

SOUNDEX ФУНКЦИЯ

В этом учебном пособии вы узнаете, как использовать Oracle/PLSQL функцию SOUNDEX с синтаксисом и примерами.

Описание

Функция Oracle/PLSQL SOUNDEX возвращает фонетическое представление (так, как это звучит) строки.

Синтаксис

Синтаксис функции Oracle/PLSQL SOUNDEX:

Параметры или аргументы

string1 строка, фонетическое значение которой будет возвращено.

Примечание

  • Возвращаемое значение функции SOUNDEX всегда будет начинаться с первой буквы string1 .
  • Функция SOUNDEX использует только первые 5 согласных определяющие числовой части возвращаемого значения, за исключением случаев, если первая буква string1 является гласной.
  • Функция SOUNDEX не чувствительна к регистру. Что это означает, что и большие и маленькие буквы будут генерировать то же значение возвращаемого функцией SOUNDEX.

Применение

Функцию SOUNDEX можно использовать в следующих версиях Oracle/PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Пример

Рассмотрим несколько примеров функции SOUNDEX и изучим, как использовать функцию SOUNDEX в Oracle/PLSQL.

Soundex — Возвращает ключ soundex для строки

ПРИМЕНЯЕТСЯ К: SQL Server (начиная с 2008) База данных SQL Azure Хранилище данных SQL Azure Parallel Data Warehouse

Возвращает четырехсимвольный код (SOUNDEX) для оценки степени сходства двух строк.

character_expression
Алфавитно-цифровое выражение символьных данных. character_expression может быть константой, переменной или столбцом.

varchar

Функция SOUNDEX преобразует алфавитно-цифровую строку в&4;-символьный код, чье значение зависит от способа звучания строки при произношении. Первый символ кода является первым символом character_expression, преобразованного в верхний регистр. Второй, третий и четвертый символы кода являются числами, которые обозначают буквы в выражении. Буквы A, E, I, O, U, H, W и Y игнорируются, если только не являются первой буквой строки. Нули добавляются в конце при необходимости производить четырехсимвольный код. Дополнительные сведения о коде SOUNDEX. в разделе Soundex индексирования система.

Коды SOUNDEX из разных строк можно сравнивать, чтобы узнать, насколько похоже звучат строки при произношении. Функция DIFFERENCE выполняет SOUNDEX по двум строкам и возвращает целое число, представляющее сходство кодов SOUNDEX для этих строк.

Функция SOUNDEX учитывает параметры сортировки. Строковые функции могут быть вложенными.

В предыдущих версиях SQL Server в функции SOUNDEX использовалось подмножество правил SOUNDEX. При уровне совместимости базы данных, равном 110 или выше, SQL Server применяет более полный набор правил.

После обновления до уровня совместимости 110 или выше, может потребоваться перестроить индексы, кучи или ограничения CHECK, которые используется функция SOUNDEX.

Кучу, которая содержит материализованный вычисляемый столбец, определенный функцией SOUNDEX, нельзя запрашивать, пока она не будет перестроена с помощью инструкции ALTER TABLE

REBUILD .

При повышении уровня совместимости ограничения CHECK, определенные функцией SOUNDEX, отключаются. Чтобы включить ограничение, выполните инструкцию ALTER TABLE

WITH CHECK CHECK CONSTRAINT ALL .

Запросы к индексам (в том числе индексированным представлениям), которые содержат материализованный вычисляемый столбец, определенный функцией SOUNDEX, можно выполнять только после их перестроения с помощью инструкции ALTER INDEX ALL ON REBUILD .

Следующий пример демонстрирует использование функции SOUNDEX и связанной с ней функции DIFFERENCE. В первом примере стандартные значения SOUNDEX возвращаются для всех согласных. Возвращение функции SOUNDEX для Smith и Smythe выдает одинаковый результат SOUNDEX, поскольку все гласные, буквы y и h , а также удвоенные буквы не включаются.

Ниже приводится результирующий набор.Допустимо для сортировки Latin1_General.

Функция DIFFERENCE производит сравнение результатов шаблонов SOUNDEX . В следующем примере показаны две строки, различающиеся только по гласной. Возвращенное значение 4 означает максимальное сходство.

Ниже приводится результирующий набор.Допустимо для сортировки Latin1_General.

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

Ниже приводится результирующий набор.Допустимо для сортировки Latin1_General.


Следующий пример демонстрирует использование функции SOUNDEX и связанной с ней функции DIFFERENCE. В первом примере стандартные значения SOUNDEX возвращаются для всех согласных. Возвращение функции SOUNDEX для Smith и Smythe выдает одинаковый результат SOUNDEX, поскольку все гласные, буквы y и h , а также удвоенные буквы не включаются.

Ниже приводится результирующий набор.Допустимо для сортировки Latin1_General.

Функция DIFFERENCE производит сравнение результатов шаблонов SOUNDEX . В следующем примере показаны две строки, различающиеся только по гласной. Возвращенное значение 4 означает максимальное сходство.

Ниже приводится результирующий набор.Допустимо для сортировки Latin1_General.

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

Ниже приводится результирующий набор.Допустимо для сортировки Latin1_General.

Soundex — Возвращает ключ soundex для строки

ПРИМЕНЯЕТСЯ К: SQL Server (начиная с 2008) База данных SQL Azure Хранилище данных SQL Azure Parallel Data Warehouse

Возвращает четырехсимвольный код (SOUNDEX) для оценки степени сходства двух строк.

character_expression
Алфавитно-цифровое выражение символьных данных. character_expression может быть константой, переменной или столбцом.

varchar

Функция SOUNDEX преобразует алфавитно-цифровую строку в&4;-символьный код, чье значение зависит от способа звучания строки при произношении. Первый символ кода является первым символом character_expression, преобразованного в верхний регистр. Второй, третий и четвертый символы кода являются числами, которые обозначают буквы в выражении. Буквы A, E, I, O, U, H, W и Y игнорируются, если только не являются первой буквой строки. Нули добавляются в конце при необходимости производить четырехсимвольный код. Дополнительные сведения о коде SOUNDEX. в разделе Soundex индексирования система.

Коды SOUNDEX из разных строк можно сравнивать, чтобы узнать, насколько похоже звучат строки при произношении. Функция DIFFERENCE выполняет SOUNDEX по двум строкам и возвращает целое число, представляющее сходство кодов SOUNDEX для этих строк.

Функция SOUNDEX учитывает параметры сортировки. Строковые функции могут быть вложенными.

В предыдущих версиях SQL Server в функции SOUNDEX использовалось подмножество правил SOUNDEX. При уровне совместимости базы данных, равном 110 или выше, SQL Server применяет более полный набор правил.

После обновления до уровня совместимости 110 или выше, может потребоваться перестроить индексы, кучи или ограничения CHECK, которые используется функция SOUNDEX.

Кучу, которая содержит материализованный вычисляемый столбец, определенный функцией SOUNDEX, нельзя запрашивать, пока она не будет перестроена с помощью инструкции ALTER TABLE

REBUILD .

При повышении уровня совместимости ограничения CHECK, определенные функцией SOUNDEX, отключаются. Чтобы включить ограничение, выполните инструкцию ALTER TABLE

WITH CHECK CHECK CONSTRAINT ALL .

Запросы к индексам (в том числе индексированным представлениям), которые содержат материализованный вычисляемый столбец, определенный функцией SOUNDEX, можно выполнять только после их перестроения с помощью инструкции ALTER INDEX ALL ON REBUILD .

Следующий пример демонстрирует использование функции SOUNDEX и связанной с ней функции DIFFERENCE. В первом примере стандартные значения SOUNDEX возвращаются для всех согласных. Возвращение функции SOUNDEX для Smith и Smythe выдает одинаковый результат SOUNDEX, поскольку все гласные, буквы y и h , а также удвоенные буквы не включаются.

Ниже приводится результирующий набор.Допустимо для сортировки Latin1_General.

Функция DIFFERENCE производит сравнение результатов шаблонов SOUNDEX . В следующем примере показаны две строки, различающиеся только по гласной. Возвращенное значение 4 означает максимальное сходство.

Ниже приводится результирующий набор.Допустимо для сортировки Latin1_General.

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

Ниже приводится результирующий набор.Допустимо для сортировки Latin1_General.

Следующий пример демонстрирует использование функции SOUNDEX и связанной с ней функции DIFFERENCE. В первом примере стандартные значения SOUNDEX возвращаются для всех согласных. Возвращение функции SOUNDEX для Smith и Smythe выдает одинаковый результат SOUNDEX, поскольку все гласные, буквы y и h , а также удвоенные буквы не включаются.

Ниже приводится результирующий набор.Допустимо для сортировки Latin1_General.

Функция DIFFERENCE производит сравнение результатов шаблонов SOUNDEX . В следующем примере показаны две строки, различающиеся только по гласной. Возвращенное значение 4 означает максимальное сходство.

Ниже приводится результирующий набор.Допустимо для сортировки Latin1_General.

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

Ниже приводится результирующий набор.Допустимо для сортировки Latin1_General.

Soundex — Возвращает ключ soundex для строки

(PHP 3, PHP 4, PHP 5)

soundex — Возвращает ключ soundex для строки

Описание string soundex ( string str )

Возвращает ключ soundex для строки str .

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

Данная реализация функции soundex описана Дональдом Кнутом (Donald Knuth) в книге «The Art Of Computer Programming, vol. 3: Sorting And Searching», Addison-Wesley (1973), стр. 391-392.

Пример 1. Примеры soundex

( «Euler» ) == soundex ( «Ellery» ); // E460
soundex ( «Gauss» ) == soundex ( «Ghosh» ); // G200
soundex ( «Hilbert» ) == soundex ( «Heilbronn» ); // H416
soundex ( «Knuth» ) == soundex ( «Kant» ); // K530
soundex ( «Lloyd» ) == soundex ( «Ladd» ); // L300
soundex ( «Lukasiewicz» ) == soundex ( «Lissajous» ); // L222
?>


Пред. Начало След.
similar_text Уровень выше sprintf

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

All-Audio.pro

Статьи, Схемы, Справочники

Soundex

Автор: Lloyd Функция Soundex определяет схожесть звучания двух слов. Алгоритм Soundex опубликован в одной из статей журнала PC Magazine и предназначен для работы с английским языком может кто-нибудь портирует для работы с нашим могучим? Функции передается строка. Возвращаемое Soundex значение также имеет тип строки.

Поиск данных по Вашему запросу:

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

Перейти к результатам поиска >>>

Soundex.ru

Сакраментальная фраза все чаще мне вспоминается к самому любимому еще недавно форуму. Запостить тему же окончательно сподвигла ненормальная какая-то ажиатация вокруг очередного Юриного обзора. Действительно есть впечатление, что текст уже и не нужен, все решено. И если бы не обстоятельства, мне кажется что обзор бы и не стоило там размещать. Возможно, у меня кризис очередного среднего возраста и происходит просто смена поколений, но уж очень меня становящаяся манера общаться все больше напрягает.

Хотя есть чувство, что людей случайных — много. Раньше сайт не был проходным местом, сейчас же Умников, при может быть и достаточных знаниях, но троллящих по манере общения, хватает. Для меня косвенным доказательством, что я не одинок, является все увеличивающееся количество Приличных людей покидающих форум. С одной стороны Сундук остается местом силы и действительной отдушиной для многих людей, с другой же стороны все более практикующиеся навязывание собственного мнения, и нетерпимость к чужому расстраивает.

При этом уже даже мне, знающему во многом подоплеку, становится непонятно, где в этом коммерческий подтекст, а где искреннее чувство. В кратце сумма притензий. Интересно, — кто что думает. Отношение dmitre мне понятно, иначе DAStereo бы не было. А так же тема Мурата и Мишукова реалитишоу, развивающиеся по принципу случайностей почему то собирающие толпы флудорезов и прочих мозголомов включая русхаендовцев.

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

Про аудио и даже про музыку там писать что то более менее нормальное уже желания точно нет. Хотя я ни кого не боюсь и постоять за свое мнение и обосновать его аргументировать докопаться до тех кто сморозил чушь я легко умею и смогу, особенно там где мне есть что сказать. Да понятно, что Naim, AudioNote и т. Никто и не сомневается что определенные ценности у всех этих аппаратов есть, также каки искреннее к ним чувство. Речь далеко не только о коммерческом подтексте.

Меня больше манера общения смущает, крен в сторону и размывание основной идеи. Так вот же недавно еще было. О том и говорю В остальном плюсую. Я как-то более тактично пытался. Так может ещё кого-нибудь позвать из адекватных наймоводов меня остальная техника мало интересует.

Да тут дело по любви должно быть, ну а наймоводы основные тут уже зарегились вроде. Но речь о Soundex. Вот как раз ветка о найме там уже сакрементальная. Так что разумное уточнение будет насчет действительно всего soundexa, за исключением наймовской ветки. Честно, стало противно, я помню придя на сундук, не так в общем и давно, но практически сразу получил нормальный совет и начал вливаться в тему, а теперь, да ладно, проехали похожи эту тему, dmitre спасибо, и все в наших силах!

По моим наблюдениям от посещения различных форумов по аквариумистике, оружию, автомобилям, компожелезкам, кино, виски и сотне других увлечений, однозначно одно!. Уверяю вас, рано или поздно и тут в какой-то мере будет срач. На всех других форумах различных тематик ругань если и бывает, то крайне локальная и не перерастает в помойку. Видимо, контингент на аудиофорумах такой, что этого явления не избежать.

Я всегда привожу в пример форум GUNS. Там сидят люди и с нарезным оружием и помешанные на апокалипсисе, но позорных склок не видел там ни разу.

Казалось бы, почему? Все это, самом собой отбивает всякую охоту общаться вообще. Относительно ресурса Саундекс: у меня совершенно нет желания обливать ресурс и его руководство грязью, так как это хороший ресурс и замечательные люди.

Просто раньше там было много очень интересных авторов, а сейчас их практически не осталось. Так как я там проживал порядка 10 лет, все происходило на моих глазах. Мне просто стало там не интересно, мне просто нечего там почитать. Курс на коммерциализацию Саундекса, мне, как человеку, понятен. Ресурс может и должен приносить прибыль его владельцам, но, видимо, при этом, не удержать ту атмосферу, которая была в годах. Остается только пожелать успехов владельцам Саундекса и активным, адекватным пользователям данного сайта в их труде, подчас неблагодарном и трудном.

Ну да, есть ощущение, что народ с легкой издевкой ожидает отчета про Metrum Pavane. К слову, я сегодня его послушал…хорошо так, основательно, поэтому мое мнение тоже будет, возможно только здесь. Эд, очень правильно сказал что Сундук — это хороший ресурс и замечательные люди.

Потому и обидно вот несколько. За тот же срач. А вот тут изначально форум за увлечение в общем, поэтому по доброму должно быть. Хотя цикл жизни никто не отменяет…. Когда находишься долго в атмосфере неприязни, издевок и жесткого стеба, невольно сам начинаешь мимикрировать. Не раз, за собой такое замечал.

Ну, ты понимаешь, о чем я. Внутренний голос ругается, сам ощущаешь, что нужно что-то делать, что эта ситуация некрасивая и вообще все гадко и подло. А куда идти, выбора нет?! Поэтому продолжаешь вариться в этом киселе. Сейчас для меня гораздо важнее атмосфера, чем стремление доказать кому-то свою точку зрения. Я не зря упомянул ранние годы Саундекса, там была именно атмосфера, полчаса невозможно было прожить, чтобы рука сама не тянулась зайти на форум.

Надеюсь, что у нас будет также. Сундук увядал довольно долго. Когда они украсили все рекламой, я молчал, я же могу терпеть рекламу. Потом они переехали на новый движок, я молчал, я же могу дожидаться загрузки 15 секунд. А потом они стали продавать меня продавцам аудио-техники, я молча открыл dastereo.

Я сам застал золотое время Сундука, постараемся сделать еще лучше! Есть очень много интересных тем. Уходят те, кому не надо ничего доказывать кому то. Уходят те кто не чувствует себя неполноценным с системой за уе. Уходят те, кто слушает, а не смотрит. Soundex «уже не тот»? Rad Radoslav Русские производители аудио-техники. Очень легко! РосХайЕнд: есть ли перспективы? Как я попал в Стерео-бар — приветствуем гостей.

Новости стерео-бара. Короче полный набор порока беда в том что это центральный аудиофорум раши. А как сюда люди попадают? Так же как и я, по наводке здешнего участника? IvanSP Ivan Nait Eduard Leonov Да мне кажется ты должен быть в теме. Мое мнение таково. Во-во, и я о том же.

Последней каплей стало. У меня несколько тезисов. Будем культивировать и насаждать уважительно общение.

Значение слова soundex

Возвращает ключ soundex для строки str. Двум словам, имеющим схожее произношение, соответствует один и тот же ключ soundex. Это свойство может быть использовано, например, при поиске по базе данных, когда известно произношение слова и неизвестно его написание. Данная функция возвращает строку из 4 символов, начинающуюся с буквы. Пример 1 Примеры soundex. Добро пожаловать на форум PHP программистов!

Как определить, что два слова имеют схожее произношение

Я пытаюсь создать алгоритм, который предложит фразы стиля Mad Gab. Ввод представляет собой набор фраз. У меня также есть набор ключевых слов, которые я хотел бы использовать, когда это возможно. В настоящее время мое решение — просто грубая сила:. Тем не менее, я открыт для другой технологии, если она обеспечивает лучшее решение. Меня также интересуют любые дополнительные предложения. В частности, способы использования второго параметра metaphone для более сложных предложений. Возможно, начните с алгоритма разделения слогов в банке фраз.

Наши обзоры

Ну вот мы и завершили лекцию о строковых функциях, чему я, честно говоря, рад, потому что она получилась достаточно большой. За бортом остались лишь функции кодирования, который официально считаются строковыми и пара-тройка функций, реального применение которым не может найти даже моя необузданная фантазия. Функции кодирования информации мы рассмотрим в разделе о криптографии, а вот по поводу той пары-тройки экзотических функций… Сначала я хотел отправить Вас к официальному руководству, но вот подумал и решил все-таки их привести. Просто, как говорится, для полноты картины. Функция soundex используется для проверки правописания, когда приблизительно известно как звучит слово, но не известно, как оно пишется, и имеется словарь база данных , относительно которого можно осуществить проверку.

Как реализовать поиск Soundex (в MySql) с помощью Doctrine и Symfony 3

Нечеткий поиск — очень важная особенность поисковых систем. Вы можете реализовать нечеткий текстовый поиск в базе данных MySQL, используя комбинацию встроенных пользовательских функций, таких как сопоставление и т. В этой статье вы узнаете, как реализовать использование Soundex для доктрины в проекте Symfony. Создайте внутри папки доктрины новый класс с именем SoundexFunction. Сейчас класс существует в нашем проекте, но он не зарегистрирован.

Заключение к лекции 3

Soundex — один из алгоритмов сравнения двух строк по их звучанию. Он устанавливает одинаковый индекс для строк, имеющих схожее звучание в английском языке. Еще большую популярность этот алгоритм получил после того, как был опубликован в книге Дональда Кнута Искусство программирования, том 1. Основные алгоритмы. Wikimedia Foundation. Soundex — is a phonetic algorithm for indexing names by sound, as pronounced in English. The goal is for names with the same pronunciation to be encoded to the same representation so that they can be matched despite minor differences in spelling. We are using cookies for the best presentation of our site.

SOUNDEX É DIFFERENCE ÄÌÑ ÒÕÓÓËÏÇÏ ÑÚÙËÁ .

Is an alphanumeric expression of character data. Функция SOUNDEX преобразует алфавитно-цифровую строку в 4-символьный код, чье значение зависит от способа звучания строки при произношении. Второй, третий и четвертый символы кода являются числами, которые обозначают буквы в выражении.

Soundex (2)

Функции strlen , chr и ord. Преобразование кодировки. Работа с бинарными данными. Работа с блоками текста. Преобразование регистра. Ну вот мы и закончили главу о строковых функциях, чему я, честно говоря, рад, потому что она получилась достаточно большой.

Ответы могут быть оценены, ответы с высоким рейтингом будут отображаться сверху. Философия, наука, события, катастрофы, эзотерика. Юрий Волобуев posted a topic in Alcom , September Юрий Волобуев posted a topic in Персональное аудио , July Uploaded 8 hours ago. Uploaded September Uploaded September 9.

Фонетические алгоритмы — алгоритмы, которые сопоставляют двум словам со схожим произношением одинаковые коды, что позволяет осуществлять сравнение и индексацию множества таких слов на основе их фонетического сходства. В данном отчёте я напишу об одном из фонетических алгоритмов, который называется soundEx. Этот код получают следуя следующему алгоритму:. Реализация soundEx приводится по выше описанному алгоритму.

Илон Маск рекомендует:  Функции, специфичные для apache
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL