Skip to content

Commit c0dbbd2

Browse files
committed
orderByLevenshtein improved
1 parent 83f80a5 commit c0dbbd2

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

controllers/searchSimilarnames_func.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,27 +70,29 @@ func findNames(names []models.NameType, name string, threshold float32) ([]model
7070

7171
}
7272

73-
//orderByLevenshtein used to sort an array by Levenshtein
73+
//orderByLevenshtein used to sort an array by Levenshtein and len of the name
7474
func orderByLevenshtein(arr []models.NameVar) []string {
7575
// creates copy of original array
7676
sortedArr := make([]models.NameVar, len(arr))
7777
copy(sortedArr, arr)
7878

79-
// compilation func
80-
cmp := func(i, j int) bool {
81-
return sortedArr[i].Levenshtein > sortedArr[j].Levenshtein
82-
}
83-
8479
// order by func
85-
sort.Slice(sortedArr, cmp)
80+
sort.Slice(sortedArr, func(i, j int) bool {
81+
if sortedArr[i].Levenshtein != sortedArr[j].Levenshtein {
82+
return sortedArr[i].Levenshtein > sortedArr[j].Levenshtein
83+
} else {
84+
return len(sortedArr[i].Name) < len(sortedArr[j].Name)
85+
}
86+
})
8687

87-
var retArry []string
88+
//return array
89+
var retArr []string
8890
for _, lv := range sortedArr {
89-
retArry = append(retArry, lv.Name)
91+
retArr = append(retArr, lv.Name)
9092
}
9193

92-
return removeDuplicates(retArry)
93-
94+
//return without duplicates
95+
return removeDuplicates(retArr)
9496
}
9597

9698
//removeDuplicates remove duplicates of []string, called on orderByLevenshtein

0 commit comments

Comments
 (0)