diff --git a/kernel/model/search.go b/kernel/model/search.go index f127222c1..bec291f50 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -1532,7 +1532,27 @@ func highlightByFTS(query, typeFilter, id string) (ret []string) { stmt += " LIMIT " + strconv.Itoa(limit) sqlBlocks := sql.SelectBlocksRawStmt(stmt, 1, limit) for _, block := range sqlBlocks { - keyword := gulu.Str.SubstringsBetween(block.Content, search.SearchMarkLeft, search.SearchMarkRight) + keyword := gulu.Str.SubstringsBetween(block.HPath, search.SearchMarkLeft, search.SearchMarkRight) + if 0 < len(keyword) { + ret = append(ret, keyword...) + } + keyword = gulu.Str.SubstringsBetween(block.Name, search.SearchMarkLeft, search.SearchMarkRight) + if 0 < len(keyword) { + ret = append(ret, keyword...) + } + keyword = gulu.Str.SubstringsBetween(block.Alias, search.SearchMarkLeft, search.SearchMarkRight) + if 0 < len(keyword) { + ret = append(ret, keyword...) + } + keyword = gulu.Str.SubstringsBetween(block.Memo, search.SearchMarkLeft, search.SearchMarkRight) + if 0 < len(keyword) { + ret = append(ret, keyword...) + } + keyword = gulu.Str.SubstringsBetween(block.Tag, search.SearchMarkLeft, search.SearchMarkRight) + if 0 < len(keyword) { + ret = append(ret, keyword...) + } + keyword = gulu.Str.SubstringsBetween(block.Content, search.SearchMarkLeft, search.SearchMarkRight) if 0 < len(keyword) { ret = append(ret, keyword...) } @@ -1551,7 +1571,27 @@ func highlightByRegexp(query, typeFilter, id string) (ret []string) { } sqlBlocks := sql.SelectBlocksRegex(stmt, regex, Conf.Search.Name, Conf.Search.Alias, Conf.Search.Memo, Conf.Search.IAL, 1, 256) for _, block := range sqlBlocks { - keyword := gulu.Str.SubstringsBetween(block.Content, search.SearchMarkLeft, search.SearchMarkRight) + keyword := gulu.Str.SubstringsBetween(block.HPath, search.SearchMarkLeft, search.SearchMarkRight) + if 0 < len(keyword) { + ret = append(ret, keyword...) + } + keyword = gulu.Str.SubstringsBetween(block.Name, search.SearchMarkLeft, search.SearchMarkRight) + if 0 < len(keyword) { + ret = append(ret, keyword...) + } + keyword = gulu.Str.SubstringsBetween(block.Alias, search.SearchMarkLeft, search.SearchMarkRight) + if 0 < len(keyword) { + ret = append(ret, keyword...) + } + keyword = gulu.Str.SubstringsBetween(block.Memo, search.SearchMarkLeft, search.SearchMarkRight) + if 0 < len(keyword) { + ret = append(ret, keyword...) + } + keyword = gulu.Str.SubstringsBetween(block.Tag, search.SearchMarkLeft, search.SearchMarkRight) + if 0 < len(keyword) { + ret = append(ret, keyword...) + } + keyword = gulu.Str.SubstringsBetween(block.Content, search.SearchMarkLeft, search.SearchMarkRight) if 0 < len(keyword) { ret = append(ret, keyword...) }