From 72128f97a3f9119f45b0dc51297187692021c629 Mon Sep 17 00:00:00 2001 From: Alex Wellnitz Date: Wed, 26 Mar 2025 00:28:23 +0100 Subject: [PATCH] refactor: search logic to improve performance and reduce false positives by making query case-insensitive for simple queries and using trimmed whitespace in phrases --- internal/controller/search.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/controller/search.go b/internal/controller/search.go index 01fca5c..54f9501 100644 --- a/internal/controller/search.go +++ b/internal/controller/search.go @@ -12,7 +12,7 @@ import ( func SearchQuery(c *fiber.Ctx) error { query := c.Params("query") - query = strings.TrimSpace(strings.ToLower(query)) + query = strings.TrimSpace(query) terms, queryType := parseQuery(query) results := search.Search(terms, queryType, index.Index, index.DocFreq, len(index.Documents)) @@ -29,12 +29,12 @@ func SearchQuery(c *fiber.Ctx) error { // parseQuery parses the query to determine query type and terms func parseQuery(query string) ([]string, string) { - if strings.Contains(query, "AND") { - return strings.Split(query, " AND "), "AND" - } else if strings.Contains(query, "OR") { - return strings.Split(query, " OR "), "OR" + if strings.Contains(strings.ToLower(query), "AND") { + return strings.Split(strings.ToLower(query), " AND "), "AND" + } else if strings.Contains(strings.ToLower(query), "OR") { + return strings.Split(strings.ToLower(query), " OR "), "OR" } - return strings.Fields(query), "SIMPLE" + return strings.Fields(strings.ToLower(query)), "SIMPLE" } // phraseMatch checks if all terms appear in the given document in sequence