Class DoubleMetaphone

java.lang.Object
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 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 invoke setMaxCodeLen(int) after initial setup.

See Also:
  • Constructor Details

  • Method Details

    • contains

      protected static boolean contains(String value, int start, int length, String... criteria)
    • charAt

      protected char charAt(String value, int index)
    • 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
    • getMaxCodeLen

      public int getMaxCodeLen()
      Returns the maxCodeLen.
      Returns:
      int
    • 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

      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.
    • setMaxCodeLen

      public void setMaxCodeLen(int maxCodeLen)
      Sets the maxCodeLen.
      Parameters:
      maxCodeLen - The maxCodeLen to set