Class LevenshteinDetailedDistance
- All Implemented Interfaces:
EditDistance<LevenshteinResults>
,SimilarityScore<LevenshteinResults>
public class LevenshteinDetailedDistance extends Object implements EditDistance<LevenshteinResults>
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 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
Modifier and Type Method 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.
-
Constructor Details
-
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
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 Details
-
apply
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.htmdistance.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 interfaceEditDistance<LevenshteinResults>
- Specified by:
apply
in interfaceSimilarityScore<LevenshteinResults>
- Parameters:
left
- the first string, must not be nullright
- the second string, must not be null- Returns:
- result distance, or -1
- Throws:
IllegalArgumentException
- if either String inputnull
-
getDefaultInstance
Gets the default instance.- Returns:
- The default instace
-
getThreshold
Gets the distance threshold.- Returns:
- The distance threshold
-