mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-16 14:40:12 +01:00
🎨 标点符号不纳入虚拟引用和提及搜索 https://github.com/siyuan-note/siyuan/issues/6272
This commit is contained in:
parent
a70dfc8b20
commit
f5cc328a9b
3 changed files with 20 additions and 3 deletions
|
|
@ -716,6 +716,7 @@ func buildTreeBackmention(defSQLBlock *sql.Block, refBlocks []*Block, keyword st
|
||||||
for _, v := range set.Values() {
|
for _, v := range set.Values() {
|
||||||
mentionKeywords = append(mentionKeywords, v.(string))
|
mentionKeywords = append(mentionKeywords, v.(string))
|
||||||
}
|
}
|
||||||
|
mentionKeywords = prepareMarkKeywords(mentionKeywords)
|
||||||
ret = searchBackmention(mentionKeywords, keyword, excludeBacklinkIDs, rootID, beforeLen)
|
ret = searchBackmention(mentionKeywords, keyword, excludeBacklinkIDs, rootID, beforeLen)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -726,9 +727,6 @@ func searchBackmention(mentionKeywords []string, keyword string, excludeBacklink
|
||||||
if 1 > len(mentionKeywords) {
|
if 1 > len(mentionKeywords) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
sort.SliceStable(mentionKeywords, func(i, j int) bool {
|
|
||||||
return len(mentionKeywords[i]) < len(mentionKeywords[j])
|
|
||||||
})
|
|
||||||
|
|
||||||
table := "blocks_fts" // 大小写敏感
|
table := "blocks_fts" // 大小写敏感
|
||||||
if !Conf.Search.CaseSensitive {
|
if !Conf.Search.CaseSensitive {
|
||||||
|
|
|
||||||
|
|
@ -615,6 +615,7 @@ func GetDoc(startID, endID, id string, index int, keyword string, mode int, size
|
||||||
|
|
||||||
// 虚拟引用排除当前文档名 https://github.com/siyuan-note/siyuan/issues/4537
|
// 虚拟引用排除当前文档名 https://github.com/siyuan-note/siyuan/issues/4537
|
||||||
virtualBlockRefKeywords = gulu.Str.ExcludeElem(virtualBlockRefKeywords, []string{tree.Root.IALAttr("title")})
|
virtualBlockRefKeywords = gulu.Str.ExcludeElem(virtualBlockRefKeywords, []string{tree.Root.IALAttr("title")})
|
||||||
|
virtualBlockRefKeywords = prepareMarkKeywords(virtualBlockRefKeywords)
|
||||||
}
|
}
|
||||||
|
|
||||||
subTree := &parse.Tree{ID: rootID, Root: &ast.Node{Type: ast.NodeDocument}, Marks: tree.Marks}
|
subTree := &parse.Tree{ID: rootID, Root: &ast.Node{Type: ast.NodeDocument}, Marks: tree.Marks}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ package model
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"path"
|
"path"
|
||||||
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
@ -641,7 +642,24 @@ func stringQuery(query string) string {
|
||||||
return strings.TrimSpace(buf.String())
|
return strings.TrimSpace(buf.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func prepareMarkKeywords(keywords []string) (ret []string) {
|
||||||
|
keywords = gulu.Str.RemoveDuplicatedElem(keywords)
|
||||||
|
for _, k := range keywords {
|
||||||
|
if strings.ContainsAny(k, "?*!@#$%^&()[]{}\\|;:'\",.<>~`") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
ret = append(ret, k)
|
||||||
|
}
|
||||||
|
|
||||||
|
sort.SliceStable(ret, func(i, j int) bool {
|
||||||
|
return len(ret[i]) < len(ret[j])
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func markReplaceSpan(text string, keywords []string, replacementStart, replacementEnd string) (ret string) {
|
func markReplaceSpan(text string, keywords []string, replacementStart, replacementEnd string) (ret string) {
|
||||||
|
// 调用该函数前参数 keywords 必须使用 prepareMarkKeywords 函数进行预处理
|
||||||
|
|
||||||
parts := strings.Split(text, " ")
|
parts := strings.Split(text, " ")
|
||||||
for i, part := range parts {
|
for i, part := range parts {
|
||||||
if "" == part {
|
if "" == part {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue