From 6dbb18e69ed941958bed5d19536da8d5094b9233 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 24 Oct 2024 10:16:49 +0800 Subject: [PATCH 1/5] :art: Return document blocks when search hits different block content https://github.com/siyuan-note/siyuan/issues/10584 --- kernel/model/search.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/kernel/model/search.go b/kernel/model/search.go index ef4be5674..184f88b25 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -1381,15 +1381,16 @@ func fullTextSearchCountByFTS(query, boxFilter, pathFilter, typeFilter, ignoreFi } func fullTextSearchByFTSWithRoot(query, boxFilter, pathFilter, typeFilter, ignoreFilter, orderBy string, beforeLen, page, pageSize int) (ret []*Block, matchedBlockCount, matchedRootCount int) { + start := time.Now() + defer func() { + logging.LogInfof("time cost: %v", time.Since(start)) + }() + table := "blocks_fts" // 大小写敏感 if !Conf.Search.CaseSensitive { table = "blocks_fts_case_insensitive" } - mQ := stringQuery(query) - bMatchStmt := "SELECT id FROM " + table + " WHERE (" + table + " MATCH '" + columnFilter() + ":(" + mQ + ")')" - bMatchStmt += " AND type IN " + typeFilter + boxFilter + pathFilter + ignoreFilter - query = strings.ReplaceAll(query, "'", "''") query = strings.ReplaceAll(query, "\"", "\"\"") keywords := strings.Split(query, " ") @@ -1400,11 +1401,13 @@ func fullTextSearchByFTSWithRoot(query, boxFilter, pathFilter, typeFilter, ignor likeFilter += " AND " } } - dMatchStmt := "SELECT root_id, GROUP_CONCAT(content) AS docContent" + + bMatchStmt := "SELECT id FROM " + table + " WHERE " + strings.ReplaceAll(likeFilter, "docContent LIKE ", "content LIKE ") + bMatchStmt += " AND type IN " + typeFilter + boxFilter + pathFilter + ignoreFilter + dMatchStmt := "SELECT root_id, GROUP_CONCAT(content || tag || name || alias || memo) AS docContent" + " FROM " + table + " WHERE type IN " + typeFilter + boxFilter + pathFilter + ignoreFilter + " GROUP BY root_id HAVING " + likeFilter - cteStmt := "WITH docs AS (" + dMatchStmt + "), blocks AS (" + bMatchStmt + ")" - cteStmt += "\nSELECT * FROM " + table + " WHERE id IN (SELECT id FROM blocks) OR id IN (SELECT root_id FROM docs)" + cteStmt := "WITH docBlocks AS (" + dMatchStmt + "), nonDocBlocks AS (" + bMatchStmt + ")" + cteStmt += "\nSELECT * FROM " + table + " WHERE id IN (SELECT id FROM nonDocBlocks) OR id IN (SELECT root_id FROM docBlocks)" countStmt := cteStmt cteStmt += orderBy + " LIMIT " + strconv.Itoa(pageSize) + " OFFSET " + strconv.Itoa((page-1)*pageSize) resultBlocks := sql.SelectBlocksRawStmtNoParse(cteStmt, -1) @@ -1419,7 +1422,7 @@ func fullTextSearchByFTSWithRoot(query, boxFilter, pathFilter, typeFilter, ignor "snippet(" + table + ", 10, '" + search.SearchMarkLeft + "', '" + search.SearchMarkRight + "', '...', 64) AS tag, " + "snippet(" + table + ", 11, '" + search.SearchMarkLeft + "', '" + search.SearchMarkRight + "', '...', 512) AS content, " + "fcontent, markdown, length, type, subtype, ial, sort, created, updated" - stmt := "SELECT " + projections + " FROM " + table + " WHERE (`" + table + "` MATCH '" + columnFilter() + ":(" + query + ")'" + stmt := "SELECT " + projections + " FROM " + table + " WHERE (`" + table + "` MATCH '" + columnFilter() + ":(" + stringQuery(query) + ")'" stmt += ") AND type IN " + typeFilter + boxFilter + pathFilter + ignoreFilter + orderBy + " LIMIT " + strconv.Itoa(pageSize) + " OFFSET " + strconv.Itoa((page-1)*pageSize) blocks := sql.SelectBlocksRawStmt(stmt, page, pageSize) for i, resultBlock := range resultBlocks { From 96fddd989eb7a47c52624b428dcbc43a663d7870 Mon Sep 17 00:00:00 2001 From: Jane Haring <52415314+wwxiaoqi@users.noreply.github.com> Date: Thu, 24 Oct 2024 16:14:21 +0800 Subject: [PATCH 2/5] :art: Update auto aur PKGBUILD. (#12890) --- .github/workflows/auto_aur_release_stable.yml | 44 ++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/.github/workflows/auto_aur_release_stable.yml b/.github/workflows/auto_aur_release_stable.yml index 48d121415..bf92528dd 100644 --- a/.github/workflows/auto_aur_release_stable.yml +++ b/.github/workflows/auto_aur_release_stable.yml @@ -45,27 +45,51 @@ jobs: arch=("x86_64") url="https://b3log.org/siyuan" license=("AGPL-3.0-only") - _pkgname=siyuan-\${pkgver}-linux.AppImage - noextract=(siyuan-\${pkgver}-linux.AppImage) options=("!strip" "!debug") depends=("fuse2") optdepends=('pandoc: docx export') source=("https://github.com/siyuan-note/siyuan/releases/download/v\${pkgver}/siyuan-\${pkgver}-linux.AppImage") sha256sums=('SKIP') - _installdir=/opt/appimages + _pkgname=siyuan-\${pkgver}-linux.AppImage + noextract=("\${_pkgname}") prepare() { - chmod a+x \${_pkgname} - ./\${_pkgname} --appimage-extract >/dev/null - sed -i "s+AppRun+\${_installdir}/siyuan.AppImage+" "squashfs-root/siyuan.desktop" - sed -i "s+^Icon=.*+Icon=siyuan-bin+" "squashfs-root/siyuan.desktop" + chmod +x "\${_pkgname}" + ./"\${_pkgname}" --appimage-extract > /dev/null + } + + build() { + # Adjust .desktop so it will work autside of AppImage container + sed -i \\ + -e "s|Exec=AppRun|Exec=/opt/\${pkgname}/\${pkgname}.AppImage|" \\ + -e "s+^Icon=.*+Icon=siyuan-bin+" \\ + "squashfs-root/siyuan.desktop" + + # Fix permissions; .AppImage permissions are 700 for all directories + chmod -R a-x+rX squashfs-root/usr } package() { - install -Dm755 \${_pkgname} "\${pkgdir}/\${_installdir}/siyuan.AppImage" - install -Dm644 "squashfs-root/resources/stage/icon.png" "\${pkgdir}/usr/share/icons/hicolor/512x512/apps/siyuan-bin.png" - install -Dm644 "squashfs-root/siyuan.desktop" "\${pkgdir}/usr/share/applications/siyuan-bin.desktop" + # AppImage + install -Dm755 "\${srcdir}/\${_pkgname}" "\${pkgdir}/opt/\${pkgname}/\${pkgname}.AppImage" + install -Dm644 "\${srcdir}/squashfs-root/LICENSE" "\${pkgdir}/opt/\${pkgname}/LICENSE" + + # Desktop file + install -Dm644 "\${srcdir}/squashfs-root/siyuan.desktop" \\ + "\${pkgdir}/usr/share/applications/siyuan.desktop" + + # Icon images + install -Dm644 "squashfs-root/resources/stage/icon.png" \\ + "\${pkgdir}/usr/share/icons/hicolor/512x512/apps/siyuan-bin.png" + + # Symlink executable + install -dm755 "\${pkgdir}/usr/bin" + ln -s "/opt/\${pkgname}/\${pkgname}.AppImage" "\${pkgdir}/usr/bin/siyuan" + + # Symlink license + install -dm755 "\${pkgdir}/usr/share/licenses/\${pkgname}/" + ln -s "/opt/\${pkgname}/LICENSE" "\${pkgdir}/usr/share/licenses/\${pkgname}" } EOF From c77f8cbece452a70685cf58db33a1d8662051dfe Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 24 Oct 2024 16:26:19 +0800 Subject: [PATCH 3/5] :recycle: Upgrade to Electron v32.2.2 https://github.com/siyuan-note/siyuan/issues/12891 --- .github/CONTRIBUTING.md | 6 +-- .github/CONTRIBUTING_zh_CN.md | 6 +-- app/package.json | 2 +- app/pnpm-lock.yaml | 79 ++++++++++++++++++----------------- 4 files changed, 47 insertions(+), 46 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index e53fc9647..8dbc75413 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -14,10 +14,10 @@ Install pnpm: `npm install -g pnpm@9.12.1` Set the Electron mirror environment variable and install Electron: -* macOS/Linux: `ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.0 -D` +* macOS/Linux: `ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.2 -D` * Windows: * `SET ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/` - * `pnpm install electron@v32.2.0 -D` + * `pnpm install electron@v32.2.2 -D` NPM mirror: @@ -28,7 +28,7 @@ NPM mirror: On the desktop, go to the app folder to run: -* `pnpm install electron@v32.2.0 -D` +* `pnpm install electron@v32.2.2 -D` * `pnpm run dev` * `pnpm run start` diff --git a/.github/CONTRIBUTING_zh_CN.md b/.github/CONTRIBUTING_zh_CN.md index a471a61e7..b54f9b733 100644 --- a/.github/CONTRIBUTING_zh_CN.md +++ b/.github/CONTRIBUTING_zh_CN.md @@ -16,11 +16,11 @@ * macOS/Linux: ``` - ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.0 -D + ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@v32.2.2 -D ``` * Windows: * `SET ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/` - * `pnpm install electron@v32.2.0 -D` + * `pnpm install electron@v32.2.2 -D` NPM 镜像: @@ -30,7 +30,7 @@ NPM 镜像: 桌面端进入 app 文件夹运行: -* `pnpm install electron@v32.2.0 -D` +* `pnpm install electron@v32.2.2 -D` * `pnpm run dev` * `pnpm run start` diff --git a/app/package.json b/app/package.json index d4c7ece59..b4946cfc7 100644 --- a/app/package.json +++ b/app/package.json @@ -56,7 +56,7 @@ "clean-webpack-plugin": "^4.0.0", "css-loader": "^6.7.1", "dayjs": "^1.11.5", - "electron": "32.2.0", + "electron": "32.2.2", "electron-builder": "24.13.3", "encoding": "^0.1.13", "esbuild-loader": "^3.0.1", diff --git a/app/pnpm-lock.yaml b/app/pnpm-lock.yaml index 65588c801..cdc2c9be9 100644 --- a/app/pnpm-lock.yaml +++ b/app/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@electron/remote': specifier: ^2.1.2 - version: 2.1.2(electron@32.2.0) + version: 2.1.2(electron@32.2.2) devDependencies: '@types/node': specifier: ^18.13.0 @@ -26,37 +26,37 @@ importers: version: 2.19.0 clean-webpack-plugin: specifier: ^4.0.0 - version: 4.0.0(webpack@5.95.0(webpack-cli@4.10.0)) + version: 4.0.0(webpack@5.95.0) css-loader: specifier: ^6.7.1 - version: 6.7.1(webpack@5.95.0(webpack-cli@4.10.0)) + version: 6.7.1(webpack@5.95.0) dayjs: specifier: ^1.11.5 version: 1.11.5 electron: - specifier: 32.2.0 - version: 32.2.0 + specifier: 32.2.2 + version: 32.2.2 electron-builder: specifier: 24.13.3 - version: 24.13.3(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3)) + version: 24.13.3(electron-builder-squirrel-windows@25.0.5) encoding: specifier: ^0.1.13 version: 0.1.13 esbuild-loader: specifier: ^3.0.1 - version: 3.0.1(webpack@5.95.0(webpack-cli@4.10.0)) + version: 3.0.1(webpack@5.95.0) eslint: specifier: ^8.19.0 version: 8.19.0 file-loader: specifier: ^6.2.0 - version: 6.2.0(webpack@5.95.0(webpack-cli@4.10.0)) + version: 6.2.0(webpack@5.95.0) html-loader: specifier: ^2.1.2 - version: 2.1.2(webpack@5.95.0(webpack-cli@4.10.0)) + version: 2.1.2(webpack@5.95.0) html-webpack-plugin: specifier: ^5.5.0 - version: 5.5.0(webpack@5.95.0(webpack-cli@4.10.0)) + version: 5.5.0(webpack@5.95.0) iconv-lite: specifier: ^0.6.3 version: 0.6.3 @@ -65,7 +65,7 @@ importers: version: 2.3.2 mini-css-extract-plugin: specifier: 2.7.6 - version: 2.7.6(webpack@5.95.0(webpack-cli@4.10.0)) + version: 2.7.6(webpack@5.95.0) path-browserify: specifier: ^1.0.1 version: 1.0.1 @@ -77,7 +77,7 @@ importers: version: 1.53.0 sass-loader: specifier: ^12.6.0 - version: 12.6.0(sass@1.53.0)(webpack@5.95.0(webpack-cli@4.10.0)) + version: 12.6.0(sass@1.53.0)(webpack@5.95.0) typescript: specifier: ^4.7.4 version: 4.7.4 @@ -762,6 +762,7 @@ packages: boolean@3.2.0: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1121,8 +1122,8 @@ packages: electron-to-chromium@1.5.39: resolution: {integrity: sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==} - electron@32.2.0: - resolution: {integrity: sha512-Xy82QBQrEiQysoxsv6lnhHAcWNNe6vV6QqH3OPFXhEj/T9oAsBHEhZuuYHINSSsUE7zRSj+J9sNwJYOjisT0Vw==} + electron@32.2.2: + resolution: {integrity: sha512-c7TRE42JcgEmJ4elJyCdKk/2os0UX7YMkRDeXBkxFEoM34iX1/2x+c5T9PgeroKz8FEG7omRU5TvjulqVtXvdw==} engines: {node: '>= 12.20.55'} hasBin: true @@ -2812,9 +2813,9 @@ snapshots: - bluebird - supports-color - '@electron/remote@2.1.2(electron@32.2.0)': + '@electron/remote@2.1.2(electron@32.2.2)': dependencies: - electron: 32.2.0 + electron: 32.2.2 '@electron/universal@1.5.1': dependencies: @@ -3249,17 +3250,17 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@4.10.0))': + '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.95.0)': dependencies: webpack: 5.95.0(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0) - '@webpack-cli/info@1.5.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0))': + '@webpack-cli/info@1.5.0(webpack-cli@4.10.0)': dependencies: envinfo: 7.8.1 webpack-cli: 4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0) - '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0))': + '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)': dependencies: webpack-cli: 4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0) @@ -3346,7 +3347,7 @@ snapshots: app-builder-bin@5.0.0-alpha.7: {} - app-builder-lib@24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3)): + app-builder-lib@24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5): dependencies: '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.2.1 @@ -3380,7 +3381,7 @@ snapshots: transitivePeerDependencies: - supports-color - app-builder-lib@25.0.5(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3)): + app-builder-lib@25.0.5(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5): dependencies: '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.3.2 @@ -3677,7 +3678,7 @@ snapshots: clean-stack@2.2.0: {} - clean-webpack-plugin@4.0.0(webpack@5.95.0(webpack-cli@4.10.0)): + clean-webpack-plugin@4.0.0(webpack@5.95.0): dependencies: del: 4.1.1 webpack: 5.95.0(webpack-cli@4.10.0) @@ -3779,7 +3780,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@6.7.1(webpack@5.95.0(webpack-cli@4.10.0)): + css-loader@6.7.1(webpack@5.95.0): dependencies: icss-utils: 5.1.0(postcss@8.4.31) postcss: 8.4.31 @@ -3862,7 +3863,7 @@ snapshots: dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5): dependencies: - app-builder-lib: 24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3)) + app-builder-lib: 24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5) builder-util: 24.13.1 builder-util-runtime: 9.2.4 fs-extra: 10.1.0 @@ -3937,7 +3938,7 @@ snapshots: electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3): dependencies: - app-builder-lib: 25.0.5(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3)) + app-builder-lib: 25.0.5(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5) archiver: 5.3.2 builder-util: 25.0.3 fs-extra: 10.1.0 @@ -3946,9 +3947,9 @@ snapshots: - dmg-builder - supports-color - electron-builder@24.13.3(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3)): + electron-builder@24.13.3(electron-builder-squirrel-windows@25.0.5): dependencies: - app-builder-lib: 24.13.3(dmg-builder@24.13.3(electron-builder-squirrel-windows@25.0.5))(electron-builder-squirrel-windows@25.0.5(dmg-builder@24.13.3)) + app-builder-lib: 24.13.3(dmg-builder@24.13.3)(electron-builder-squirrel-windows@25.0.5) builder-util: 24.13.1 builder-util-runtime: 9.2.4 chalk: 4.1.2 @@ -3989,7 +3990,7 @@ snapshots: electron-to-chromium@1.5.39: {} - electron@32.2.0: + electron@32.2.2: dependencies: '@electron/get': 2.0.2 '@types/node': 20.14.5 @@ -4029,7 +4030,7 @@ snapshots: es6-error@4.1.1: optional: true - esbuild-loader@3.0.1(webpack@5.95.0(webpack-cli@4.10.0)): + esbuild-loader@3.0.1(webpack@5.95.0): dependencies: esbuild: 0.17.10 get-tsconfig: 4.4.0 @@ -4192,7 +4193,7 @@ snapshots: dependencies: flat-cache: 3.0.4 - file-loader@6.2.0(webpack@5.95.0(webpack-cli@4.10.0)): + file-loader@6.2.0(webpack@5.95.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.1.1 @@ -4409,7 +4410,7 @@ snapshots: dependencies: lru-cache: 6.0.0 - html-loader@2.1.2(webpack@5.95.0(webpack-cli@4.10.0)): + html-loader@2.1.2(webpack@5.95.0): dependencies: html-minifier-terser: 5.1.1 parse5: 6.0.1 @@ -4435,7 +4436,7 @@ snapshots: relateurl: 0.2.7 terser: 5.14.1 - html-webpack-plugin@5.5.0(webpack@5.95.0(webpack-cli@4.10.0)): + html-webpack-plugin@5.5.0(webpack@5.95.0): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -4759,7 +4760,7 @@ snapshots: mimic-response@3.1.0: {} - mini-css-extract-plugin@2.7.6(webpack@5.95.0(webpack-cli@4.10.0)): + mini-css-extract-plugin@2.7.6(webpack@5.95.0): dependencies: schema-utils: 4.2.0 webpack: 5.95.0(webpack-cli@4.10.0) @@ -5212,7 +5213,7 @@ snapshots: dependencies: truncate-utf8-bytes: 1.0.2 - sass-loader@12.6.0(sass@1.53.0)(webpack@5.95.0(webpack-cli@4.10.0)): + sass-loader@12.6.0(sass@1.53.0)(webpack@5.95.0): dependencies: klona: 2.0.5 neo-async: 2.6.2 @@ -5408,7 +5409,7 @@ snapshots: async-exit-hook: 2.0.1 fs-extra: 10.1.0 - terser-webpack-plugin@5.3.10(webpack@5.95.0(webpack-cli@4.10.0)): + terser-webpack-plugin@5.3.10(webpack@5.95.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 @@ -5546,9 +5547,9 @@ snapshots: webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0))(webpack@5.95.0(webpack-cli@4.10.0)) - '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0)) - '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.5.0)(webpack@5.95.0)) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.95.0) + '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0) colorette: 2.0.19 commander: 7.2.0 cross-spawn: 7.0.3 @@ -5595,7 +5596,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.95.0(webpack-cli@4.10.0)) + terser-webpack-plugin: 5.3.10(webpack@5.95.0) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: From 4367a6f0a05b32b7b459d75a28f923a672593f8d Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 24 Oct 2024 16:34:02 +0800 Subject: [PATCH 4/5] :memo: Update the user guide https://ld246.com/article/1729588229982 --- .../20200924100744-br924ar.sy | 12 +++++------ .../20200915214115-42b8zma.sy | 20 ++++++------------ .../20211226123038-4umgpxy.sy | 21 +++++++------------ .../20240530101000-1m5un7l.sy | 13 ++++++------ 4 files changed, 25 insertions(+), 41 deletions(-) diff --git a/app/guide/20210808180117-6v0mkxr/20200923234011-ieuun1p/20210808180303-xaduj2o/20200924100744-br924ar.sy b/app/guide/20210808180117-6v0mkxr/20200923234011-ieuun1p/20210808180303-xaduj2o/20200924100744-br924ar.sy index 93908c220..849eb4221 100644 --- a/app/guide/20210808180117-6v0mkxr/20200923234011-ieuun1p/20210808180303-xaduj2o/20200924100744-br924ar.sy +++ b/app/guide/20210808180117-6v0mkxr/20200923234011-ieuun1p/20210808180303-xaduj2o/20200924100744-br924ar.sy @@ -6,7 +6,7 @@ "id": "20200924100744-br924ar", "title": "Assets", "type": "doc", - "updated": "20231110112758" + "updated": "20241024163243" }, "Children": [ { @@ -624,7 +624,7 @@ "HeadingLevel": 2, "Properties": { "id": "20220503122349-eacedlu", - "updated": "20220503122357" + "updated": "20241024163243" }, "Children": [ { @@ -667,7 +667,7 @@ "ListData": {}, "Properties": { "id": "20220503122349-o26mvnq", - "updated": "20220715105117" + "updated": "20241024163243" }, "Children": [ { @@ -679,7 +679,7 @@ }, "Properties": { "id": "20220503122349-192fehc", - "updated": "20220503122616" + "updated": "20241024163243" }, "Children": [ { @@ -687,12 +687,12 @@ "Type": "NodeParagraph", "Properties": { "id": "20220503122349-ye6haas", - "updated": "20220503122616" + "updated": "20241024163243" }, "Children": [ { "Type": "NodeText", - "Data": "When deleting the notebook, in order to ensure that cross-notebook asset references work properly, the assets under the notebook will be copied to the global assets in batches" + "Data": "When deleting the doc, the assets referenced by the doc will be copied to the global assets in batches to ensure the normal operation of cross-notebook asset references" } ] } diff --git a/app/guide/20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180321-hbvl5c2/20200915214115-42b8zma.sy b/app/guide/20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180321-hbvl5c2/20200915214115-42b8zma.sy index 42c791e9a..c87728ad8 100644 --- a/app/guide/20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180321-hbvl5c2/20200915214115-42b8zma.sy +++ b/app/guide/20210808180117-czj9bvb/20200812220555-lj3enxa/20210808180321-hbvl5c2/20200915214115-42b8zma.sy @@ -6,7 +6,7 @@ "id": "20200915214115-42b8zma", "title": "资源文件", "type": "doc", - "updated": "20231110112936" + "updated": "20241024163136" }, "Children": [ { @@ -626,7 +626,7 @@ "HeadingLevel": 2, "Properties": { "id": "20210615102657-kampx8a", - "updated": "20220503121605" + "updated": "20241024163136" }, "Children": [ { @@ -669,7 +669,7 @@ "ListData": {}, "Properties": { "id": "20220503121213-afjyt05", - "updated": "20220715105016" + "updated": "20241024163136" }, "Children": [ { @@ -681,7 +681,7 @@ }, "Properties": { "id": "20220503121214-haxyvyt", - "updated": "20220503121401" + "updated": "20241024163136" }, "Children": [ { @@ -689,20 +689,12 @@ "Type": "NodeParagraph", "Properties": { "id": "20220503121214-cmqtvby", - "updated": "20220503121401" + "updated": "20241024163136" }, "Children": [ { "Type": "NodeText", - "Data": "删除该笔记本时,为保证跨笔记本资源文件引用正常工作,该笔记本下的资源文件会被批量复制到全局 " - }, - { - "Type": "NodeText", - "Data": "assets" - }, - { - "Type": "NodeText", - "Data": " 中" + "Data": "删除该笔记时,为保证跨笔记本资源文件引用正常工作,该笔记引用的资源文件会被批量复制到全局 assets 中" } ] } diff --git a/app/guide/20211226090932-5lcq56f/20211226115423-d5z1joq/20211226121203-rjjngpz/20211226123038-4umgpxy.sy b/app/guide/20211226090932-5lcq56f/20211226115423-d5z1joq/20211226121203-rjjngpz/20211226123038-4umgpxy.sy index 77ef69f4e..29412be16 100644 --- a/app/guide/20211226090932-5lcq56f/20211226115423-d5z1joq/20211226121203-rjjngpz/20211226123038-4umgpxy.sy +++ b/app/guide/20211226090932-5lcq56f/20211226115423-d5z1joq/20211226121203-rjjngpz/20211226123038-4umgpxy.sy @@ -5,7 +5,8 @@ "Properties": { "id": "20211226123038-4umgpxy", "title": "資料文件", - "updated": "20231110112927" + "type": "doc", + "updated": "20241024163151" }, "Children": [ { @@ -609,7 +610,7 @@ "HeadingLevel": 2, "Properties": { "id": "20220503122338-a69glac", - "updated": "20220715092913" + "updated": "20241024163151" }, "Children": [ { @@ -652,7 +653,7 @@ "ListData": {}, "Properties": { "id": "20220503122338-jmr7c2k", - "updated": "20220715105038" + "updated": "20241024163151" }, "Children": [ { @@ -664,7 +665,7 @@ }, "Properties": { "id": "20220503122338-4zg71qe", - "updated": "20220715092936" + "updated": "20241024163151" }, "Children": [ { @@ -672,20 +673,12 @@ "Type": "NodeParagraph", "Properties": { "id": "20220503122338-t6apzrh", - "updated": "20220715092936" + "updated": "20241024163151" }, "Children": [ { "Type": "NodeText", - "Data": "刪除該筆記本時,為保證跨筆記本資料文件引用正常工作,該筆記本下的資料文件會被批量複製到全域 " - }, - { - "Type": "NodeText", - "Data": "assets" - }, - { - "Type": "NodeText", - "Data": " 中" + "Data": "刪除該筆記時,為確保跨筆記本資源檔案引用正常運作,該筆記引用的資源檔案會被批次複製到全域 assets 中" } ] } diff --git a/app/guide/20240530133126-axarxgx/20240530101000-4qitucx/20240530101000-g3ugxml/20240530101000-1m5un7l.sy b/app/guide/20240530133126-axarxgx/20240530101000-4qitucx/20240530101000-g3ugxml/20240530101000-1m5un7l.sy index dbb63984d..e45dfdcd9 100644 --- a/app/guide/20240530133126-axarxgx/20240530101000-4qitucx/20240530101000-g3ugxml/20240530101000-1m5un7l.sy +++ b/app/guide/20240530133126-axarxgx/20240530101000-4qitucx/20240530101000-g3ugxml/20240530101000-1m5un7l.sy @@ -7,7 +7,7 @@ "id": "20240530101000-1m5un7l", "title": "アセット", "type": "doc", - "updated": "20240530101000" + "updated": "20241024163314" }, "Children": [ { @@ -670,7 +670,7 @@ "Properties": { "ID": "20240530101000-nmkttsp", "id": "20240530101000-e91yggl", - "updated": "20240530101000" + "updated": "20241024163314" }, "Children": [ { @@ -725,7 +725,7 @@ "Properties": { "ID": "20240530101000-ycli2ph", "id": "20240530101000-pcecoaa", - "updated": "20240530101000" + "updated": "20241024163314" }, "Children": [ { @@ -738,21 +738,20 @@ "Properties": { "ID": "20240530101000-x0auq2n", "id": "20240530101000-of4sc87", - "updated": "20240530101000" + "updated": "20241024163314" }, "Children": [ { "ID": "20240530101000-pu6ton7", "Type": "NodeParagraph", "Properties": { - "ID": "20240530101000-mw4xwas", "id": "20240530101000-pu6ton7", - "updated": "20240530101000" + "updated": "20241024163314" }, "Children": [ { "Type": "NodeText", - "Data": "ノートブックを削除する際にノートブック間のアセットファイルの参照を正常に保つため、ノートブック内のアセットファイルがすべてグローバルのアセットフォルダにコピーされます" + "Data": "ノートが削除されると、ノートブック間のリソース ファイル参照が適切に機能するように、ノートによって参照されるリソース ファイルがバッチでグローバル アセットにコピーされます" } ] } From 6c36e9e583c8e107e47b64b11829e0b8102cc04d Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 24 Oct 2024 17:06:29 +0800 Subject: [PATCH 5/5] :art: Return document blocks when search hits different block content https://github.com/siyuan-note/siyuan/issues/10584 --- kernel/model/search.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/kernel/model/search.go b/kernel/model/search.go index 184f88b25..fbd64ffe7 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -1382,9 +1382,6 @@ func fullTextSearchCountByFTS(query, boxFilter, pathFilter, typeFilter, ignoreFi func fullTextSearchByFTSWithRoot(query, boxFilter, pathFilter, typeFilter, ignoreFilter, orderBy string, beforeLen, page, pageSize int) (ret []*Block, matchedBlockCount, matchedRootCount int) { start := time.Now() - defer func() { - logging.LogInfof("time cost: %v", time.Since(start)) - }() table := "blocks_fts" // 大小写敏感 if !Conf.Search.CaseSensitive { @@ -1407,10 +1404,14 @@ func fullTextSearchByFTSWithRoot(query, boxFilter, pathFilter, typeFilter, ignor " FROM " + table + " WHERE type IN " + typeFilter + boxFilter + pathFilter + ignoreFilter + " GROUP BY root_id HAVING " + likeFilter cteStmt := "WITH docBlocks AS (" + dMatchStmt + "), nonDocBlocks AS (" + bMatchStmt + ")" - cteStmt += "\nSELECT * FROM " + table + " WHERE id IN (SELECT id FROM nonDocBlocks) OR id IN (SELECT root_id FROM docBlocks)" - countStmt := cteStmt + wheheClause := " WHERE id IN (SELECT id FROM nonDocBlocks) OR id IN (SELECT root_id FROM docBlocks)" + selectStmt := cteStmt + "\nSELECT * FROM " + table + wheheClause + countStmt := cteStmt + "\nSELECT COUNT(id) AS `matches`, COUNT(DISTINCT(root_id)) AS `docs` FROM " + table + wheheClause cteStmt += orderBy + " LIMIT " + strconv.Itoa(pageSize) + " OFFSET " + strconv.Itoa((page-1)*pageSize) - resultBlocks := sql.SelectBlocksRawStmtNoParse(cteStmt, -1) + resultBlocks := sql.SelectBlocksRawStmtNoParse(selectStmt, -1) + + logging.LogInfof("time cost [main search]: %v", time.Since(start)) + now := time.Now() // FTS 高亮 projections := "id, parent_id, root_id, hash, box, path, " + @@ -1441,12 +1442,15 @@ func fullTextSearchByFTSWithRoot(query, boxFilter, pathFilter, typeFilter, ignor ret = []*Block{} } + logging.LogInfof("time cost [highlight search]: %v", time.Since(now)) + now = time.Now() matchedBlockCount, matchedRootCount = fullTextSearchCountByStmt(countStmt) + logging.LogInfof("time cost [count search]: %v", time.Since(now)) + logging.LogInfof("time cost [all]: %v", time.Since(start)) return } func fullTextSearchCountByStmt(stmt string) (matchedBlockCount, matchedRootCount int) { - stmt = "SELECT COUNT(id) AS `matches`, COUNT(DISTINCT(root_id)) AS `docs` FROM (" + stmt + ")" result, _ := sql.QueryNoLimit(stmt) if 1 > len(result) { return