actually sort autocomplete results by distance

pull/21833/head
Aviral Dasgupta 2017-02-10 04:26:36 +05:30
parent 5fbe06ed91
commit c7d0652762
No known key found for this signature in database
GPG Key ID: 5FD1E9F4FFD3DA80
1 changed files with 13 additions and 3 deletions

View File

@ -61,14 +61,24 @@ export default class FuzzyMatcher {
.algorithm('transposition') .algorithm('transposition')
.sort_candidates(false) .sort_candidates(false)
.case_insensitive_sort(true) .case_insensitive_sort(true)
.include_distance(false) .include_distance(true)
.maximum_candidates(this.options.resultCount || DEFAULT_RESULT_COUNT) // result count 0 doesn't make much sense .maximum_candidates(this.options.resultCount || DEFAULT_RESULT_COUNT) // result count 0 doesn't make much sense
.build(); .build();
} }
match(query: String): Array<Object> { match(query: String): Array<Object> {
const candidates = this.matcher.transduce(query, this.options.distance || DEFAULT_DISTANCE); const candidates = this.matcher.transduce(query, this.options.distance || DEFAULT_DISTANCE);
return _sortedUniq(_sortBy(_flatMap(candidates, candidate => this.keyMap.objectMap[candidate]), // TODO FIXME This is hideous. Clean up when possible.
candidate => this.keyMap.priorityMap[candidate])); const val = _sortedUniq(_sortBy(_flatMap(candidates, candidate => {
return this.keyMap.objectMap[candidate[0]].map(value => {
return {
distance: candidate[1],
...value,
};
});
}),
[candidate => candidate.distance, candidate => this.keyMap.priorityMap[candidate]]));
console.log(val);
return val;
} }
} }