Soundex

Farklı Soundex Algoritmaları

Ters (reverse) Soundex adlı farklı bir algoritmada ise, sayıların önüne getirilen harf en baştaki yerine en sondakidir.
The NYSIIS algoritması yine NYSIIS tarafından Soundex algoritmasının geliştirilmiş hâli olarak tanıtıldı. NYSIIS çoklu-karakter n-gram'ları desteğiyle gelir ve bilinen Soundex algoritmalarının aksine, sesli harflerin kelimede nerede bulunduğunu dikkate alarak kodlama yapar.
Celko Güçlendirilmeli Soundex algoritması ise Joe Celko tarafından onun "SQL For Smarties: Advanced SQL Programming" adlı kitabında tanıtılmıştır.
Lawrence Philips, aynı amaçla, Soundex algoritmasının eksiklerine bir cevap gibi hazırlanmış 'Metaphone' algoritmasını geliştirdi. Philips daha sonra Metaphone algoritmasını biraz daha geliştirerek 'Double-Metaphone' adını verdiği bir algoritma daha geliştirdi. Double-Metaphone algoritması, selefinden daha büyük bir kodlama kuralını sistemine ekleyerek Latin alfabesinde bulunmayan karakterleri de desteklemekle birlikte; bu algoritmayı kullananlar arasında İngilizce'deki farklı teleffuzları kullanabilecekler için birincil (primary) ve ikincil (secondary) kodlama sonuçlarını döndürmektedir.
Daitch-Mokotoff Soundex (D-M Soundex) algoritması, bir soy izleme uzmanı olan Gary Mokotoff tarafından geliştirildi ve daha sonraları Alman/Slav soyadlarıyla yapılan bazı karşılaştırmalarda ortaya çıkan sorunlar nedeniyle yine bir soy izleme uzmanı olan Randy Daitch tarafından güçlendirildi. Her ne kadar bazı yazarların hevesini kırsa da D-M Soundex algoritmasına bazı kaynaklarda "Yahudi Soundex'i - Jewish Soundex" ya da "Doğu Avrupa Soundex'i - Eastern European Soundex" ile referans verilebilmektedir. D-M Soundex algoritması, tek bir kelime için birbirinden bağımsız 32 sonuç verebilir. D-M Soundex sonuçları 100000 ile 999999 arasında her türlü sayı formatında olabilir.

Örnek Algoritmalar/Kullanım Şekilleri

Aşağıda Perl programlama dili için hazırlanmış bir fonksiyonu görebilirsiniz. Fonksiyon, kendisine verilen kelimenin Soundex kodunu döndürecektir. (Bunun yanında CPAN üzerindeki Text::Soundex modulünü de kullanabilirsiniz.)

 sub soundex {    # return soundex code
  my($useword) = $_[0];
  my($result) = "0000";
  my($idx,$prev,$perhaps,$thechar);
   
  $useword =~ tr/ //d;   # rid spaces
  $useword = lc($useword);   # lower-case for consistency
  if (length($useword) < 1) {
    return($result);
  }
   
  $result = substr($useword,0,1);   # first letter
  $prev = "0";
  $idx = 1;   
  while ($idx <= length($useword)) {
    $perhaps = "0";
    $thechar = substr($useword,$idx - 1,1);
    if (index("bfpv",    $thechar) >= 0) { $perhaps = "1"; }
    if (index("cgjkqsxz",$thechar) >= 0) { $perhaps = "2"; }
    if (index("dt",      $thechar) >= 0) { $perhaps = "3"; }
    if (index("l",       $thechar) >= 0) { $perhaps = "4"; }
    if (index("mn",      $thechar) >= 0) { $perhaps = "5"; }
    if (index("r",       $thechar) >= 0) { $perhaps = "6"; }
    if ($perhaps != $prev && $perhaps != "0"
       && $idx != 1)  {   # avoid dups and ignore first
      $result .= $perhaps;
    }
    $prev = $perhaps;
    $idx++;
  } #endwhile
   
  $result .= "0000";   # pad with zeros to ensure min length
  $result = substr($result,0,4);  # only return first four
  return($result);
 }
...ve Soundex algoritması için PHP ile gelen bir fonksiyon (PHP3'ten beri desteklenmektedir)