diff --git a/kernel/search/mark.go b/kernel/search/mark.go index e16fe6fa4..e858f3fa5 100644 --- a/kernel/search/mark.go +++ b/kernel/search/mark.go @@ -85,7 +85,7 @@ func EncloseHighlighting(text string, keywords []string, openMark, closeMark str } re := ic + "(" for i, k := range keywords { - k = keyword2regexp(k) + k = regexp.QuoteMeta(k) re += "(" + k + ")" if i < len(keywords)-1 { re += "|" @@ -98,7 +98,7 @@ func EncloseHighlighting(text string, keywords []string, openMark, closeMark str }) } else { for _, k := range keywords { - k = keyword2regexp(k) + k = regexp.QuoteMeta(k) var repls, words []string if re, err := regexp.Compile(ic + k); nil == err { words = re.FindAllString(text, -1) @@ -115,12 +115,3 @@ func EncloseHighlighting(text string, keywords []string, openMark, closeMark str } return text } - -func keyword2regexp(k string) string { - k = strings.ReplaceAll(k, "*", ".*") - k = strings.ReplaceAll(k, "?", ".") - k = strings.ReplaceAll(k, "%", ".*") - k = strings.ReplaceAll(k, "_", ".") - k = strings.ReplaceAll(k, "\\\\", "\\") - return k -} diff --git a/kernel/sql/cache.go b/kernel/sql/cache.go index f9ecaddfd..ff1278813 100644 --- a/kernel/sql/cache.go +++ b/kernel/sql/cache.go @@ -70,11 +70,19 @@ func removeBlockCache(id string) { removeRefCacheByDefID(id) } +var virtualRefKeywordsCacheTime = time.Now() + func getVirtualRefKeywordsCache() ([]string, bool) { if disabled { return nil, false } + // 虚拟引用关键字缓存调整为 10 分钟 https://github.com/siyuan-note/siyuan/issues/6602 + if 10 < time.Now().Sub(virtualRefKeywordsCacheTime).Minutes() { + ClearVirtualRefKeywords() + return nil, false + } + if val, ok := memCache.Get("virtual_ref"); ok { return val.([]string), true }