🎨 在 设置 - 搜索 中分别增加虚拟引用和反链提及 最大关键字数量限制 https://github.com/siyuan-note/siyuan/issues/6603

This commit is contained in:
Liang Ding 2022-11-16 16:22:34 +08:00
parent 1bb3870243
commit 87fde9a1e8
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
9 changed files with 19 additions and 9 deletions

View file

@ -49,11 +49,13 @@ type Search struct {
BacklinkMentionAlias bool `json:"backlinkMentionAlias"`
BacklinkMentionAnchor bool `json:"backlinkMentionAnchor"`
BacklinkMentionDoc bool `json:"backlinkMentionDoc"`
BacklinkMentionLimit int `json:"backlinkMentionLimit"`
VirtualRefName bool `json:"virtualRefName"`
VirtualRefAlias bool `json:"virtualRefAlias"`
VirtualRefAnchor bool `json:"virtualRefAnchor"`
VirtualRefDoc bool `json:"virtualRefDoc"`
VirtualRefLimit int `json:"virtualRefLimit"`
}
func NewSearch() *Search {
@ -82,11 +84,13 @@ func NewSearch() *Search {
BacklinkMentionAlias: false,
BacklinkMentionAnchor: true,
BacklinkMentionDoc: true,
BacklinkMentionLimit: 512,
VirtualRefName: true,
VirtualRefAlias: false,
VirtualRefAnchor: true,
VirtualRefDoc: true,
VirtualRefLimit: 512,
}
}

View file

@ -737,7 +737,7 @@ func searchBackmention(mentionKeywords []string, keyword string, excludeBacklink
buf := bytes.Buffer{}
buf.WriteString("SELECT * FROM " + table + " WHERE " + table + " MATCH '{content}:(")
for i, mentionKeyword := range mentionKeywords {
if 511 < i { // 提及搜索最大限制 https://github.com/siyuan-note/siyuan/issues/3715
if Conf.Search.BacklinkMentionLimit < i {
util.PushMsg(fmt.Sprintf(Conf.Language(38), len(mentionKeywords)), 5000)
mentionKeyword = strings.ReplaceAll(mentionKeyword, "\"", "\"\"")
buf.WriteString("\"" + mentionKeyword + "\"")

View file

@ -278,6 +278,12 @@ func InitConf() {
if 1 > Conf.Search.Limit {
Conf.Search.Limit = 64
}
if 1 > Conf.Search.BacklinkMentionLimit {
Conf.Search.BacklinkMentionLimit = 512
}
if 1 > Conf.Search.VirtualRefLimit {
Conf.Search.VirtualRefLimit = 512
}
if nil == Conf.Stat {
Conf.Stat = conf.NewStat()

View file

@ -109,9 +109,9 @@ func getVirtualRefKeywords(docName string) (ret []string) {
// 虚拟引用排除当前文档名 https://github.com/siyuan-note/siyuan/issues/4537
ret = gulu.Str.ExcludeElem(ret, []string{docName})
ret = prepareMarkKeywords(ret)
// 虚拟引用搜索关键字最多支持 `搜索结果显示数` 的 8 倍 https://github.com/siyuan-note/siyuan/issues/6603
if Conf.Search.Limit*8 < len(ret) {
ret = ret[:Conf.Search.Limit*8]
if Conf.Search.VirtualRefLimit < len(ret) {
ret = ret[:Conf.Search.VirtualRefLimit]
}
return
}