Skip to content

Commit

Permalink
fixed extra suffix bug
Browse files Browse the repository at this point in the history
Signed-off-by: Rifat Nabi <to.rifat@gmail.com>
  • Loading branch information
torifat committed Jul 4, 2012
1 parent f128fb6 commit 26f7cb9
Showing 1 changed file with 33 additions and 34 deletions.
67 changes: 33 additions & 34 deletions Suggestion.m
Expand Up @@ -59,42 +59,43 @@ - (NSMutableArray*)getList:(NSString*)term {
return _suggestions;
}

// Saving humanity by reducing a few CPU cycles
[_suggestions addObjectsFromArray:[[CacheManager sharedInstance] arrayForKey:term]];
if (_suggestions && [_suggestions count] > 0) {
return _suggestions;
}

// Suggestions form AutoCorrect
NSString* autoCorrect = [[AutoCorrect sharedInstance] find:term];
if (autoCorrect) {
[_suggestions addObject:autoCorrect];
}

// Suggestions from Dictionary
NSArray* dicList = [[Database sharedInstance] find:term];
// Suggestions from Default Parser
NSString* paresedString = [[AvroParser sharedInstance] parse:term];
if (dicList) {
// Remove autoCorrect if it is already in the dictionary
// PROPOSAL: don't add the autoCorrect, which matches with the dictionary entry
if (autoCorrect && [dicList containsObject:autoCorrect]) {
[_suggestions removeObjectIdenticalTo:autoCorrect];

// Saving humanity by reducing a few CPU cycles
[_suggestions addObjectsFromArray:[[CacheManager sharedInstance] arrayForKey:term]];
if (_suggestions && [_suggestions count] == 0) {
// Suggestions form AutoCorrect
NSString* autoCorrect = [[AutoCorrect sharedInstance] find:term];
if (autoCorrect) {
[_suggestions addObject:autoCorrect];
}
// Sort dicList based on edit distance
NSArray* sortedDicList = [dicList sortedArrayUsingComparator:^NSComparisonResult(id left, id right) {
int dist1 = [paresedString computeLevenshteinDistanceWithString:(NSString*)left];
int dist2 = [paresedString computeLevenshteinDistanceWithString:(NSString*)right];
if (dist1 < dist2) {
return NSOrderedAscending;

// Suggestions from Dictionary
NSArray* dicList = [[Database sharedInstance] find:term];
if (dicList) {
// Remove autoCorrect if it is already in the dictionary
// PROPOSAL: don't add the autoCorrect, which matches with the dictionary entry
if (autoCorrect && [dicList containsObject:autoCorrect]) {
[_suggestions removeObjectIdenticalTo:autoCorrect];
}
else if (dist1 > dist2) {
return NSOrderedDescending;
} else {
return NSOrderedSame;
}
}];
[_suggestions addObjectsFromArray:sortedDicList];
// Sort dicList based on edit distance
NSArray* sortedDicList = [dicList sortedArrayUsingComparator:^NSComparisonResult(id left, id right) {
int dist1 = [paresedString computeLevenshteinDistanceWithString:(NSString*)left];
int dist2 = [paresedString computeLevenshteinDistanceWithString:(NSString*)right];
if (dist1 < dist2) {
return NSOrderedAscending;
}
else if (dist1 > dist2) {
return NSOrderedDescending;
} else {
return NSOrderedSame;
}
}];
[_suggestions addObjectsFromArray:sortedDicList];
}

[[CacheManager sharedInstance] setArray:[[_suggestions copy] autorelease] forKey:term];
}

// Suggestions with Suffix
Expand Down Expand Up @@ -159,8 +160,6 @@ - (NSMutableArray*)getList:(NSString*)term {
[_suggestions addObject:paresedString];
}

[[CacheManager sharedInstance] setArray:[[_suggestions copy] autorelease] forKey:term];

return _suggestions;
}

Expand Down

0 comments on commit 26f7cb9

Please sign in to comment.