mirror of
https://github.com/fleetdm/fleet
synced 2026-05-22 00:18:27 +00:00
This PR makes the target search more user-friendly by stripping symbols that have a special interpretation in MySQL FTS. Closes #2017
30 lines
635 B
Go
30 lines
635 B
Go
package mysql
|
|
|
|
import (
|
|
"regexp"
|
|
"strings"
|
|
)
|
|
|
|
var mysqlFTSSymbolRegexp = regexp.MustCompile("[-+]+")
|
|
|
|
func queryMinLength(query string) bool {
|
|
return countLongestTerm(query) >= 3
|
|
}
|
|
|
|
func countLongestTerm(query string) int {
|
|
max := 0
|
|
for _, q := range strings.Split(query, " ") {
|
|
if len(q) > max {
|
|
max = len(q)
|
|
}
|
|
}
|
|
return max
|
|
}
|
|
|
|
// transformQuery replaces occurrences of characters that are treated specially
|
|
// by the MySQL FTS engine to try to make the search more user-friendly
|
|
func transformQuery(query string) string {
|
|
return strings.TrimSpace(
|
|
mysqlFTSSymbolRegexp.ReplaceAllLiteralString(query, " "),
|
|
) + "*"
|
|
}
|