Hướng dẫn php soundex vs metaphone - php soundex so với metaphone
(PHP 4, PHP 5, PHP 7, PHP 8) soundex — Calculate the soundex key of a string soundex(string $string): string Soundex keys have the property that words pronounced similarly produce the same soundex key, and can thus be used to simplify searches in databases where you know the pronunciation but not the spelling. This
particular soundex function is one described by Donald Knuth in "The Art Of Computer Programming, vol. 3: Sorting And Searching", Addison-Wesley (1973), pp. 391-392. The input string. Returns the soundex key as a string with four characters. If at least one letter is contained in string, the returned string starts with a letter. Otherwise "0000" is returned. Example #1 Soundex Examples soundex("Euler") == soundex("Ellery"); // E460 nicolas dot zimmer at einfachmarke dot de ¶ 14 years ago Since soundex() does not produce optimal results for German language Please find the code below in the hope it might be useful: /** //prepare for processing foreach ( for ( foreach ( } } if ( } for ( return } Dirk Hoeschen - Feenders de ¶ 8 years ago I made some improvements to the "Cologne Phonetic" function of niclas zimmer. Key and value of the arrays are inverted to uses simple arrays instead of multidimensional arrays. Therefore all loops and iterations are not longer necessary to find the matching value for a char. The result is more reliable and five times faster than the original. class CologneHash() { static & nbsp; & nbsp; tĩnh & nbsp; & nbsp; tĩnh & nbsp; & nbsp; chức năng tĩnh công khai & nbsp; & nbsp; & nbsp; & nbsp; vì ( & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Nếu (ISSET ( & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; nếu ( & nbsp; & nbsp; & nbsp; & nbsp; vì ( & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Nếu (ISSET ( & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; nếu ( & nbsp; & nbsp; & nbsp; & nbsp; trở về ¶ } synnus tại gmail dot com 7 năm trước 'E', 'è' => 'e', 'ë' => 'e', 'Ê' => 'e', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Á' => 'a', 'à' => 'a', 'ä' => 'a', 'â' => 'a', '' ' 'A', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Ï' => 'i', '' '=>' i ',' ì '=>' i ',' í '=>' i ', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Ô' => 'o', 'ö' => 'o', 'Ò' => 'o', 'Ó' => 'o', 'õ' => 'o', '' 'O', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Ú' => 'u', 'ù' => 'u', 'û' => 'u', 'ü' => 'u', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; '. & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'é' => '' e ',' è '=>' e ',' ë '=>' e ',' Ê '=>' e ', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'á' => 'a', 'à' => 'a', 'ä' => 'a', 'â' => 'a', '' ' 'A', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'ï' => 'i', '' '=>' i ',' ì '=>' i ',' í '=>' i ', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'ô' => 'o', 'ö' => 'o', 'Ò' => 'o', 'Ó' => 'o', 'õ' => 'o', '' 'o', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'ú' => 'u', 'ù' => 'u', 'û' => 'u', 'ü' => 'u', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; '. & nbsp; & nbsp; & nbsp; $ convguin & nbsp; = mảng ('gui', 'gue', 'ga', 'go', 'gu', 'sci', 'sce', 'sc', 'ca', 'co', & nbsp; & nbsp; & nbsp; & nbsp ; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Ph '); & nbsp; & nbsp; & nbsp; & nbsp; $ convguout = mảng ('ki', 'ke', 'ka', 'ko', 'k', 'si', 'se', 'sk', 'ka', 'ko', & nbsp; & nbsp; & nbsp ; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; , 'F'); & nbsp; & nbsp; & nbsp; & nbsp; $ Convvin & nbsp; & nbsp; = mảng ('/e? (aU)/', '/([ea])? [ui] ([nm]) ([^eaioUy] | $)/', '/[ae] o? [nm] ([^Aeiouy] | $)/', & nbsp; ]? & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Nm] ($ | [^eaouiy])/','/(sc | s | c) h/', & nbsp; & nbsp; & nbsp; '/([^aeioUy1]) [^ [^Aeiouy1])/','/^kn/', & nbsp; '/C ([^aeiouy] | $)/', & nbsp; '/e (z | r) $/', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; '/c/', '/z $/', '/(?=== '' ) return ' ';$sIn = strtr( $sIn, $accents); $sIn = strtoupper( $sIn ); $sIn = preg_replace( '`[^A-Z]`', '', $sIn ); if ( strlen( $sIn ) === 1 ) return $sIn . ' '; $sIn = str_replace( $convGuIn, $convGuOut, $sIn ); $sIn = preg_replace( '`(.)\1`', '$1', $sIn ); $sIn = preg_replace( $convVIn, $convVOut, $sIn); $sIn = preg_replace( '`L?[TDX]?S?$`', '', $sIn ); $sIn = preg_replace( '`(?!^)Y([^AEOU]|$)`', '\1', $sIn); $sIn = preg_replace( '`(?!^)[EA]`', '', $sIn); return substr( $sIn . ' ', 0, 4); } ?> & nbsp; & nbsp; nếu ( ¶ $ sin === '') return '& nbsp; & nbsp; '; & nbsp; & nbsp; $ sin = strtr ($ sin, $ accent); & nbsp; & nbsp; $ sin = strtoupper ($ sin); & nbsp; & nbsp; $ sin = preg_replace ('`[^a-z]`', '', $ sin); & nbsp; & nbsp; if (strlen ($ sin) === 1) trả về $ sin. '& nbsp; & nbsp; '; & nbsp; & nbsp; $ sin = str_replace ($ convguin, $ convguout, $ sin); & nbsp; & nbsp; $ sin = preg_replace ('`(.) \ 1`', '$ 1', $ sin); & nbsp; & nbsp; $ sin = preg_replace ($ convvin, $ convvout, $ sin); & nbsp; & nbsp; $ sin = preg_replace ('`l? [tdx]? s? $`', '', $ sin); & nbsp; & nbsp; $ sin = preg_replace ('`(?!^) y ([^aeou] | $)`', '\ 1', $ sin); & nbsp; & nbsp; $ sin = preg_replace ('`(?!^) [ea]`', '', $ sin); & nbsp; & nbsp; trả về chuỗi con ($ sin. '& nbsp; & nbsp;', 0, 4);}?> Cap tại Capsi Dot Cx ¶ 22 năm trước ¶ SoundEx () thật không may là rất nhạy cảm với nhân vật đầu tiên. Không thể sử dụng nó và có Clansy và Klansy trả về cùng một giá trị. Nếu bạn muốn thực hiện tìm kiếm ngữ âm trên các tên như vậy, bạn vẫn sẽ cần viết một thói quen để đánh giá C452 tương tự như K452. Dcallaghan tại Linuxmail Dot org ¶ 20 năm trước Chọn SoundEx ("Dostoyevski") trả về D2312Select Subring (SoundEx ("Dostoyevski"), 1, 4); trả về D231 PHP sẽ trả về giá trị là 'D231' Vì vậy, để sử dụng hàm SoundEx để tạo tham số WHERE trong câu lệnh Chọn MySQL, bạn có thể thử điều này: $ s = SoundEx ('Dostoyevski'); Chọn * từ các tác giả nơi con (SoundEx (LastName), 1, 4) = = "'. $ s & nbsp;.'" '; Hoặc, nếu bạn muốn bỏ qua hàm PHP $ result = mysql_query ("chọn soundex ('dostoyevski')"); $ s = mysql_result ($ result, 0, 0); witold4249 tại Rogers dot com ¶ ¶ 20 năm trước Một cách dễ dàng hơn nhiều để kiểm tra sự tương đồng giữa các từ và tránh các vấn đề xảy ra với Klancy/Clancy sẽ chỉ đơn giản là thêm bất kỳ chữ cái nào của chuỗi tức là: & nbsp; Oklancy/oclancy Justin tại No dot blukrew dot spam dot com ¶ ¶ 17 năm trước Ban đầu tôi đã xem SOUNDEX () vì tôi muốn so sánh cách các chữ cái riêng lẻ. Vì vậy, khi phát âm một chuỗi các ký tự được tạo, sẽ dễ dàng phân biệt chúng với nhau. & NBSP; (tức là, TGDE khó phân biệt, trong khi RFQA dễ hiểu hơn). Mục tiêu là tạo ID có thể dễ dàng hiểu được với mức độ chính xác cao so với một đài phát thanh có chất lượng khác nhau. Tôi nhanh chóng nhận ra rằng SoundEx và Metaphone sẽ không làm điều này (họ làm việc cho các từ), vì vậy tôi đã viết như sau để giúp đỡ. Hàm tạo ID lặp lại gọi chrsoundalike () để so sánh từng ký tự mới với các ký tự tiền. Tôi quan tâm đến việc nhận bất kỳ phản hồi nào về điều này. Cảm ơn. mảng ('a', 'j', 'k'), & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 1 => mảng ('b', 'c', 'd', 'e', 'g', 'p', 't', 'v', 'z', '3'), & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 2 => mảng ('f', 's', 'x'), & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 3 => mảng ('i', 'y'), & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 4 => mảng ('m', 'n'), & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 5 => mảng ('q', 'u', 'w')); & nbsp; & nbsp; & nbsp; & nbsp; phá vỡ; & nbsp; & nbsp; trường hợp 'STRICT':$sets = 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':$sets = 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: $sets = 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($sets); $i++) { if (in_array($char1, $sets[$i])) { $matchset = $sets[$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; } } ?> administrator at zinious dot com ¶ 20 years ago 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%: // ---begin code--- function MakeSoundEx($stringtomakesoundexof) $temp_Name = strtoupper($temp_Name); $n = 1; for ($n =
1; $n < strlen($temp_Name); $n++) & nbsp; & nbsp; while (strlen ($ temp_soundex) <4) & nbsp; & nbsp; {& nbsp; & nbsp; & nbsp; & nbsp; $ temp_soundex = $ temp_soundex. "0"; & nbsp; & nbsp; } & nbsp; & nbsp; trả về $ temp_soundex;} // --- Mã kết thúc --- crchafer-php tại c2se dot com ¶ ¶ 16 năm trước Viết lại, có thể - nhưng thuật toán có một số điều rõ ràng có thể được thực hiện, ví dụ ... & nbsp; & nbsp; & nbsp; & nbsp; Hàm Text__SoundEx ($ text) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ k = '123 12 & nbsp; 22455 12623 1 2 2 '; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ nl = strlen ($ tn = strtoupper ($ text)); & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ p = trim ($ k {ord ($ ts = $ tn {0}) - 65}); & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; cho ($ n = 1; $ n <$ nl; ++ $ n) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; if (($ l = trim ($ k {ord ($ tn {$ n}) - 65}))! = $ p) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ ts. = ($ p = $ l); & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; trả về chuỗi con ($ ts. '000', 0, 4); & nbsp; & nbsp; & nbsp; & nbsp; } // Ghi chú: // $ k là phím $, về cơ bản là $ soundkey đảo ngược // $ tn là chữ hoa của văn bản để được tối ưu hóa // $ ts là đầu ra được tạo một phần // $ l là chữ cái hiện tại, $ P P Các chỉ số lặp đi lặp lại // $ n và $ nL là các chỉ số lặp đi lặp . C2005-09-13 fie tại myrealbox dot com ¶ 19 năm trước Quản trị viên tại Zinious Dot Com: Xin lỗi nhưng mã của bạn không tuân thủ SoundEx là kết quả của tôi với mã, mã của tôi và mặc định .. Chuỗi: REST620 thực hiện chức năng của quản trị viên 0,009452R230 Thực hiện chức năng của CG 0,001779R230 Thực hiện chức năng âm thanh mặc định 9.499999999956E-005 Chuỗi: Resetr620 thực hiện chức năng của quản trị viên 0,0055900000000001R230 Thực hiện chức năng của CG 0.0009179999999997R230 Thực hiện chức năng âm thanh mặc định 0.00010600000000005 Tôi không biết tại sao mặc định, thỉnh thoảng, sẽ vì một số lý do là 9.xxx. Tôi nghĩ rất kỳ quặc. Mã của tôi ở dưới cùng .. Các thử nghiệm này là trước khi sửa đổi SoundEx vì tôi không biết bên dưới..BTW cho tất cả các thông số kỹ thuật gốc trên thuật toán SoundEx Gotohttp: //www.star-shine.net/~ functionifelse/gfd/? word = SoundEx Dalibor Dot Toth tại Podravka Dot Hr: Vâng, có lẽ thật đáng buồn khi nó cung cấp cho bạn cùng một mã, thậm chí metaphone cũng có vấn đề đó..nhưng người ta có thể không muốn chính xác như vậy .. nếu somoneis trên công cụ tìm kiếm .. hãy gọi nó là shmoogle tìm kiếm "thiết lập lại mảng PHP" và tìm kiếm Đối với "phần còn lại của mảng PHP" thì Shmoogle có thể trả lại những thứ về giường và như vậy .. (nếu tất cả đều ngu ngốc và không sử dụng những lời nói đầu tiên quan trọng hơn) vì vậy dù sao thì Shmoogle có thể cần nó kém chính xác hơn trong những trường hợp như vậy .. nhưng dù sao .. Bản sửa lỗi của tôi cho điều này là thêm số lượng âm tiết ở cuối chuỗi làm cho nó dài 5 ký tự..không này sẽ hoạt động như Fallows .. Mã tại: http://star-shine.net/~functionifelse/cg_soundex.php Hoặc nếu bạn muốn chỉ sử dụng chức năng SoundEx mặc định $ str = SoundEx ($ str) .cg_sylc ($ str); mang tính cách mạng nhiều hay ít .. ít hơn ... chức năng này chỉ có ý nghĩa với một từ .. Tôi muốn thấy một số điều chỉnh nó để sử dụng Split và chạy nó qua một vòng lặp để có được từng từ CG_SoundExthat sẽ rất thú vị;) Tôi cũng muốn sujest đến php Zend Apache Kinda những người tạo phpto thêm một biến bổ sung tùy chọn mà người dùng có thể chỉ định là Fallows soundex("string",SYL); Điều này sẽ trả về số lượng âm tiết ở cuối bài kiểm tra âm thanh chính xác của Stringhighly Woo! Ngoài ra, bạn có thể thêm lời thề cho các khuyết điểm nguyên âm cho phụ âm hoặc bất cứ điều gì khác mà ai đó muốn..nhưng tôi thực sự nghĩ rằng số lượng âm tiết sẽ có hiệu lực. Cuộc phiêu lưu .. Ồ ... và kết quả cuối cùng âm tiết1 rest2 resetmetaphonerst resetrst resetSoundExR230 retter230 Đặt lại Chuỗi: REVERM2301 thực hiện chức năng của CG 0,00211R230 Thực hiện chức năng âm thanh mặc định 0,0001129999999997 Chuỗi: ResetR2302 Thực hiện chức năng của CG 0,001691R230 Thực hiện chức năng SoundEx mặc định 0.0001039999999999 Chức năng mặc định nhanh hơn một chút .. vì vậy có lẽ họ sẽ thêm tùy chọn này và chúng tôi sẽ có tốc độ và độ chính xác. Gió im lặng của Doom Woosh! synnus tại gmail dot com ¶ 2 năm trước /*
SOUNDEX FRENCH Ẩn danh ¶ ¶ 16 năm trước Vì chữ cái đầu tiên được bao gồm trong biểu diễn ngữ âm trong đầu ra, nên chỉ ra rằng nếu bạn muốn một khóa SoundEx hoạt động mà không có vấn đề về Klansy và Clansy nghe có vẻ khác nhau, hãy lấy phần phụ từ chữ cái đầu tiên, làm chữ cái đầu tiên là hằng số chính của từ và giá trị số là cấu trúc phontic của từ. Thư tại gettheawayspam dot iaindooley dot com ¶ ¶ 19 năm trước Có thể giải quyết vấn đề 'chữ cái khác nhau của SoundEx bằng cách sử dụng levenshtein () trên mã soundex. Trong ứng dụng của tôi, đang tìm kiếm một cơ sở dữ liệu về tên album cho các mục phù hợp với một chuỗi người dùng cụ thể, tôi thực hiện như sau: 1. Tìm kiếm cơ sở dữ liệu cho tên chính xác2. Tìm kiếm cơ sở dữ liệu cho các mục nhập nơi tên xảy ra dưới dạng String3. Tìm kiếm cơ sở dữ liệu cho các mục nhập trong đó bất kỳ từ nào trong tên (nếu người dùng đã nhập nhiều hơn một từ), ngoại trừ các từ nhỏ (và,, của v.v.) 4. Sau đó, nếu tất cả điều này thất bại, tôi đi lên kế hoạch B: - Tính khoảng cách levenshtein (levenshtein ()) giữa thuật ngữ tìm kiếm người dùng và từng mục trong cơ sở dữ liệu theo tỷ lệ phần trăm của độ dài của thuật ngữ tìm kiếm người dùng đã nhập - Tính khoảng cách Levenshtein giữa các mã metphone của thuật ngữ tìm kiếm người dùng được nhập và mỗi trường trong cơ sở dữ liệu theo phần trăm độ dài của mã metaphone của thuật ngữ tìm kiếm người dùng được nhập - Tính khoảng cách Levenshtein giữa các mã SoundEx của thuật ngữ tìm kiếm người dùng được nhập và mỗi trường trong cơ sở dữ liệu theo tỷ lệ phần trăm của mã SOUNCEX của thuật ngữ tìm kiếm người dùng gốc được nhập Nếu bất kỳ tỷ lệ phần trăm nào trong số này là nhỏ hơn 50 (có nghĩa là hai mã soundex với các chữ cái đầu tiên khác nhau sẽ được chấp nhận !!) thì mục nhập được chấp nhận là một trận đấu có thể. fie tại myrealbox dot com ¶ 19 năm trước Có thể giải quyết vấn đề 'chữ cái khác nhau của SoundEx bằng cách sử dụng levenshtein () trên mã soundex. Trong ứng dụng của tôi, đang tìm kiếm một cơ sở dữ liệu về tên album cho các mục phù hợp với một chuỗi người dùng cụ thể, tôi thực hiện như sau: 1. Tìm kiếm cơ sở dữ liệu cho tên chính xác2. Tìm kiếm cơ sở dữ liệu cho các mục nhập nơi tên xảy ra dưới dạng String3. Tìm kiếm cơ sở dữ liệu cho các mục nhập trong đó bất kỳ từ nào trong tên (nếu người dùng đã nhập nhiều hơn một từ), ngoại trừ các từ nhỏ (và,, của v.v.) 4. Sau đó, nếu tất cả điều này thất bại, tôi đi lên kế hoạch B: - Tính khoảng cách levenshtein (levenshtein ()) giữa thuật ngữ tìm kiếm người dùng và từng mục trong cơ sở dữ liệu theo tỷ lệ phần trăm của độ dài của thuật ngữ tìm kiếm người dùng đã nhập - Tính khoảng cách Levenshtein giữa các mã metphone của thuật ngữ tìm kiếm người dùng được nhập và mỗi trường trong cơ sở dữ liệu theo phần trăm độ dài của mã metaphone của thuật ngữ tìm kiếm người dùng được nhập - Tính khoảng cách Levenshtein giữa các mã SoundEx của thuật ngữ tìm kiếm người dùng được nhập và mỗi trường trong cơ sở dữ liệu theo tỷ lệ phần trăm của mã SOUNCEX của thuật ngữ tìm kiếm người dùng gốc được nhập Nếu bất kỳ tỷ lệ phần trăm nào trong số này là nhỏ hơn 50 (có nghĩa là hai mã soundex với các chữ cái đầu tiên khác nhau sẽ được chấp nhận !!) thì mục nhập được chấp nhận là một trận đấu có thể. fie tại myrealbox dot com eek ... lưu trữ đã được đưa xuống máy chủ đó .. đây là mã cho trước đó hàm cg_sylc ($ nos) {& nbsp; $ nos = strtouper ($ nos); & nbsp; $ âm tiết = 0; & nbsp; $ trước = strlen ($ nos); & nbsp; $ nos = str_replace (mảng ('aa', 'ae', 'ai', 'ao', 'au', & nbsp; 'ea', 'ee', 'ei', 'eo', 'eu', ' Ia ',' tức là ',' ii ',' io ', & nbsp;' iu ',' oa ',' oe ',' oi ',' oo ',' ou ',' ua ',' ue ', & nbsp ; 'Ui', 'uo', 'uu'), "", $ nos); & nbsp; $ after = strlen ($ nos); & nbsp; $ diference = $ trước - $ sau; & nbsp; if ($ trước! = $ sau) $ âm tiết += $ diference / 2; & nbsp; if ($ nos [strlen ($ nos) -1] == "e") $ âm tiết-; & nbsp; if ($ nos [strlen ($ nos) -1] == "y") $ âm tiết ++; & nbsp; $ trước = $ sau; & nbsp; $ nos = str_replace (mảng ('a', 'e', 'i', 'o', 'u'), "", $ nos); & nbsp; $ after = strlen ($ nos); & nbsp; $ âm tiết += ($ trước - $ sau); ¶ 19 năm trước Có thể giải quyết vấn đề 'chữ cái khác nhau của SoundEx bằng cách sử dụng levenshtein () trên mã soundex. Trong ứng dụng của tôi, đang tìm kiếm một cơ sở dữ liệu về tên album cho các mục phù hợp với một chuỗi người dùng cụ thể, tôi thực hiện như sau: Ẩn danh ¶ ¶ 16 năm trước Vì chữ cái đầu tiên được bao gồm trong biểu diễn ngữ âm trong đầu ra, nên chỉ ra rằng nếu bạn muốn một khóa SoundEx hoạt động mà không có vấn đề về Klansy và Clansy nghe có vẻ khác nhau, hãy lấy phần phụ từ chữ cái đầu tiên, làm chữ cái đầu tiên là hằng số chính của từ và giá trị số là cấu trúc phontic của từ. Thư tại gettheawayspam dot iaindooley dot com ¶ 19 năm trước ¶ 19 năm trước Có thể giải quyết vấn đề 'chữ cái khác nhau của SoundEx bằng cách sử dụng levenshtein () trên mã soundex. Trong ứng dụng của tôi, đang tìm kiếm một cơ sở dữ liệu về tên album cho các mục phù hợp với một chuỗi người dùng cụ thể, tôi thực hiện như sau: 1. Tìm kiếm cơ sở dữ liệu cho tên chính xác2. Tìm kiếm cơ sở dữ liệu cho các mục nhập nơi tên xảy ra dưới dạng String3. Tìm kiếm cơ sở dữ liệu cho các mục nhập trong đó bất kỳ từ nào trong tên (nếu người dùng đã nhập nhiều hơn một từ), ngoại trừ các từ nhỏ (và,, của v.v.) 4. Sau đó, nếu tất cả điều này thất bại, tôi đi lên kế hoạch B: Pee Whitt tại nha khoa dot ufl dor edu ¶ ¶ 19 năm trước fie tại myrealbox dot com- Về yêu cầu âm tiết Soudex của bạn- Tôi nghĩ rằng việc đếm các cụm nguyên âm trong từ sẽ dẫn đến số lượng âm tiết chính xác. & NBSP; Vì vậy, không cần tính năng SoudEx, chỉ cần đếm qua các ký tự trong từ và mỗi khi bạn chạy từ nguyên âm đến Consanant, tăng số âm tiết. Sử dụng logic này, câu này được phân loại như sau.2 1 2 1 1 (3) (0) (4) (0) 2 trong đó (#) đánh dấu một từ được phân loại không chính xác. & nbsp; Tôi chắc chắn rằng Usiong một chút suy nghĩ người ta có thể tìm ra logic trong những trường hợp đó sẽ dẫn đến số lượng chính xác. & NBSP; Đếm các thay đổi từ nguyên âm thành Consanant sẽ mang lại- (1) 1 2 1 2 1 (4) 1 2 Lấy trung bình và sau đó cieling của hai loại sẽ khắc phục hầu hết các lỗi. đường tắt ¶ ¶ 15 năm trước Câu trả lời cho dù SoundEx có hoạt động ngoại trừ chữ cái đầu tiên trong Klancy vs Clancy là luôn luôn có tiền tố các từ có cùng một chữ cái. Aklancy sẽ phù hợp SoundEx dường như chỉ kiểm tra các âm tiết 1 1st .??ie: Trận đấu ngoạn mục Chỉ là một suy nghĩ nếu bạn dựa vào SoundEx. k- |