Brian Dunning's FileMaker Custom Functions

Metaphone ( text ; option )

Returns a phonetic key of a given word

  Average rating: 3.7 (60 votes) Log in to vote

Craig K. Gowens   Craig K. Gowens
 
 

Share on Facebook Share on Twitter

  Sample input:
Metaphone ( Johnson ; 0 )
and
Metaphone ( Jansen ; 0 )
  Sample output:
JNSN

  Function definition: (Copy & paste into FileMaker's Edit Custom Function window)

This function is a FileMaker implementation based on the Metaphone and DoubleMetaphone algorithms developed by Lawrence Philips (see the the December 1990 issue of the journal Computer Language as a primer). It is based primarily on the original Metaphone algorithm but contains some of the pronunciation exceptions from DoubleMetaphone. Various other implementations in C/C++, Java and VB can be found by Yahoo!ing or Googling "Metaphone".

Metaphone is an excellent choice for generating a phonetic index for searches based on pronunciation, spellchecking suggestions for mispelt words or as a key for grouping similar sounding words together.

The option flag gives you the choice of number of characters to return. For zero, the function returns the entire string. For any integer 1-6, the function will returns that number of characters. For example Metaphone(Vanlandingham; 0) returns FNLNTNHM, but Metaphone(Vanlandingham; 4 )returns FNLN.

I am open to and interested in comments and suggestions for improvements to the algorithm. Please feel free to email me at ckgowens at austin dot rr dot com.

 

Comments

Sjur Høgberg   Sjur Høgberg, Tønsberg, Norway
Jun 10, 2012
Great function!

I have added a separator after string 0 to use the function with more than one word.
stringA = Substitute ( string1; [" " ; "*"] ; ["/" ; "*"] ; ["-" ; "*"]) ;
(the "*" itself is substituted with an " " in paddedtext-definition)

And a reintroduction of separator after string9:
stringB = Substitute ( string9; ["*" ;separator] ) /* Reintroduce word separator */

I still have two more wishes for the multiword version that I can not accomplish with my programming skills:
1. The ability to reduce every word in list to the length of the option-parameter (like WordShrink http://www.briandunning.com/cf/1374) (Now the length only applies to the whole string – not every word.)
2. The ability to let the rules in string1 and 8 apply to every word in the string – not only to the first and last respectively.

With both this included, you can make wonderful many-to-many relations for search functions. Ideal for library management systems.

Would like to post all modifications I have made, but this exceeds the 1500 character limit for comments.
 
Pepe   Pepe, Madrid
Jan 29, 2015
Sjur, can you please publish your modified version? I would really appreciate it.
 
Ron Smith   Ron Smith
May 26, 2017
I've created another custom function called MetaphoneString which is recursive and applies the full Metaphone option 0 and strings the Metaphones of each individual word between single spaces. I'll post it to this site.
 

Log in to post comments.

 

Note: these functions are not guaranteed or supported by BrianDunning.com. Please contact the individual developer with any questions or problems.

Under construction. Email me your wish list for improvements.