generateVariations method
Generates variations of a word for fuzzy matching
Implementation
@override
List<String> generateVariations(String word) {
final variations = <String>{word};
const typoSubstitutions = {
'a': ['e'],
'e': ['a'],
'i': ['y'],
'y': ['i'],
's': ['z'],
'z': ['s'],
'o': ['u'],
'u': ['o']
};
for (int i = 0; i < word.length; i++) {
final char = word[i];
if (typoSubstitutions.containsKey(char)) {
for (var replacement in typoSubstitutions[char]!) {
final variation = word.replaceRange(i, i + 1, replacement);
variations.add(variation);
}
}
}
// Add plural/singular variations
if (!word.endsWith('s') && word.length > 2) {
variations.add('${word}s');
}
if (word.endsWith('s') && word.length > 1) {
variations.add(word.substring(0, word.length - 1));
}
return variations.toList();
}