jaroWinklerSimilarity function

double jaroWinklerSimilarity(
  1. String s1,
  2. String s2, {
  3. double weightFactor = 0.1,
})

Calculates the Jaro-Winkler similarity between two strings

Implementation

double jaroWinklerSimilarity(
  String s1,
  String s2, {
  double weightFactor = 0.1,
}) {
  final jaro = jaroSimilarity(s1, s2);

  if (jaro < 0.7) return jaro;

  var prefixLength = 0;
  final maxPrefixLength = min(4, min(s1.length, s2.length));

  for (var i = 0; i < maxPrefixLength; i++) {
    if (s1[i] != s2[i]) break;
    prefixLength++;
  }

  return jaro + (prefixLength * weightFactor * (1 - jaro));
}