textFingerprint function
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;
}