fleet/server/datastore/mysql/fulltext.go
Zachary Wasserman c269886389
Fix target search behavior with - and + symbols (#2067)
This PR makes the target search more user-friendly by stripping symbols that
have a special interpretation in MySQL FTS.

Closes #2017
2019-07-03 10:47:43 -07:00

31 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, " "),
) + "*"
}