diff --git a/kernel/model/search.go b/kernel/model/search.go index 57afce85a..fd75a80bc 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -648,19 +648,26 @@ func markReplaceSpan(text string, keywords []string, replacementStart, replaceme } for _, k := range keywords { - if gulu.Str.IsASCII(k) { - if gulu.Str.IsASCII(part) { - if part == k { - parts[i] = replacementStart + k + replacementEnd + tmpPart := part + tmpK := k + if !Conf.Search.CaseSensitive { + tmpPart = strings.ToLower(part) + tmpK = strings.ToLower(k) + } + + if gulu.Str.IsASCII(tmpK) { + if gulu.Str.IsASCII(tmpPart) { + if tmpPart == tmpK { + parts[i] = replacementStart + part + replacementEnd } } else { - if strings.Contains(part, k) { - parts[i] = strings.ReplaceAll(part, k, replacementStart+k+replacementEnd) + if strings.Contains(tmpPart, tmpK) { + parts[i] = search.EncloseHighlighting(part, []string{k}, replacementStart, replacementEnd, Conf.Search.CaseSensitive) } } } else { - if strings.Contains(part, k) { - parts[i] = strings.ReplaceAll(part, k, replacementStart+k+replacementEnd) + if strings.Contains(tmpPart, tmpK) { + parts[i] = search.EncloseHighlighting(part, []string{k}, replacementStart, replacementEnd, Conf.Search.CaseSensitive) } } } diff --git a/kernel/sql/block_ref_query.go b/kernel/sql/block_ref_query.go index 9d7d3425b..4227f3796 100644 --- a/kernel/sql/block_ref_query.go +++ b/kernel/sql/block_ref_query.go @@ -195,7 +195,11 @@ func QueryBlockDefIDsByRefText(refText string, excludeIDs []string) (ret []strin func queryDefIDsByDefText(keyword string, excludeIDs []string) (ret []string) { ret = []string{} notIn := "('" + strings.Join(excludeIDs, "','") + "')" - rows, err := query("SELECT DISTINCT(def_block_id) FROM refs WHERE content = ? AND def_block_id NOT IN "+notIn, keyword) + q := "SELECT DISTINCT(def_block_id) FROM refs WHERE content LIKE ? AND def_block_id NOT IN " + notIn + if caseSensitive { + q = "SELECT DISTINCT(def_block_id) FROM refs WHERE content = ? AND def_block_id NOT IN " + notIn + } + rows, err := query(q, keyword) if nil != err { logging.LogErrorf("sql query failed: %s", err) return