Add search string query #1
			
				
			
		
		
		
	
							
								
								
									
										1
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										1
									
								
								go.mod
								
								
								
								
							|  | @ -5,4 +5,5 @@ go 1.16 | ||||||
| require ( | require ( | ||||||
| 	github.com/logrusorgru/aurora v2.0.3+incompatible | 	github.com/logrusorgru/aurora v2.0.3+incompatible | ||||||
| 	go.mongodb.org/mongo-driver v1.7.1 | 	go.mongodb.org/mongo-driver v1.7.1 | ||||||
|  | 	golang.org/x/text v0.3.7 // indirect | ||||||
| ) | ) | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										2
									
								
								go.sum
								
								
								
								
							|  | @ -103,6 +103,8 @@ golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7w | ||||||
| golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||||
| golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= | golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= | ||||||
| golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||||
|  | golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= | ||||||
|  | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | ||||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||||
| golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | ||||||
| golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | ||||||
|  |  | ||||||
|  | @ -0,0 +1,37 @@ | ||||||
|  | package mongodb | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"regexp" | ||||||
|  | 	"strings" | ||||||
|  | 	"unicode" | ||||||
|  | 
 | ||||||
|  | 	"go.mongodb.org/mongo-driver/bson" | ||||||
|  | 	"go.mongodb.org/mongo-driver/x/bsonx" | ||||||
|  | 	"golang.org/x/text/runes" | ||||||
|  | 	"golang.org/x/text/transform" | ||||||
|  | 	"golang.org/x/text/unicode/norm" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // GenerateQuerySearchString ...
 | ||||||
|  | func GenerateQuerySearchString(s string) bson.M { | ||||||
|  | 	return bson.M{ | ||||||
|  | 		"$regex": bsonx.Regex(NonAccentVietnamese(s), "i"), | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // NonAccentVietnamese ...
 | ||||||
|  | func NonAccentVietnamese(str string) string { | ||||||
|  | 	str = strings.ToLower(str) | ||||||
|  | 	str = replaceStringWithRegex(str, `đ`, "d") | ||||||
|  | 	t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC) | ||||||
|  | 	result, _, _ := transform.String(t, str) | ||||||
|  | 	result = replaceStringWithRegex(result, `[^a-zA-Z0-9\s]`, "") | ||||||
|  | 
 | ||||||
|  | 	return result | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // replaceStringWithRegex ...
 | ||||||
|  | func replaceStringWithRegex(src string, regex string, replaceText string) string { | ||||||
|  | 	reg := regexp.MustCompile(regex) | ||||||
|  | 	return reg.ReplaceAllString(src, replaceText) | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue