textFingerprint function

int textFingerprint(
  1. String text
)

Simple 32-bit fingerprint: hash of word shingles. text split on non-letters.

Implementation

int textFingerprint(String text) {
  final List<String> words = text
      .toLowerCase()
      .split(RegExp(r'[^a-z0-9]+'))
      .where((s) => s.length > 1)
      .toList();
  if (words.isEmpty) return 0;
  int fp = 0;
  for (final MapEntry<int, String> entry in words.asMap().entries) {
    fp ^= (entry.value.hashCode + entry.key * _kFingerprintPrime);
  }
  return fp;
}