cockpitFuzzyTextSimilarity function

double cockpitFuzzyTextSimilarity(
  1. String actual,
  2. String expected
)

Implementation

double cockpitFuzzyTextSimilarity(String actual, String expected) {
  final normalizedActual = _normalizeFuzzyText(actual);
  final normalizedExpected = _normalizeFuzzyText(expected);
  if (normalizedActual == normalizedExpected) return 1;
  if (normalizedActual.isEmpty || normalizedExpected.isEmpty) return 0;

  final actualRunes = normalizedActual.runes.toList(growable: false);
  final expectedRunes = normalizedExpected.runes.toList(growable: false);
  final fullSimilarity = _fuzzyRuneSimilarity(actualRunes, expectedRunes);
  if (expectedRunes.length < 5 || actualRunes.length <= expectedRunes.length) {
    return fullSimilarity;
  }
  final substringDistance = _fuzzySubstringDistance(actualRunes, expectedRunes);
  final substringSimilarity = (1 - (substringDistance / expectedRunes.length))
      .clamp(0, 1)
      .toDouble();
  return substringSimilarity > fullSimilarity
      ? substringSimilarity
      : fullSimilarity;
}