From 06b7c7e3db9f4d02833ee436fee5d23fc233bb66 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Wed, 5 Jun 2024 23:25:16 +0800 Subject: [PATCH] :art: Improve `Add to Database` search https://github.com/siyuan-note/siyuan/issues/11644 --- kernel/model/attribute_view.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index e16ee3ffd..bf1f0673c 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -317,6 +317,7 @@ func SearchAttributeView(keyword string, excludeAvIDs []string) (ret []*SearchAt ret = []*SearchAttributeViewResult{} keyword = strings.TrimSpace(keyword) + keywords := strings.Fields(keyword) type result struct { AvID string @@ -349,8 +350,19 @@ func SearchAttributeView(keyword string, excludeAvIDs []string) (ret []*SearchAt name, _ := av.GetAttributeViewNameByPath(filepath.Join(avDir, entry.Name())) info, _ := entry.Info() if "" != keyword { - if strings.Contains(strings.ToLower(name), strings.ToLower(keyword)) { - score := smetrics.JaroWinkler(name, keyword, 0.7, 4) + score := 0.0 + hit := false + for _, k := range keywords { + if strings.Contains(strings.ToLower(name), strings.ToLower(k)) { + score += smetrics.JaroWinkler(name, k, 0.7, 4) + hit = true + } else { + hit = false + break + } + } + + if hit { a := &result{AvID: id, AvName: name, Score: score} if nil != info && !info.ModTime().IsZero() { a.AvUpdated = info.ModTime().UnixMilli()