org.apache.commons.codec.language
Class DoubleMetaphone

java.lang.Object
  extended by org.apache.commons.codec.language.DoubleMetaphone
All Implemented Interfaces:
Encoder, StringEncoder

public class DoubleMetaphone
extends 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 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.

Version:
$Id: DoubleMetaphone.html 889935 2013-12-11 05:05:13Z ggregory $
See Also:
Original Article, http://en.wikipedia.org/wiki/Metaphone

Nested Class Summary
 class DoubleMetaphone.DoubleMetaphoneResult
          Inner class for storing results, since there is the optional alternate encoding.
 
Constructor Summary
DoubleMetaphone()
          Creates an instance of this DoubleMetaphone encoder
 
Method Summary
protected  char charAt(String value, int index)
          Gets the character at index index if available, otherwise it returns Character.MIN_VALUE so that there is some sort of a default.
protected static boolean contains(String value, int start, int length, String[] criteria)
          Determines whether value contains any of the criteria starting at index start and matching up to length length.
 String doubleMetaphone(String value)
          Encode a value with Double Metaphone.
 String doubleMetaphone(String value, boolean alternate)
          Encode a value with Double Metaphone, optionally using the alternate encoding.
 Object encode(Object obj)
          Encode the value using DoubleMetaphone.
 String encode(String value)
          Encode the value using DoubleMetaphone.
 int getMaxCodeLen()
          Returns the maxCodeLen.
 boolean isDoubleMetaphoneEqual(String value1, String value2)
          Check if the Double Metaphone values of two String values are equal.
 boolean isDoubleMetaphoneEqual(String value1, String value2, boolean alternate)
          Check if the Double Metaphone values of two String values are equal, optionally using the alternate value.
 void setMaxCodeLen(int maxCodeLen)
          Sets the maxCodeLen.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DoubleMetaphone

public DoubleMetaphone()
Creates an instance of this DoubleMetaphone encoder

Method Detail

doubleMetaphone

public String doubleMetaphone(String value)
Encode a value with Double Metaphone.

Parameters:
value - String to encode
Returns:
an encoded string

doubleMetaphone

public String doubleMetaphone(String value,
                              boolean alternate)
Encode a value with Double Metaphone, optionally using the alternate encoding.

Parameters:
value - String to encode
alternate - use alternate encode
Returns:
an encoded string

encode

public Object encode(Object obj)
              throws EncoderException
Encode the value using DoubleMetaphone. It will only work if obj is a String (like Metaphone).

Specified by:
encode in interface Encoder
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 String encode(String value)
Encode the value using DoubleMetaphone.

Specified by:
encode in interface StringEncoder
Parameters:
value - String to encode
Returns:
An encoded String

isDoubleMetaphoneEqual

public boolean isDoubleMetaphoneEqual(String value1,
                                      String value2)
Check if the Double Metaphone values of two String values are equal.

Parameters:
value1 - The left-hand side of the encoded String.equals(Object).
value2 - The right-hand side of the encoded String.equals(Object).
Returns:
true if the encoded Strings are equal; false otherwise.
See Also:
isDoubleMetaphoneEqual(String,String,boolean)

isDoubleMetaphoneEqual

public boolean isDoubleMetaphoneEqual(String value1,
                                      String value2,
                                      boolean alternate)
Check if the Double Metaphone values of two String values are equal, optionally using the alternate value.

Parameters:
value1 - The left-hand side of the encoded String.equals(Object).
value2 - The right-hand side of the encoded String.equals(Object).
alternate - use the alternate value if true.
Returns:
true if the encoded Strings are equal; false otherwise.

getMaxCodeLen

public int getMaxCodeLen()
Returns the maxCodeLen.

Returns:
int

setMaxCodeLen

public void setMaxCodeLen(int maxCodeLen)
Sets the maxCodeLen.

Parameters:
maxCodeLen - The maxCodeLen to set

charAt

protected char charAt(String value,
                      int index)
Gets the character at index index if available, otherwise it returns Character.MIN_VALUE so that there is some sort of a default.


contains

protected static boolean contains(String value,
                                  int start,
                                  int length,
                                  String[] criteria)
Determines whether value contains any of the criteria starting at index start and matching up to length length.



Copyright © 2002-2013 The Apache Software Foundation. All Rights Reserved.