New York State Identification and Intelligence System
The New York State Identification and Intelligence System Phonetic Code, commonly known as NYSIIS, is a phonetic algorithm devised in 1970 as part of the New York State Identification and Intelligence System (now a part of the New York State Division of Criminal Justice Services). It features an accuracy increase of 2.7% over the traditional Soundex algorithm.
The algorithm, as described in Name Search Techniques, is:
- Translate first characters of name: MAC → MCC, KN → N, K → C, PH, PF → FF, SCH → SSS
- Translate last characters of name: EE → Y, IE → Y, DT, RT, RD, NT, ND → D
- First character of key = first character of name.
- Translate remaining characters by following rules, incrementing by one character each time:
- EV → AF else A, E, I, O, U → A
- Q → G, Z → S, M → N
- KN → N else K → C
- SCH → SSS, PH → FF
- H → If previous or next is non-vowel, previous.
- W → If previous is vowel, A.
- Add current to key if current is not same as the last key character.
- If last character is S, remove it.
- If last characters are AY, replace with Y.
- If last character is A, remove it.
- Append translated key to value from step 3 (removed first character)
- If longer than 6 characters, truncate to first 6 characters. (only needed for true NYSIIS, some versions use the full key)
- Rajkovic, P.; Jankovic, D. (2007), "Adaptation and Application of Daitch-Mokotoff Soundex Algorithm on Serbian Names" (PDF), XVII Conference on Applied Mathematics, Novi Sad, Serbia, archived from the original (PDF) on August 27, 2011
- Taft, R. L. (1970), "Name Search Techniques", New York State Identification and Intelligence System, Albany, New York
- NIST Dictionary of Algorithms and Data Structures entry, including pointers to several implementations: http://www.nist.gov/dads/HTML/nysiis.html
- Sample coder, using a variant of the algorithm: http://www.dropby.com/indexLF.html?content=/NYSIIS.html
- Simple Online NYSIIS Utility with GPL Source: http://www.utilitymill.com/utility/nysiis
- Ruby Implementation: http://coryodaniel.com/index.php/2009/12/30/ruby-nysiis-implementation
- C# Implementation: http://sounditout.codeplex.com/
- NYSIIS and Refined NYSIIS implementations in Scala