diff --git a/kernel/api/search.go b/kernel/api/search.go index e16e47beb..bb4f16a43 100644 --- a/kernel/api/search.go +++ b/kernel/api/search.go @@ -341,11 +341,16 @@ func searchRefBlock(c *gin.Context) { isSquareBrackets = isSquareBracketsArg.(bool) } + isDatabase := false + if isDatabaseArg := arg["isDatabase"]; nil != isDatabaseArg { + isDatabase = isDatabaseArg.(bool) + } + rootID := arg["rootID"].(string) id := arg["id"].(string) keyword := arg["k"].(string) beforeLen := int(arg["beforeLen"].(float64)) - blocks, newDoc := model.SearchRefBlock(id, rootID, keyword, beforeLen, isSquareBrackets) + blocks, newDoc := model.SearchRefBlock(id, rootID, keyword, beforeLen, isSquareBrackets, isDatabase) ret.Data = map[string]interface{}{ "blocks": blocks, "newDoc": newDoc, diff --git a/kernel/model/search.go b/kernel/model/search.go index 3faf632ef..b6e228108 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -311,7 +311,7 @@ func buildEmbedBlock(embedBlockID string, excludeIDs []string, headingMode int, return } -func SearchRefBlock(id, rootID, keyword string, beforeLen int, isSquareBrackets bool) (ret []*Block, newDoc bool) { +func SearchRefBlock(id, rootID, keyword string, beforeLen int, isSquareBrackets, isDatabase bool) (ret []*Block, newDoc bool) { cachedTrees := map[string]*parse.Tree{} onlyDoc := false @@ -398,9 +398,13 @@ func SearchRefBlock(id, rootID, keyword string, beforeLen int, isSquareBrackets } ret = tmp - if block := treenode.GetBlockTree(id); nil != block { - p := path.Join(block.HPath, keyword) - newDoc = nil == treenode.GetBlockTreeRootByHPath(block.BoxID, p) + if !isDatabase { + // 如果非数据库中搜索块引,则不允许新建重名文档 + // 如果是数据库中搜索绑定块,则允许新建重名文档 https://github.com/siyuan-note/siyuan/issues/11713 + if block := treenode.GetBlockTree(id); nil != block { + p := path.Join(block.HPath, keyword) + newDoc = nil == treenode.GetBlockTreeRootByHPath(block.BoxID, p) + } } // 在 hPath 中加入笔记本名 Show notebooks in hpath of block ref search list results https://github.com/siyuan-note/siyuan/issues/9378