diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 881c7b1de..7faad9d50 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1,4 +1,5 @@ { + "allAttrs": "All attribute names and attribute values", "chooseSyncDirection": "Choose sync direction", "uploadData2Cloud": "⬆️ Upload data to cloud", "uploadData2CloudTip": "Overwrite cloud data based on local data", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index d48f93140..29dc2964a 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1,4 +1,5 @@ { + "allAttrs": "Todos los nombres de atributos y valores de atributos", "chooseSyncDirection": "Elegir dirección de sincronización", "uploadData2Cloud": "⬆️ Subir datos a la nube", "uploadData2CloudTip": "Sobrescribir datos en la nube basados ​​en datos locales", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 71222c1d7..304d90ed4 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1,4 +1,5 @@ { + "allAttrs": "Tous les noms d'attributs et les valeurs d'attributs", "chooseSyncDirection": "Choisir la direction de synchronisation", "uploadData2Cloud": "⬆️ Télécharger des données dans le cloud", "uploadData2CloudTip": "Écraser les données cloud basées sur les données locales", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 3eaac3e05..8e4ff9fef 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1,4 +1,5 @@ { + "allAttrs": "所有屬性名和屬性值", "chooseSyncDirection": "選擇同步方向", "uploadData2Cloud": "⬆️ 將數據上傳到雲端", "uploadData2CloudTip": "以本地數據為準覆蓋雲端數據", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 75f1221fe..470c2ac2e 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1,4 +1,5 @@ { + "allAttrs": "所有属性名和属性值", "chooseSyncDirection": "选择同步方向", "uploadData2Cloud": "⬆️ 将数据上传到云端", "uploadData2CloudTip": "以本地数据为准覆盖云端数据", diff --git a/app/src/config/query.ts b/app/src/config/query.ts index 63438d0a7..d275c5d75 100644 --- a/app/src/config/query.ts +++ b/app/src/config/query.ts @@ -148,10 +148,10 @@ export const query = { @@ -272,7 +272,7 @@ export const query = { name: (query.element.querySelector("#name") as HTMLInputElement).checked, alias: (query.element.querySelector("#alias") as HTMLInputElement).checked, memo: (query.element.querySelector("#memo") as HTMLInputElement).checked, - custom: (query.element.querySelector("#custom") as HTMLInputElement).checked, + ial: (query.element.querySelector("#ial") as HTMLInputElement).checked, limit: parseInt((query.element.querySelector("#limit") as HTMLInputElement).value), caseSensitive: (query.element.querySelector("#caseSensitive") as HTMLInputElement).checked, backlinkMentionName: (query.element.querySelector("#backlinkMentionName") as HTMLInputElement).checked, diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index f8e5760fd..96f2ed503 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -466,7 +466,7 @@ declare interface IConfig { name: boolean alias: boolean memo: boolean - custom: boolean + ial: boolean limit: number caseSensitive: boolean backlinkMentionName: boolean diff --git a/kernel/conf/search.go b/kernel/conf/search.go index eecf421f3..f7b772489 100644 --- a/kernel/conf/search.go +++ b/kernel/conf/search.go @@ -41,10 +41,10 @@ type Search struct { Limit int `json:"limit"` CaseSensitive bool `json:"caseSensitive"` - Name bool `json:"name"` - Alias bool `json:"alias"` - Memo bool `json:"memo"` - Custom bool `json:"custom"` + Name bool `json:"name"` + Alias bool `json:"alias"` + Memo bool `json:"memo"` + IAL bool `json:"ial"` BacklinkMentionName bool `json:"backlinkMentionName"` BacklinkMentionAlias bool `json:"backlinkMentionAlias"` @@ -77,10 +77,10 @@ func NewSearch() *Search { Limit: 64, CaseSensitive: true, - Name: true, - Alias: true, - Memo: true, - Custom: false, + Name: true, + Alias: true, + Memo: true, + IAL: false, BacklinkMentionName: true, BacklinkMentionAlias: false, diff --git a/kernel/model/search.go b/kernel/model/search.go index 0b62bd1fc..ed1ff2b7e 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -608,7 +608,7 @@ func fullTextSearchRefBlock(keyword string, beforeLen int) (ret []*Block) { else 65535 end ASC, sort ASC, length ASC` orderBy = strings.ReplaceAll(orderBy, "${keyword}", keyword) stmt += orderBy + " LIMIT " + strconv.Itoa(Conf.Search.Limit) - blocks := sql.SelectBlocksRawStmt(stmt, Conf.Search.Limit) + blocks := sql.SelectBlocksRawStmtNoParse(stmt, Conf.Search.Limit) ret = fromSQLBlocks(&blocks, "", beforeLen) if 1 > len(ret) { ret = []*Block{} @@ -644,7 +644,7 @@ func fullTextSearchByRegexp(exp, boxFilter, pathFilter, typeFilter, orderBy stri stmt += boxFilter + pathFilter stmt += " " + orderBy stmt += " LIMIT " + strconv.Itoa(Conf.Search.Limit) - blocks := sql.SelectBlocksRawStmt(stmt, Conf.Search.Limit) + blocks := sql.SelectBlocksRawStmtNoParse(stmt, Conf.Search.Limit) ret = fromSQLBlocks(&blocks, "", beforeLen) if 1 > len(ret) { ret = []*Block{} @@ -681,9 +681,9 @@ func fullTextSearchByFTS(query, boxFilter, pathFilter, typeFilter, orderBy strin "tag, " + "highlight(" + table + ", 11, '" + search.SearchMarkLeft + "', '" + search.SearchMarkRight + "') AS content, " + "fcontent, markdown, length, type, subtype, ial, sort, created, updated" - stmt := "SELECT " + projections + " FROM " + table + " WHERE " + table + " MATCH '" + columnFilter() + ":(" + query + ")' AND type IN " + typeFilter + stmt := "SELECT " + projections + " FROM " + table + " WHERE (`" + table + "` MATCH '" + columnFilter() + ":(" + query + ")'" + stmt += ") AND type IN " + typeFilter stmt += boxFilter + pathFilter - stmt += customIALFilter(query) stmt += " " + orderBy stmt += " LIMIT " + strconv.Itoa(Conf.Search.Limit) blocks := sql.SelectBlocksRawStmt(stmt, Conf.Search.Limit) @@ -713,9 +713,9 @@ func fullTextSearchCount(query, boxFilter, pathFilter, typeFilter string) (match table = "blocks_fts_case_insensitive" } - stmt := "SELECT COUNT(id) AS `matches`, COUNT(DISTINCT(root_id)) AS `docs` FROM `" + table + "` WHERE `" + table + "` MATCH '" + columnFilter() + ":(" + query + ")' AND type IN " + typeFilter + stmt := "SELECT COUNT(id) AS `matches`, COUNT(DISTINCT(root_id)) AS `docs` FROM `" + table + "` WHERE (`" + table + "` MATCH '" + columnFilter() + ":(" + query + ")'" + stmt += ") AND type IN " + typeFilter stmt += boxFilter + pathFilter - stmt += customIALFilter(query) result, _ := sql.Query(stmt) if 1 > len(result) { return @@ -725,20 +725,6 @@ func fullTextSearchCount(query, boxFilter, pathFilter, typeFilter string) (match return } -// customIALFilter 用于组装自定义属性过滤条件。 -// 打开自定义属性搜索选项后出现多余搜索结果 https://github.com/siyuan-note/siyuan/issues/7367 -func customIALFilter(query string) string { - if !Conf.Search.Custom { - return "" - } - - reg := strings.TrimPrefix(query, "\"") - reg = strings.TrimSuffix(reg, "\"") - reg = regexp.QuoteMeta(reg) - reg = "custom\\-.*" + reg + ".*" - return " AND ial REGEXP '" + reg + "'" -} - func markSearch(text string, keyword string, beforeLen int) (marked string, score float64) { if 0 == len(keyword) { marked = text @@ -880,7 +866,7 @@ func fieldRegexp(regexp string) string { buf.WriteString(regexp) buf.WriteString("'") } - if Conf.Search.Custom { + if Conf.Search.IAL { buf.WriteString(" OR ial REGEXP '") buf.WriteString(regexp) buf.WriteString("'") @@ -903,7 +889,7 @@ func columnFilter() string { if Conf.Search.Memo { buf.WriteString(" memo") } - if Conf.Search.Custom { + if Conf.Search.IAL { buf.WriteString(" ial") } buf.WriteString(" tag}")