Class Nysiis
java.lang.Object
org.apache.commons.codec.language.Nysiis
- All Implemented Interfaces:
Encoder
,StringEncoder
Encodes a string into a NYSIIS value. NYSIIS is an encoding used to relate similar names, but can also be used as a
general purpose scheme to find word with similar phonemes.
NYSIIS features an accuracy increase of 2.7% over the traditional Soundex algorithm.
Algorithm description:
1. Transcode first characters of name 1a. MAC -> MCC 1b. KN -> NN 1c. K -> C 1d. PH -> FF 1e. PF -> FF 1f. SCH -> SSS 2. Transcode last characters of name 2a. EE, IE -> Y 2b. DT,RT,RD,NT,ND -> D 3. First character of key = first character of name 4. Transcode remaining characters by following these rules, incrementing by one character each time 4a. EV -> AF else A,E,I,O,U -> A 4b. Q -> G 4c. Z -> S 4d. M -> N 4e. KN -> N else K -> C 4f. SCH -> SSS 4g. PH -> FF 4h. H -> If previous or next is non-vowel, previous 4i. W -> If previous is vowel, previous 4j. Add current to key if current != last key character 5. If last character is S, remove it 6. If last characters are AY, replace with Y 7. If last character is A, remove it 8. Collapse all strings of repeated characters 9. Add original first character of name as first character of key
This class is immutable and thread-safe.
- Since:
- 1.7
- See Also:
-
Constructor Summary
ConstructorDescriptionNysiis()
Creates an instance of theNysiis
encoder with strict mode (original form), i.e.Nysiis
(boolean strict) Create an instance of theNysiis
encoder with the specified strict mode:true
: encoded strings have a maximum length of 6false
: encoded strings may have arbitrary length -
Method Summary
-
Constructor Details
-
Nysiis
public Nysiis()Creates an instance of theNysiis
encoder with strict mode (original form), i.e. encoded strings have a maximum length of 6. -
Nysiis
Create an instance of theNysiis
encoder with the specified strict mode:true
: encoded strings have a maximum length of 6false
: encoded strings may have arbitrary length
- Parameters:
strict
- the strict mode
-
-
Method Details
-
encode
Encodes an Object using the NYSIIS algorithm. This method is provided in order to satisfy the requirements of the Encoder interface, and will throw anEncoderException
if the supplied object is not of typeString
.- Specified by:
encode
in interfaceEncoder
- Parameters:
obj
- Object to encode- Returns:
- An object (or a
String
) containing the NYSIIS code which corresponds to the given String. - Throws:
EncoderException
- if the parameter supplied is not of aString
IllegalArgumentException
- if a character is not mapped
-
encode
Encodes a String using the NYSIIS algorithm.- Specified by:
encode
in interfaceStringEncoder
- Parameters:
str
- A String object to encode- Returns:
- A Nysiis code corresponding to the String supplied
- Throws:
IllegalArgumentException
- if a character is not mapped
-
isStrict
Indicates the strict mode for thisNysiis
encoder.- Returns:
true
if the encoder is configured for strict mode,false
otherwise
-
nysiis
Retrieves the NYSIIS code for a given String object.- Parameters:
str
- String to encode using the NYSIIS algorithm- Returns:
- A NYSIIS code for the String supplied
-