Software Venture Consulting

FileMaker Pro downloads & Resources
FileMaker Custom Functions
FileMaker Web Viewer Examples
FileMaker Pro & Lasso Consulting
FileMaker Books
FileMaker Articles
FileMaker Error Reference

Free Web Tools
Free FileMaker Tools

Personal Pages

Shopping Cart
Shopping Cart


Free Newsletter


Privacy Policy

FileMaker is a registered trademark of FileMaker, Inc. in the U.S. and other countries.


 FileMaker Pro Custom Functions

List  |  Show Random  |  Upload  |  Add This to Your Site

Metaphone ( text ; option )

Rate this function:  

  Average rating: 3.7  (63 votes)
  Discuss this Custom Function

Craig K. Gowens,  

Returns a phonetic key of a given word

Sample Input:
Metaphone ( Johnson ; 0 )
Metaphone ( Jansen ; 0 )
Sample Output:

 Then copy & paste into FileMaker Advanced'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 <i>Computer Language</i> 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.

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

This is my Custom Function and I want to edit it


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 (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.

Sjur Høgberg, Tønsberg, Norway
June 10, 2012 8:54am

Sjur, can you please publish your modified version? I would really appreciate it.

Pepe, Madrid
January 29, 2015 8:52am

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.

Ron Smith, Senoia, GA, US
May 26, 2017 7:21am

Make a comment about this Custom Function (please try to keep it brief & to the point). Anyone can post:

Your Name:
characters left. If you paste in more than 1500 characters, it will be truncated. Discuss the function - advertisements and other useless posts will be deleted.
Answer 7 + 2 =
Search for Custom Functions:

Custom Functions Widget
Download the Custom Function Dashboard Widget for OS X
Keep all the latest Custom Functions right at your fingertips!

Newest Custom Functions:

1. BinToFloat32IEEE ( binary )
  (Wed, Jun 27, 11:01pm)
2. match_WindowName_List ( Window_Names_List )
  (Sun, Jun 24, 8:15pm)
3. match_LayoutName_List ( LayoutNames_List )
  (Sun, Jun 24, 8:09pm)
4. SQL_Creator_Select ( wrapped ; table_name ; layout_name ; using_field_from ; list_fields_only ; use_distinct ; key_field_list ; separator_for_records ; separator_for_fields )
  (Sun, Jun 24, 5:38pm)
5. SortList ( theList )
  (Sat, Jun 23, 8:45am)
6. HexUUIDToNum_cf (_uuid)
  (Sat, Jun 16, 1:55pm)
7. httpResponseCode ( responseHeaders )
  (Tue, Jun 12, 10:40pm)
8. FindDuplicateCharacters ( string )
  (Fri, Jun 08, 5:01pm)

RSS Feed of Custom Functions