From 43d35668768afe3524e26cc5e7159fada169168a Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 5 Jan 2025 00:03:57 +0800 Subject: [PATCH] :art: Improve find-replace for keywords containing spaces https://github.com/siyuan-note/siyuan/issues/13705 --- kernel/model/search.go | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/kernel/model/search.go b/kernel/model/search.go index 8d8160b5e..935386b16 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -988,11 +988,6 @@ func FullTextSearchBlock(query string, boxes, paths []string, types map[string]b } query = filterQueryInvisibleChars(query) - trimQuery := strings.TrimSpace(query) - if "" != trimQuery { - query = trimQuery - } - var ignoreFilter string if ignoreLines := getSearchIgnoreLines(); 0 < len(ignoreLines) { // Support ignore search results https://github.com/siyuan-note/siyuan/issues/10089 @@ -1755,22 +1750,26 @@ func columnConcat() string { } func stringQuery(query string) string { - if "" == strings.TrimSpace(query) { + trimmedQuery := strings.TrimSpace(query) + if "" == trimmedQuery { return "\"" + query + "\"" } query = strings.ReplaceAll(query, "\"", "\"\"") query = strings.ReplaceAll(query, "'", "''") - buf := bytes.Buffer{} - parts := strings.Split(query, " ") - for _, part := range parts { - part = strings.TrimSpace(part) - part = "\"" + part + "\"" - buf.WriteString(part) - buf.WriteString(" ") + if strings.Contains(trimmedQuery, " ") { + buf := bytes.Buffer{} + parts := strings.Split(query, " ") + for _, part := range parts { + part = strings.TrimSpace(part) + part = "\"" + part + "\"" + buf.WriteString(part) + buf.WriteString(" ") + } + return strings.TrimSpace(buf.String()) } - return strings.TrimSpace(buf.String()) + return "\"" + query + "\"" } // markReplaceSpan 用于处理搜索高亮。