From 4528be886e565909055081778c2f7d39a12a6c8c Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 29 May 2025 10:44:54 +0800 Subject: [PATCH] :art: Improve backlink filtering below the heading https://github.com/siyuan-note/siyuan/issues/14929 --- kernel/model/backlink.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/kernel/model/backlink.go b/kernel/model/backlink.go index ea2543303..5cff17ead 100644 --- a/kernel/model/backlink.go +++ b/kernel/model/backlink.go @@ -476,7 +476,7 @@ func GetBacklink(id, keyword, mentionKeyword string, beforeLen int, containChild var paragraphParentIDs []string for _, link := range links { for _, ref := range link.Refs { - if "NodeParagraph" == ref.Type { + if "NodeParagraph" == ref.Type || "NodeHeading" == ref.Type { paragraphParentIDs = append(paragraphParentIDs, ref.ParentID) } } @@ -494,7 +494,7 @@ func GetBacklink(id, keyword, mentionKeyword string, beforeLen int, containChild } for _, link := range links { for _, ref := range link.Refs { - if "NodeParagraph" == ref.Type { + if "NodeParagraph" == ref.Type || "NodeHeading" == ref.Type { if processedParagraphs.Contains(ref.ParentID) { continue } @@ -580,7 +580,7 @@ func buildLinkRefs(defRootID string, refs []*sql.Ref, keywords []string) (ret [] var paragraphParentIDs []string for _, link := range links { for _, ref := range link.Refs { - if "NodeParagraph" == ref.Type { + if "NodeParagraph" == ref.Type || "NodeHeading" == ref.Type { parentRefParagraphs[ref.ParentID] = ref paragraphParentIDs = append(paragraphParentIDs, ref.ParentID) } @@ -615,7 +615,15 @@ func buildLinkRefs(defRootID string, refs []*sql.Ref, keywords []string) (ret [] continue } - if "" != strings.TrimSpace(c.Text()) { + text := c.Text() + if strings.HasPrefix(text, "#") { + tmp := strings.ReplaceAll(text, "#", "") + if " " == tmp { // 如果是标题标记符则跳过 + continue + } + } + + if "" != strings.TrimSpace(text) { paragraphUseParentLi = false break } @@ -640,7 +648,7 @@ func buildLinkRefs(defRootID string, refs []*sql.Ref, keywords []string) (ret [] } for _, link := range links { for _, ref := range link.Refs { - if "NodeParagraph" == ref.Type { + if "NodeParagraph" == ref.Type || "NodeHeading" == ref.Type { if processedParagraphs.Contains(ref.ParentID) { continue }