org.apache.commons.text.similarity

## Class LevenshteinDetailedDistance

- java.lang.Object
- - org.apache.commons.text.similarity.LevenshteinDetailedDistance

- All Implemented Interfaces:
    EditDistance<LevenshteinResults>, SimilarityScore<LevenshteinResults>

      public class LevenshteinDetailedDistance
      extends Object
      implements EditDistance<LevenshteinResults>

  An algorithm for measuring the difference between two character sequences.

  This is the number of changes needed to change one sequence into another, where each change is a single character modification (deletion, insertion or substitution).

  Since:
    1.0

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `LevenshteinDetailedDistance()` This returns the default instance that uses a version of the algorithm that does not use a threshold parameter.
    `LevenshteinDetailedDistance(Integer threshold)` If the threshold is not null, distance calculations will be limited to a maximum length.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `LevenshteinResults` | `apply(CharSequence left, CharSequence right)` Find the Levenshtein distance between two Strings.
    `static LevenshteinDetailedDistance` | `getDefaultInstance()` Gets the default instance.
    `Integer` | `getThreshold()` Gets the distance threshold.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### LevenshteinDetailedDistance

          public LevenshteinDetailedDistance()

      This returns the default instance that uses a version of the algorithm that does not use a threshold parameter.

      See Also:
        `getDefaultInstance()`

    - #### LevenshteinDetailedDistance

          public LevenshteinDetailedDistance(Integer threshold)

      If the threshold is not null, distance calculations will be limited to a maximum length.

      If the threshold is null, the unlimited version of the algorithm will be used.

      Parameters:
        `threshold` - If this is null then distances calculations will not be limited. This may not be negative.

  - ### Method Detail

    - #### apply

          public LevenshteinResults apply(CharSequence left,
                                          CharSequence right)

      Find the Levenshtein distance between two Strings.

      A higher score indicates a greater distance.

      The previous implementation of the Levenshtein distance algorithm was from http://www.merriampark.com/ld.htm

      Chas Emerick has written an implementation in Java, which avoids an OutOfMemoryError which can occur when my Java implementation is used with very large strings.
      This implementation of the Levenshtein distance algorithm is from http://www.merriampark.com/ldjava.htm

           distance.apply(null, *)             = IllegalArgumentException
           distance.apply(*, null)             = IllegalArgumentException
           distance.apply("","")               = 0
           distance.apply("","a")              = 1
           distance.apply("aaapppp", "")       = 7
           distance.apply("frog", "fog")       = 1
           distance.apply("fly", "ant")        = 3
           distance.apply("elephant", "hippo") = 7
           distance.apply("hippo", "elephant") = 7
           distance.apply("hippo", "zzzzzzzz") = 8
           distance.apply("hello", "hallo")    = 1

      Specified by:
        `apply` in interface `EditDistance<LevenshteinResults>`
      Specified by:
        `apply` in interface `SimilarityScore<LevenshteinResults>`
      Parameters:
        `left` - the first string, must not be null
        `right` - the second string, must not be null
      Returns:
        result distance, or -1
      Throws:
        `IllegalArgumentException` - if either String input `null`

    - #### getDefaultInstance

          public static LevenshteinDetailedDistance getDefaultInstance()

      Gets the default instance.
      Returns:
        The default instace

    - #### getThreshold

          public Integer getThreshold()

      Gets the distance threshold.
      Returns:
        The distance threshold

Copyright © 2014–2019 The Apache Software Foundation. All rights reserved.