From 167b0fda6ff1f581ea7ff73c16435d71e307d262 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Fri, 9 Dec 2022 12:08:07 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=90=9C=E7=B4=A2=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=8C=89=E7=9B=B8=E5=85=B3=E5=BA=A6=E6=8E=92=E5=BA=8F=20https:?= =?UTF-8?q?//github.com/siyuan-note/siyuan/issues/6827?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/appearance/langs/en_US.json | 2 ++ app/appearance/langs/es_ES.json | 2 ++ app/appearance/langs/fr_FR.json | 2 ++ app/appearance/langs/zh_CHT.json | 2 ++ app/appearance/langs/zh_CN.json | 2 ++ app/src/search/util.ts | 14 ++++++++++++++ app/src/types/index.d.ts | 2 +- kernel/api/search.go | 4 ++-- kernel/model/search.go | 14 ++++++++++---- 9 files changed, 37 insertions(+), 7 deletions(-) diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 2abd043ad..90a6c72bf 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1,4 +1,6 @@ { + "sortByRankDesc": "Relevance DESC", + "sortByRankAsc": "Relevance ASC", "saveCriterion": "Save named criterion", "useCriterion": "Use named criterion", "group": "Group", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 0ada0d2d7..e65ffa7ff 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1,4 +1,6 @@ { + "sortByRankDesc": "Relevancia DESC", + "sortByRankAsc": "Relevancia ASC", "saveCriterion": "Guardar criterio nombrado", "useCriterion": "Usar criterio con nombre", "grupo": "Grupo", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 329317b1d..b16f5f8a8 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1,4 +1,6 @@ { + "sortByRankDesc": "DESC de pertinence", + "sortByRankAsc": "ASC de pertinence", "saveCriterion": "Enregistrer le critère nommé", "useCriterion": "Utiliser le critère nommé", "groupe": "Groupe", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index e04670a2d..095f038da 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1,4 +1,6 @@ { + "sortByRankDesc": "按相關度降序", + "sortByRankAsc": "按相關度升序", "saveCriterion": "保存命名查詢", "useCriterion": "使用命名查詢", "group": "分組", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 287429581..2a0de37d2 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1,4 +1,6 @@ { + "sortByRankDesc": "按相关度降序", + "sortByRankAsc": "按相关度升序", "saveCriterion": "保存命名查询", "useCriterion": "使用命名查询", "group": "分组", diff --git a/app/src/search/util.ts b/app/src/search/util.ts index 30e539f33..a36726a88 100644 --- a/app/src/search/util.ts +++ b/app/src/search/util.ts @@ -597,6 +597,20 @@ const addConfigMoreMenu = async (config: ISearchOption, edit: Protyle, element: config.sort = 4; inputEvent(element, config, undefined, edit); } + }, { + label: window.siyuan.languages.sortByRankAsc, + current: config.sort === 6, + click() { + config.sort = 6; + inputEvent(element, config, undefined, edit); + } + }, { + label: window.siyuan.languages.sortByRankDesc, + current: config.sort === 7, + click() { + config.sort = 7; + inputEvent(element, config, undefined, edit); + } }]; if (config.group === 1) { sortMenu.push({ diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index 2e18e881e..4bdaa23a8 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -53,7 +53,7 @@ interface Window { interface ISearchOption { name?: string - sort: number, // 0:按块类型(默认),1:按创建时间升序,2:按创建时间降序,3:按更新时间升序,4:按更新时间降序,5:按内容顺序(仅在按文档分组时) + sort: number, // 0:按块类型(默认),1:按创建时间升序,2:按创建时间降序,3:按更新时间升序,4:按更新时间降序,5:按内容顺序(仅在按文档分组时),6:按相关度升序,7:按相关度降序 group: number, // 0:不分组,1:按文档分组 layout: number // 0:上下,1:左右 hasReplace: boolean, diff --git a/kernel/api/search.go b/kernel/api/search.go index 19fe7d105..906dd0e6a 100644 --- a/kernel/api/search.go +++ b/kernel/api/search.go @@ -219,12 +219,12 @@ func fullTextSearchBlock(c *gin.Context) { } } methodArg := arg["method"] - var method int // 0:文本,1:查询语法,2:SQL,3:正则表达式 + var method int // 0:关键字,1:查询语法,2:SQL,3:正则表达式 if nil != methodArg { method = int(methodArg.(float64)) } orderByArg := arg["orderBy"] - var orderBy int // 0:按块类型(默认),1:按创建时间升序,2:按创建时间降序,3:按更新时间升序,4:按更新时间降序,5:按内容顺序(仅在按文档分组时) + var orderBy int // 0:按块类型(默认),1:按创建时间升序,2:按创建时间降序,3:按更新时间升序,4:按更新时间降序,5:按内容顺序(仅在按文档分组时),6:按相关度升序,7:按相关度降序 if nil != orderByArg { orderBy = int(orderByArg.(float64)) } diff --git a/kernel/model/search.go b/kernel/model/search.go index 90e5bb4eb..b17e21bb6 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -314,8 +314,8 @@ func FindReplace(keyword, replacement string, ids []string, method int) (err err // FullTextSearchBlock 搜索内容块。 // -// method:0:文本,1:查询语法,2:SQL,3:正则表达式 -// orderBy: 0:按块类型(默认),1:按创建时间升序,2:按创建时间降序,3:按更新时间升序,4:按更新时间降序,5:按内容顺序(仅在按文档分组时) +// method:0:关键字,1:查询语法,2:SQL,3:正则表达式 +// orderBy: 0:按块类型(默认),1:按创建时间升序,2:按创建时间降序,3:按更新时间升序,4:按更新时间降序,5:按内容顺序(仅在按文档分组时),6:按相关度升序,7:按相关度降序 // groupBy:0:不分组,1:按文档分组 func FullTextSearchBlock(query string, boxes, paths []string, types map[string]bool, method, orderBy, groupBy int) (ret []*Block, matchedBlockCount, matchedRootCount int) { query = strings.TrimSpace(query) @@ -335,7 +335,7 @@ func FullTextSearchBlock(query string, boxes, paths []string, types map[string]b boxFilter := buildBoxesFilter(boxes) pathFilter := buildPathsFilter(paths) blocks, matchedBlockCount, matchedRootCount = fullTextSearchByRegexp(query, boxFilter, pathFilter, typeFilter, orderByClause, beforeLen) - default: // 文本 + default: // 关键字 filter := buildTypeFilter(types) boxFilter := buildBoxesFilter(boxes) pathFilter := buildPathsFilter(paths) @@ -411,7 +411,9 @@ func FullTextSearchBlock(query string, boxes, paths []string, types map[string]b case 4: // 按更新时间降序 sort.Slice(roots, func(i, j int) bool { return roots[i].Updated > roots[j].Updated }) case 5: // 按内容顺序(仅在按文档分组时) - // 都是文档,不需要再次排序 + // 都是文档,不需要再次排序 + case 6, 7: // 按相关度 + // 已在 ORDER BY 中处理 default: // 按块类型(默认) // 都是文档,不需要再次排序 } @@ -467,6 +469,10 @@ func buildOrderBy(orderBy int) string { return "ORDER BY updated ASC" case 4: return "ORDER BY updated DESC" + case 6: + return "ORDER BY rank DESC" // 默认是按相关度降序,所以按相关度升序要反过来使用 DESC + case 7: + return "ORDER BY rank" // 默认是按相关度降序 default: return "ORDER BY sort ASC" }