public class Metaphone extends Object implements StringEncoder
Initial Java implementation by William B. Brogden. December, 1997. Permission given by wbrogden for code to be used anywhere.
Hanging on the Metaphone by Lawrence Philips in Computer Language of Dec. 1990, p 39.
Note, that this does not match the algorithm that ships with PHP, or the algorithm found in the Perl implementations:
They have had undocumented changes from the originally published algorithm. For more information, see CODEC-57.
This class is conditionally thread-safe.
The instance field maxCodeLen
is mutable setMaxCodeLen(int)
but is not volatile, and accesses are not synchronized.
If an instance of the class is shared between threads, the caller needs to ensure that suitable synchronization
is used to ensure safe publication of the value between threads, and must not invoke setMaxCodeLen(int)
after initial setup.
Constructor and Description |
---|
Metaphone()
Creates an instance of the Metaphone encoder
|
Modifier and Type | Method and Description |
---|---|
Object |
encode(Object obj)
Encodes an Object using the metaphone algorithm.
|
String |
encode(String str)
Encodes a String using the Metaphone algorithm.
|
int |
getMaxCodeLen()
Returns the maxCodeLen.
|
boolean |
isMetaphoneEqual(String str1,
String str2)
Tests is the metaphones of two strings are identical.
|
String |
metaphone(String txt)
Find the metaphone value of a String.
|
void |
setMaxCodeLen(int maxCodeLen)
Sets the maxCodeLen.
|
public Object encode(Object obj) throws EncoderException
encode
in interface Encoder
obj
- Object to encodeEncoderException
- if the parameter supplied is not
of type java.lang.Stringpublic String encode(String str)
encode
in interface StringEncoder
str
- String object to encodepublic int getMaxCodeLen()
public boolean isMetaphoneEqual(String str1, String str2)
str1
- First of two strings to comparestr2
- Second of two strings to comparetrue
if the metaphones of these strings are identical,
false
otherwise.public String metaphone(String txt)
txt
- String to find the metaphone code forpublic void setMaxCodeLen(int maxCodeLen)
maxCodeLen
- The maxCodeLen to set