@@ -3,8 +3,8 @@ package controllers
33import (
44 "errors"
55 "github.com/Darklabel91/API_Names/database"
6- "github.com/Darklabel91/API_Names/metaphone"
76 "github.com/Darklabel91/API_Names/models"
7+ Metaphone "github.com/Darklabel91/metaphone-br"
88 "github.com/gin-gonic/gin"
99 "net/http"
1010 "sort"
@@ -90,15 +90,14 @@ func GetName(c *gin.Context) {
9090func SearchSimilarNames (c * gin.Context ) {
9191 //name to be searched
9292 name := c .Params .ByName ("name" )
93- nameMetaphone := metaphone .Pack (name )
93+ nameMetaphone := Metaphone .Pack (name )
9494
9595 //find all metaphoneNames matching metaphone
9696 var metaphoneNames []models.NameType
97-
9897 database .Db .Raw ("select * from name_types where metaphone = ?" , nameMetaphone ).Find (& metaphoneNames )
9998 similarNames := findNames (metaphoneNames , name , levenshtein )
10099
101- //for recall purposes we can't only search for metaphone exact match's if no similar word is found.
100+ //for recall purposes we can't only search for metaphone exact match's if no similar word is found
102101 if len (metaphoneNames ) == 0 || len (similarNames ) == 0 {
103102 metaphoneNames = searchForAllSimilarMetaphone (nameMetaphone )
104103 similarNames = findNames (metaphoneNames , name , levenshtein )
@@ -115,6 +114,7 @@ func SearchSimilarNames(c *gin.Context) {
115114 }
116115
117116 //when the similar metaphoneNames result's in less than 5 we search for every similar name of all similar metaphoneNames founded previously
117+ //this step can be ignored if you want to
118118 if len (similarNames ) < 5 {
119119 for _ , n := range similarNames {
120120 similar := findNames (metaphoneNames , n .Name , levenshtein )
@@ -125,7 +125,7 @@ func SearchSimilarNames(c *gin.Context) {
125125 //order all similar metaphoneNames from high to low Levenshtein
126126 nameV := orderByLevenshtein (similarNames )
127127
128- //build canonical
128+ //finds a name to consider Canonical on the database
129129 canonicalEntity , err := findCanonical (name , metaphoneNames , nameV )
130130 if err != nil {
131131 c .JSON (http .StatusNotFound , gin.H {"Not found" : err .Error (), "metaphone" : nameMetaphone })
@@ -155,7 +155,7 @@ func searchForAllSimilarMetaphone(mtf string) []models.NameType {
155155
156156 var rNames []models.NameType
157157 for _ , n := range names {
158- if metaphone .IsMetaphoneSimilar (mtf , n .Metaphone ) {
158+ if Metaphone .IsMetaphoneSimilar (mtf , n .Metaphone ) {
159159 rNames = append (rNames , n )
160160 }
161161 }
@@ -177,7 +177,7 @@ func findCanonical(name string, matchingMetaphoneNames []models.NameType, nameVa
177177
178178 //search for similar names on matchingMetaphoneNames
179179 for _ , similarName := range matchingMetaphoneNames {
180- if metaphone .SimilarityBetweenWords (name , similarName .Name ) >= levenshtein {
180+ if Metaphone .SimilarityBetweenWords (name , similarName .Name ) >= levenshtein {
181181 return similarName , nil
182182 }
183183 }
@@ -220,7 +220,7 @@ func findSimilarNames(name string, names []models.NameType, threshold float32) [
220220 var similarNames []models.NameVar
221221
222222 for _ , n := range names {
223- similarity := metaphone .SimilarityBetweenWords (strings .ToLower (name ), strings .ToLower (n .Name ))
223+ similarity := Metaphone .SimilarityBetweenWords (strings .ToLower (name ), strings .ToLower (n .Name ))
224224 if similarity >= threshold {
225225 similarNames = append (similarNames , models.NameVar {Name : n .Name , Levenshtein : similarity })
226226 varWords := strings .Split (n .NameVariations , "|" )
0 commit comments