🔍 search algorithm! 🎉🎊🥳

This commit is contained in:
Kleissner
2021-12-12 19:12:01 +01:00
parent 0cd4519688
commit d494d46410
9 changed files with 503 additions and 4 deletions

42
search/Normalize.go Normal file
View File

@@ -0,0 +1,42 @@
/*
File Name: Normalizing.go
Copyright: 2021 Peernet s.r.o.
Author: Peter Kleissner
Normalizing text so that it can be hashed.
*/
package search
import (
"path"
"strings"
)
func sanitizeGeneric(filename string) string {
filename = strings.TrimSpace(filename)
filename = strings.ToLower(filename)
filename = strings.ToValidUTF8(filename, "")
return filename
}
// sanitizeInputTerm sanitizes a search term provided by the end user. It includes the generic rules that are done on indexing.
func sanitizeInputTerm(inputTerm string) (outputTerm string, isExact, isWildcard bool) {
inputTerm = sanitizeGeneric(inputTerm)
// detect and remove quotes at the beginning and end
isExact = false
if len(inputTerm) >= 2 && ((strings.HasPrefix(inputTerm, "\"") && strings.HasSuffix(inputTerm, "\"")) || (strings.HasPrefix(inputTerm, "'") && strings.HasSuffix(inputTerm, "'"))) {
inputTerm = inputTerm[1 : len(inputTerm)-1]
isExact = true
}
isWildcard = strings.Contains(inputTerm, "*")
return inputTerm, isExact, isWildcard
}
func filenameRemoveExtension(filename string) string {
return strings.TrimSuffix(filename, path.Ext(filename))
}