Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- GT_LIB v1.0 Reference Guide Release 1.0 - <b>make a phonetic match string</b> http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Make a phonetic match string
------------------------------------------------------------------------------

 Syntax

         GT_Fonetix(<cStr>) --> cFonStr

 Arguments:

      <cStr>    -  The input string

 Returns:

      cFonStr   -  A phonetic representation of the input string

 Description:

      Make a phonetic match string for a passed string.
      Only works in english.  Words with foreign roots
      may not match very well.  Words with more than one
      syllable also translate poorly in some cases.
      However this approach seems to match most intelligent
      misspellings and most of those made by children.
      Note the order in which these rules are applied are
      important, nevertheless please feel free to experiment
      with reordering or even adding new rules, after all you
      know what kind of strings/names are going to be matched.

      Rules for producing the phonetic string

      1.  Uppercase <cStr>

      2.  Replace KN with N                       (Knight)

      3.  Replace GN with N                       (Gnome)

      4.  Replace WR with R                       (Wright)

      5.  Replace WH with H if WH is followed by O

      6.  Replace WH with W if WH isn't follwed by O
                                                   (Whately)

      7.  Replace MC with MK

      8.  Replace MAC with MK

      9.  Replace EIGH with AY
          (Can't have it not matching *my* name :-)

     10.  Replace IGHT with ITE                   (Wright)

     11.  Replace C with S if followed by E, I or Y

     12.  Replace C with K if not followed by E, I, Y, H

     13.  Replace D[JG] with J

     14.  Replace G with J if followed by E, I, or Y

     15.  Replace GH with H

     16.  Replace PH with F

     17.  Replace Q with KW

     18.  Replace TI with SH if it is followed by a vowel and
          is not at start of a word

     19.  Replace X with KS

     20   Replace Y with I if it is not the first or last
          character

     21.  Replace Z with S

     22.  Replace MB with M if MB is at end of string (thanks METAPH.PRG)

     23.  Replace double consonants with just one of 'em

     24.  Replace AIT with ATE

     25.  Replace IE at end of word with Y

     26.  Replace LE with L

     27.  TERN at end of word gets replaced with TN

     28.  EVE is replaced with EFE

     29   Replace the schwa sound with "" if succeeded by
          R, L, M, N

     30.  Replace SCH with SH

     31.  ARY, IRY, ORY, ERY all get replaced with RY if
          at end of word

     32.  Replace OO with U

     33.  Replace OI with OY

     34.  Remove vowels at end of word

     35.  Replace all vowel groups with just the first
          vowel in the group (you can try last as well)


 Examples:

     use PERSONS                     // assume a personnel table

     index on GT_fonetix(PERSONS->LAST_NAME) to LASTNAME

     seek GT_fonetix("Leighton")
     ? found(), PERSONS_LAST_NAME    // .T., Leighton

     seek GT_fonetix("Layton")
     ? found(), PERSONS->LAST_NAME   // .T., Leighton

     Also compile with -DTEST
  $REFERENCES$
     .EXE Magazine Vol 4, Issue 3
     Soundex()
     METAPH.PRG in nanfor.lib

 Source: FONETIX.PRG

 Author:  Andy M Leighton

Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson