Class DoubleMetaphone
- java.lang.Object
-
- org.apache.commons.codec.language.DoubleMetaphone
-
- All Implemented Interfaces:
Encoder
,StringEncoder
public class DoubleMetaphone extends java.lang.Object implements StringEncoder
Encodes a string into a double metaphone value. This Implementation is based on the algorithm by Lawrence Philips.This class is conditionally thread-safe. The instance field for the maximum code length 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 invokesetMaxCodeLen(int)
after initial setup.- See Also:
- Dr. Dobbs Original Article, Wikipedia Metaphone
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
DoubleMetaphone.DoubleMetaphoneResult
Stores results, since there is the optional alternate encoding.
-
Constructor Summary
Constructors Constructor Description DoubleMetaphone()
Constructs a new instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected char
charAt(java.lang.String value, int index)
Gets the character at indexindex
if available, orCharacter.MIN_VALUE
if out of bounds.protected static boolean
contains(java.lang.String value, int start, int length, java.lang.String... criteria)
Tests whethervalue
contains any of thecriteria
starting at indexstart
and matching up to lengthlength
.java.lang.String
doubleMetaphone(java.lang.String value)
Encode a value with Double Metaphone.java.lang.String
doubleMetaphone(java.lang.String value, boolean alternate)
Encode a value with Double Metaphone, optionally using the alternate encoding.java.lang.Object
encode(java.lang.Object obj)
Encode the value using DoubleMetaphone.java.lang.String
encode(java.lang.String value)
Encode the value using DoubleMetaphone.int
getMaxCodeLen()
Returns the maxCodeLen.boolean
isDoubleMetaphoneEqual(java.lang.String value1, java.lang.String value2)
Check if the Double Metaphone values of twoString
values are equal.boolean
isDoubleMetaphoneEqual(java.lang.String value1, java.lang.String value2, boolean alternate)
Check if the Double Metaphone values of twoString
values are equal, optionally using the alternate value.void
setMaxCodeLen(int maxCodeLen)
Sets the maxCodeLen.
-
-
-
Constructor Detail
-
DoubleMetaphone
public DoubleMetaphone()
Constructs a new instance.
-
-
Method Detail
-
contains
protected static boolean contains(java.lang.String value, int start, int length, java.lang.String... criteria)
Tests whethervalue
contains any of thecriteria
starting at indexstart
and matching up to lengthlength
.- Parameters:
value
- The value to test.start
- Where invalue
to start testing.length
- How many to test.criteria
- The search criteria.- Returns:
- Whether there was a match.
-
charAt
protected char charAt(java.lang.String value, int index)
Gets the character at indexindex
if available, orCharacter.MIN_VALUE
if out of bounds.- Parameters:
value
- The String to query.index
- A string index.- Returns:
- The character at the index or
Character.MIN_VALUE
if out of bounds.
-
doubleMetaphone
public java.lang.String doubleMetaphone(java.lang.String value)
Encode a value with Double Metaphone.- Parameters:
value
- String to encode- Returns:
- an encoded string
-
doubleMetaphone
public java.lang.String doubleMetaphone(java.lang.String value, boolean alternate)
Encode a value with Double Metaphone, optionally using the alternate encoding.- Parameters:
value
- String to encodealternate
- use alternate encode- Returns:
- an encoded string
-
encode
public java.lang.Object encode(java.lang.Object obj) throws EncoderException
Encode the value using DoubleMetaphone. It will only work ifobj
is aString
(likeMetaphone
).- Specified by:
encode
in interfaceEncoder
- Parameters:
obj
- Object to encode (should be of type String)- Returns:
- An encoded Object (will be of type String)
- Throws:
EncoderException
- encode parameter is not of type String
-
encode
public java.lang.String encode(java.lang.String value)
Encode the value using DoubleMetaphone.- Specified by:
encode
in interfaceStringEncoder
- Parameters:
value
- String to encode- Returns:
- An encoded String
-
getMaxCodeLen
public int getMaxCodeLen()
Returns the maxCodeLen.- Returns:
- int
-
isDoubleMetaphoneEqual
public boolean isDoubleMetaphoneEqual(java.lang.String value1, java.lang.String value2)
Check if the Double Metaphone values of twoString
values are equal.- Parameters:
value1
- The left-hand side of the encodedString.equals(Object)
.value2
- The right-hand side of the encodedString.equals(Object)
.- Returns:
true
if the encodedString
s are equal;false
otherwise.- See Also:
isDoubleMetaphoneEqual(String,String,boolean)
-
isDoubleMetaphoneEqual
public boolean isDoubleMetaphoneEqual(java.lang.String value1, java.lang.String value2, boolean alternate)
Check if the Double Metaphone values of twoString
values are equal, optionally using the alternate value.- Parameters:
value1
- The left-hand side of the encodedString.equals(Object)
.value2
- The right-hand side of the encodedString.equals(Object)
.alternate
- use the alternate value iftrue
.- Returns:
true
if the encodedString
s are equal;false
otherwise.
-
setMaxCodeLen
public void setMaxCodeLen(int maxCodeLen)
Sets the maxCodeLen.- Parameters:
maxCodeLen
- The maxCodeLen to set
-
-