فهرست منبع

:art: 搜索区分大小写根据配置项单独建立索引 Fix https://github.com/siyuan-note/siyuan/issues/5889

Liang Ding 2 سال پیش
والد
کامیت
0db807cea8
5فایلهای تغییر یافته به همراه14 افزوده شده و 29 حذف شده
  1. 0 10
      app/src/search/spread.ts
  2. 0 1
      kernel/api/router.go
  3. 5 15
      kernel/api/setting.go
  4. 3 0
      kernel/sql/database.go
  5. 6 3
      kernel/sql/upsert.go

+ 0 - 10
app/src/search/spread.ts

@@ -134,8 +134,6 @@ export const openSearch = async (hotkey: string, key?: string, notebookId?: stri
         <span class="fn__space"></span>
         <button id="includeChildCheck" class="b3-button b3-button--small${(notebookId && localData.idPath && !localData.idPath.endsWith(".sy")) ? "" : " b3-button--cancel"}">${window.siyuan.languages.includeChildDoc}</button>
         <span class="fn__space"></span>
-        <button id="searchCaseCheck" class="b3-button b3-button--small${window.siyuan.config.search.caseSensitive ? "" : " b3-button--cancel"}">${window.siyuan.languages.searchCaseSensitive}</button>
-        <span class="fn__space"></span>
         <button id="searchSyntaxCheck" class="b3-button b3-button--small${localData.querySyntax ? "" : " b3-button--cancel"}">${window.siyuan.languages.querySyntax}</button>
         <span class="fn__space"></span>
         <span aria-label="${window.siyuan.languages.type}" class="b3-tooltips b3-tooltips__nw">
@@ -306,14 +304,6 @@ export const openSearch = async (hotkey: string, key?: string, notebookId?: stri
         inputEvent();
         localStorage.setItem(Constants.LOCAL_SEARCHEDATA, JSON.stringify(localData));
     });
-    const searchCaseElement = dialog.element.querySelector("#searchCaseCheck");
-    searchCaseElement.addEventListener("click", () => {
-        searchCaseElement.classList.toggle("b3-button--cancel");
-        fetchPost("/api/setting/setSearchCaseSensitive", {caseSensitive: !searchCaseElement.classList.contains("b3-button--cancel")}, () => {
-            inputEvent();
-            window.siyuan.config.search.caseSensitive = !searchCaseElement.classList.contains("b3-button--cancel");
-        });
-    });
     const searchPanelElement = dialog.element.querySelector("#searchList");
     const searchInputElement = dialog.element.querySelector("#searchInput") as HTMLInputElement;
     const replaceInputElement = dialog.element.querySelector("#replaceInput") as HTMLInputElement;

+ 0 - 1
kernel/api/router.go

@@ -228,7 +228,6 @@ func ServeAPI(ginServer *gin.Engine) {
 	ginServer.Handle("POST", "/api/setting/getCustomCSS", model.CheckAuth, getCustomCSS)
 	ginServer.Handle("POST", "/api/setting/setCustomCSS", model.CheckAuth, setCustomCSS)
 	ginServer.Handle("POST", "/api/setting/setEmoji", model.CheckAuth, setEmoji)
-	ginServer.Handle("POST", "/api/setting/setSearchCaseSensitive", model.CheckAuth, setSearchCaseSensitive)
 
 	ginServer.Handle("POST", "/api/graph/resetGraph", model.CheckAuth, resetGraph)
 	ginServer.Handle("POST", "/api/graph/resetLocalGraph", model.CheckAuth, resetLocalGraph)

+ 5 - 15
kernel/api/setting.go

@@ -207,9 +207,14 @@ func setSearch(c *gin.Context) {
 		s.Limit = 32
 	}
 
+	oldCaseSensitive := model.Conf.Search.CaseSensitive
+
 	model.Conf.Search = s
 	model.Conf.Save()
 	sql.SetCaseSensitive(s.CaseSensitive)
+	if s.CaseSensitive != oldCaseSensitive {
+		model.RefreshFileTree()
+	}
 	sql.ClearVirtualRefKeywords()
 	ret.Data = s
 }
@@ -375,18 +380,3 @@ func setEmoji(c *gin.Context) {
 
 	model.Conf.Editor.Emoji = emoji
 }
-
-func setSearchCaseSensitive(c *gin.Context) {
-	ret := gulu.Ret.NewResult()
-	defer c.JSON(http.StatusOK, ret)
-
-	arg, ok := util.JsonArg(c, ret)
-	if !ok {
-		return
-	}
-
-	caseSensitive := arg["caseSensitive"].(bool)
-	model.Conf.Search.CaseSensitive = caseSensitive
-	model.Conf.Save()
-	sql.SetCaseSensitive(caseSensitive)
-}

+ 3 - 0
kernel/sql/database.go

@@ -252,7 +252,10 @@ func initDBConnection() {
 	db.SetConnMaxLifetime(365 * 24 * time.Hour)
 }
 
+var caseSensitive bool
+
 func SetCaseSensitive(b bool) {
+	caseSensitive = b
 	if b {
 		db.Exec("PRAGMA case_sensitive_like = ON;")
 	} else {

+ 6 - 3
kernel/sql/upsert.go

@@ -124,9 +124,12 @@ func insertBlocks0(tx *sql.Tx, bulk []*Block) (err error) {
 	if err = prepareExecInsertTx(tx, stmt, valueArgs); nil != err {
 		return
 	}
-	stmt = fmt.Sprintf(BlocksFTSCaseInsensitiveInsert, strings.Join(valueStrings, ","))
-	if err = prepareExecInsertTx(tx, stmt, valueArgs); nil != err {
-		return
+
+	if !caseSensitive {
+		stmt = fmt.Sprintf(BlocksFTSCaseInsensitiveInsert, strings.Join(valueStrings, ","))
+		if err = prepareExecInsertTx(tx, stmt, valueArgs); nil != err {
+			return
+		}
 	}
 	return
 }