解讀:資源文件內(nèi)容搜索、EPUB 解析與多端體驗(yàn)改進(jìn))
思源筆記 v2.10.3 技術(shù)解讀資源文件內(nèi)容搜索、EPUB 解析與多端體驗(yàn)改進(jìn)【免費(fèi)下載鏈接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 開源、隱私優(yōu)先、自托管的知識(shí)工作空間讓人與智能體在此協(xié)作項(xiàng)目地址: https://gitcode.com/GitHub_Trending/si/siyuan本篇文章以思源筆記SiYuan倉庫中 v2.10.3 的發(fā)布說明app/changelogs/v2.8.4-v2.12.8/v2.10.3/v2.10.3.md為骨架聚焦該版本兩大核心主題——資源文件內(nèi)容搜索的缺陷修復(fù)與EPUB 資源文件解析優(yōu)化并結(jié)合內(nèi)核源碼kernel/model/asset_content.go等逐層展開其底層實(shí)現(xiàn)。讀完本文你將理解思源筆記資源內(nèi)容搜索的索引、解析與全文檢索機(jī)制掌握該版本在編輯器交互、移動(dòng)端體驗(yàn)、PDF/網(wǎng)絡(luò)圖片處理以及插件 API、鑒權(quán)、內(nèi)核 API 方面的全部變更細(xì)節(jié)便于評(píng)估是否升級(jí)或進(jìn)行二次開發(fā)。版本概述圍繞資源內(nèi)容搜索的一次集中修復(fù)v2.10.3 是思源筆記 2.8.4 ~ 2.12.8 演進(jìn)周期中的一個(gè)維護(hù)型版本。發(fā)布說明的 Overview 明確給出了該版本的工作重心修復(fù)了若干與資源文件內(nèi)容搜索相關(guān)的問題優(yōu)化了EPUB 資源文件的解析。同時(shí)需要特別說明的是搜索資源文件內(nèi)容即對(duì) PDF、EPUB、Office 文檔等附件做全文檢索屬于付費(fèi)會(huì)員特性當(dāng)時(shí)處于早鳥價(jià)階段。這一會(huì)員邊界至今仍體現(xiàn)在配置與內(nèi)核行為中下文會(huì)看到相關(guān)常量與索引邏輯因此在使用該能力前需先確認(rèn)賬戶訂閱狀態(tài)。下文按改進(jìn)功能Enhancement→ 缺陷修復(fù)Bugfix→ 開發(fā)者Development三組清單展開先深挖與版本主題最相關(guān)的資源內(nèi)容搜索與 EPUB 解析實(shí)現(xiàn)再逐項(xiàng)解讀其余變更。資源文件內(nèi)容搜索從解析到全文檢索的完整鏈路v2.10.3 對(duì)資源文件內(nèi)容搜索的修復(fù)并不是孤立的它建立在內(nèi)核一套完整的附件內(nèi)容索引機(jī)制之上。理解這層機(jī)制才能看懂該版本修復(fù)了什么。整體實(shí)現(xiàn)位于 kernel/model/asset_content.go共約 967 行負(fù)責(zé)解析、索引、查詢與預(yù)覽SQL 持久化與 FTS 表定義在 kernel/sql/asset_content.go、kernel/sql/asset_content_query.go 中。支持索引的資源類型與解析器注冊(cè)內(nèi)核按文件擴(kuò)展名注冊(cè)不同的資源解析器AssetParser接口見 kernel/model/asset_content.go#L529-L531只定義了一個(gè)方法type AssetParser interface { Parse(absPath string) *AssetParseResult }AssetParseResultkernel/model/asset_content.go#L522-L527僅含Path / Size / Updated / Content四個(gè)字段即把二進(jìn)制附件轉(zhuǎn)換為可索引的純文本是全部解析器的共同職責(zé)。從源碼看當(dāng)前注冊(cè)的解析器至少包含kernel/model/asset_content.go#L505-L507 附近可見.pdf與.epub注冊(cè)同文件更早位置還有對(duì)應(yīng)類型TxtAssetParser.txt 等純文本kernel/model/asset_content.go#L533 起DocxAssetParserWordkernel/model/asset_content.go#L605PptxAssetParserPowerPointkernel/model/asset_content.go#L643XlsxAssetParserExcelkernel/model/asset_content.go#L681底層使用github.com/xuri/excelize/v2PdfAssetParserPDFkernel/model/asset_content.go#L791底層使用 go-pdfiumEpubAssetParserEPUB 電子書kernel/model/asset_content.go#L931。各解析器由AssetsSearcher統(tǒng)一管理kernel/model/asset_content.go#L387-L397通過擴(kuò)展名小寫匹配查找解析器。資源文件本身有體積/規(guī)模約束內(nèi)核在 kernel/model/asset_content.go#L513-L520 定義了硬性上限const ( TxtAssetContentMaxSize 1024 * 1024 * 4 // 文本類 4MB PDFAssetContentMaxPage 1024 // PDF 最多 1024 頁 ) var ( PDFAssetContentMaxSize uint64 1024 * 1024 * 128 // PDF 最大 128MB )這些常量意味著超大附件不會(huì)被完整解析入索引避免索引庫被單個(gè)文件拖垮。索引寫入事件驅(qū)動(dòng) 全量重建單個(gè)資源文件的索引入口是indexAssetContent(absPath)kernel/model/asset_content.go#L325-L362流程為按擴(kuò)展名取解析器無解析器則直接返回調(diào)用parser.Parse(absPath)得到純文本內(nèi)容os.Stat取文件大小與修改時(shí)間構(gòu)造sql.AssetContent記錄Path統(tǒng)一換算為以assets/開頭的工作空間相對(duì)路徑通過util.GetDataAssetsAbsPath()剝離絕對(duì)路徑前綴先sql.DeleteAssetContentsByPathQueue(p)刪除舊記錄再sql.IndexAssetContentsQueue(...)異步入隊(duì)寫入 FTS 索引表。觸發(fā)時(shí)機(jī)由資源變更事件驅(qū)動(dòng)如新增/修改/刪除 assets 下的文件后由 kernel/model/assets_watcher.go 觀察觸發(fā)。全量重建則通過任務(wù)隊(duì)列完成fullReindexAssetContentkernel/model/asset_content.go#L369-L375會(huì)調(diào)用sql.InitAssetContentDatabase(true)重建數(shù)據(jù)庫再執(zhí)行assetContentSearcher.FullIndex()遍歷整個(gè)assets/目錄kernel/model/asset_content.go#L399-L429。值得注意的一個(gè)安全細(xì)節(jié)全量索引遍歷時(shí)會(huì)調(diào)用IsEncryptedAssetPath(absPath)跳過加密筆記本中的資源文件kernel/model/asset_content.go#L418-L421以避免密文污染搜索索引、泄漏加密筆記本內(nèi)的文件名集合。這與思源筆記內(nèi)容加密的整體設(shè)計(jì)見 docs/ENCRYPTED-NOTEBOOK.zh-CN.md保持一致。檢索模式、排序與分頁查詢側(cè)的核心函數(shù)是FullTextSearchAssetContentkernel/model/asset_content.go#L116-L138其入?yún)⑼暾€原了思源搜索資源內(nèi)容對(duì)話框的全部選項(xiàng)query搜索關(guān)鍵字/表達(dá)式types按擴(kuò)展名過濾的文件類型集合method0關(guān)鍵字、1查詢語法、2SQL、3正則表達(dá)式orderBy0按相關(guān)度降序、1按相關(guān)度升序、2按更新時(shí)間升序、3按更新時(shí)間降序page / pageSize分頁pageCount由命中數(shù)上取整得出(matchedAssetCount pageSize - 1) / pageSize。底層數(shù)據(jù)表為 FTS5 全文索引asset_contents_fts_case_insensitive大小寫不敏感。關(guān)鍵字與查詢語法模式統(tǒng)一走fullTextSearchAssetContentByFTSkernel/model/asset_content.go#L189-L205構(gòu)造形如MATCH content:(query)的查詢并對(duì)ext IN (...)做類型過濾正則模式fullTextSearchAssetContentByRegexpkernel/model/asset_content.go#L151-L165則對(duì)name與content字段使用 SQLREGEXP。排序子句由 kernel/model/asset_content.go#L300-L313 的buildAssetContentOrderBy生成FTS 相關(guān)度即rank。SQL 模式method 2直接暴露原始查詢能力由searchAssetContentBySQL執(zhí)行并把用戶的SELECT *改寫為COUNT(path)以復(fù)用同一語句統(tǒng)計(jì)命中數(shù)kernel/model/asset_content.go#L207-L220 起——這也是搜索資源內(nèi)容支持高級(jí) SQL 檢索的入口。命中預(yù)覽與轉(zhuǎn)義v2.10.3 的修復(fù)落點(diǎn)資源文件內(nèi)容搜索預(yù)覽是官方 Issue #9073 在 v2.10.3 中改進(jìn)的對(duì)象。預(yù)覽文本的生成邏輯就在本文件列表查詢使用 FTS 的snippet()截取命中片段兩端以search.SearchMarkLeft / SearchMarkRight作為高亮標(biāo)記尾部以...截?cái)嚅L度 64kernel/model/asset_content.go#L191-L192單文件詳情查詢則用highlight()返回完整高亮內(nèi)容并會(huì)把換行統(tǒng)一替換為brkernel/model/asset_content.go#L60-L87。由于資源文件提取出的正文是原始文本直接拼入 HTML 預(yù)覽會(huì)出現(xiàn) HTML 特殊字符、、等被當(dāng)作標(biāo)簽解析的轉(zhuǎn)義問題——這正是 v2.10.3 所稱改進(jìn)資源文件內(nèi)容搜索預(yù)覽轉(zhuǎn)義要處理的場景搜索結(jié)果在進(jìn)入前端渲染前需正確轉(zhuǎn)義既保證高亮標(biāo)記不被破壞也避免原始正文中的標(biāo)簽污染頁面結(jié)構(gòu)。對(duì)二次開發(fā)者而言這意味著在使用上述snippet/highlight輸出時(shí)需注意與前端渲染管線的轉(zhuǎn)義約定保持一致。EPUB 資源文件解析本次優(yōu)化的直接對(duì)象EPUB 電子書是內(nèi)容搜索支持的重點(diǎn)格式之一v2.10.3 明確提到改進(jìn) EPUB 資源文件解析Issue #9072其實(shí)現(xiàn)即 kernel/model/asset_content.go#L931-L967 的EpubAssetParser.Parsefunc (parser *EpubAssetParser) Parse(absPath string) (ret *AssetParseResult) { if !strings.HasSuffix(strings.ToLower(absPath), .epub) { // 擴(kuò)展名兜底校驗(yàn) return } if !gulu.File.IsExist(absPath) { // 文件必須存在 return } tmp : copyTempAsset(absPath) // 復(fù)制到臨時(shí)文件后解析 if tmp { return } defer os.RemoveAll(tmp) f, err : os.Open(tmp) if err ! nil { logging.LogErrorf(open [%s] failed: [%s], tmp, err) return } defer f.Close() buf : bytes.Buffer{} if err epub.ToTxt(tmp, buf); err ! nil { // 核心EPUB - 純文本 logging.LogErrorf(convert [%s] failed: [%s], tmp, err) return } content : normalizeNonTxtAssetContent(buf.String()) ret AssetParseResult{Content: content} return }可提煉的實(shí)現(xiàn)要點(diǎn)如下雙重兜底校驗(yàn)即便解析器由擴(kuò)展名路由而來Parse內(nèi)部仍會(huì)再次檢查.epub后綴與文件存在性防止被錯(cuò)誤調(diào)用臨時(shí)副本隔離通過copyTempAsset將 EPUB 復(fù)制到臨時(shí)文件再解析、defer os.RemoveAll(tmp)確保清理避免解析過程長期占用資源目錄下的原文件句柄對(duì)網(wǎng)盤/同步盤場景尤其重要也與此前 iCloud 路徑相關(guān)的改進(jìn)思路一致文本抽取使用github.com/88250/epub的ToTxt一次性把整本 EPUB 的書脊spine正文輸出到bytes.Buffer。EPUB 本質(zhì)是一個(gè) ZIP 容器內(nèi)部以content.opf聲明元數(shù)據(jù)與閱讀順序、以 XHTML/HTML 組織正文——因此ToTxt需要正確解包容器、遍歷 spine、剔除章節(jié)內(nèi)的腳本/樣式噪聲后再拼接正文統(tǒng)一清洗抽取出的原始文本最后經(jīng)normalizeNonTxtAssetContent歸一化如規(guī)整空白、折疊多余換行與 PDF、Office 等非文本解析器走同一套清洗與入索引管線。v2.10.3 對(duì) EPUB 解析的改進(jìn)從代碼演進(jìn)方向推斷主要落在文本抽取的健壯性例如對(duì)目錄結(jié)構(gòu)不規(guī)范、缺失content.opf或使用非標(biāo)準(zhǔn) MIME 的 EPUB 文件更寬容使其能被可靠地納入全文索引最終服務(wù)于付費(fèi)的搜索資源文件內(nèi)容特性。編輯器、浮層與交互改進(jìn)Enhancement 其余項(xiàng)除資源內(nèi)容搜索外v2.10.3 的改進(jìn)集中在桌面端編輯器交互、窗口/面板行為與移動(dòng)端細(xì)節(jié)逐項(xiàng)說明如下。浮層與光標(biāo)行為動(dòng)態(tài)計(jì)算浮層層級(jí)#7602浮層浮窗/提示層的 z-index 不再固定寫死而是依據(jù)觸發(fā)位置與嵌套關(guān)系動(dòng)態(tài)計(jì)算避免浮層被遮擋或蓋住不該蓋住的面板。這在浮窗預(yù)覽文檔塊#9082等場景中配合生效——后者同時(shí)修復(fù)了浮窗預(yù)覽文檔塊時(shí)自動(dòng)定位到上一次瀏覽位置的問題讓預(yù)覽總是從文檔起始位置干凈呈現(xiàn)與主編輯區(qū)記憶的瀏覽位置解耦劃選文本后 CtrlM 轉(zhuǎn)換行級(jí)公式的光標(biāo)位置#9070選中文本按CtrlM把選區(qū)包裹為行級(jí)公式后光標(biāo)會(huì)落在更合理的位置便于立即繼續(xù)輸入 LaTeX 內(nèi)容空代碼塊中可打開塊標(biāo)菜單PR #9095此前光標(biāo)停在無內(nèi)容的空代碼塊內(nèi)時(shí)塊標(biāo)塊操作菜單無法喚起本版本修復(fù)了該邊界條件。復(fù)制、菜單與面板PDF 標(biāo)注復(fù)制尺寸一致#9068在 Windows 與 macOS 上從 PDF 復(fù)制的標(biāo)注高亮/批注粘貼后保持與源一致的尺寸不再因平臺(tái)縮放差異而變化復(fù)制文本 *系列改進(jìn)#9093選中文本后出現(xiàn)的復(fù)制文本/復(fù)制純文本等菜單項(xiàng)的復(fù)制結(jié)果更符合預(yù)期禁用菜單項(xiàng)樣式PR #9078菜單中不可用項(xiàng)的置灰樣式得到優(yōu)化視覺上更易區(qū)分不可用與可用狀態(tài)??繖贒ock顯隱狀態(tài)#9089鼠標(biāo)從應(yīng)用外部移入、或應(yīng)用窗口處于非激活狀態(tài)時(shí)左右側(cè)??繖诘娘@示/隱藏判斷更合理不再出現(xiàn)移入瞬間閃爍/誤隱藏iCloud 路徑檢測改進(jìn)PR #9066macOS 上對(duì) iCloud 同步目錄的識(shí)別更準(zhǔn)確避免把 iCloud 占位文件或下載中文件誤當(dāng)作本地資源處理屬于資源文件基礎(chǔ)設(shè)施層面的健壯性增強(qiáng)。文檔加載性能與網(wǎng)絡(luò)圖片amd64 平臺(tái)文檔加載性能改進(jìn)#9084針對(duì) Windows/Linux/macOS 的 amd64 架構(gòu)優(yōu)化了塊加載路徑官方口徑為性能改進(jìn)代碼層面與內(nèi)核渲染、數(shù)據(jù)庫讀取的熱路徑相關(guān)kernel/model 目錄中的render.go、process.go即承擔(dān)文檔渲染與塊處理職責(zé)網(wǎng)絡(luò)圖片轉(zhuǎn)換為本地圖片忽略 HTTPS 證書校驗(yàn)#9080把網(wǎng)頁中的遠(yuǎn)程圖片下載轉(zhuǎn)存為本地資源時(shí)不再因目標(biāo)站點(diǎn)證書自簽名或過期而中斷——下載資源文件的相關(guān)邏輯位于內(nèi)核資源處理模塊如 kernel/model/asset.go 對(duì)應(yīng)的下載/轉(zhuǎn)存鏈路此改動(dòng)提升了遇到非正規(guī)證書站點(diǎn)時(shí)的成功率代價(jià)是放棄了對(duì)該次下載連接的服務(wù)端證書校驗(yàn)。搜索與路徑提示 UI改進(jìn)搜索路徑提示#9101全文搜索界面中當(dāng)前搜索范圍/路徑的提示布局與文案得到優(yōu)化讓用戶更清楚本次搜索限定在哪些筆記本、路徑或資源類型內(nèi)——與資源內(nèi)容搜索的類型過濾types參數(shù)屬于同一交互體系。移動(dòng)端與跨端修復(fù)細(xì)節(jié)本版本的移動(dòng)端iOS/Android改動(dòng)密集明顯針對(duì) iPhone 的可用性問題iPhone 禁止左側(cè)面板頂欄選中內(nèi)容#9096左側(cè)面板頂欄如筆記本/文檔切換欄在 iPhone 上不再因長按誤觸發(fā)文本選中交互更跟手iPhone 輸入元素邊框修復(fù)#9104補(bǔ)齊 iOS Safari 下input元素默認(rèn)邊框丟失的問題避免輸入框與背景融為一體、難以辨識(shí)移動(dòng)端云端數(shù)據(jù)同步圖標(biāo)不再消失#9090同步狀態(tài)圖標(biāo)此前在特定流程如進(jìn)入/退出同步后會(huì)從狀態(tài)欄消失現(xiàn)可穩(wěn)定駐留展示移動(dòng)端代碼塊復(fù)制按鈕失效修復(fù)#9109Bugfix觸屏下代碼塊右上角復(fù)制按鈕此前無法正常復(fù)制內(nèi)容本版本修復(fù)了該回歸。缺陷修復(fù)清單Bugfix除上文已涉及的 #9109 外v2.10.3 還修復(fù)了以下問題與編輯器、集市與導(dǎo)入導(dǎo)出流程相關(guān)問題Issue/PR現(xiàn)象修復(fù)意義#9071文檔放大zoom狀態(tài)下編輯時(shí)光標(biāo)丟失恢復(fù)放大視圖下的連續(xù)輸入體驗(yàn)#9074集市marketplace中包更新后更新按鈕不顯示修正版本比對(duì)與按鈕狀態(tài)刷新邏輯#9076塊引用/超鏈接文本框內(nèi)←/→ 無法移動(dòng)光標(biāo)恢復(fù)引用、鏈接編輯框的鍵盤導(dǎo)航能力#9083導(dǎo)入.sy.zip時(shí)塊超鏈接未指向重新生成的塊 ID導(dǎo)入重寫 ID 后超鏈接同步重映射到新 ID內(nèi)核 kernel/model/import.go 承擔(dān) .sy.zip 導(dǎo)入與 ID 重寫流程#9086內(nèi)核只讀模式下無法進(jìn)入主界面只讀模式可用于備份/審計(jì)下 UI 也能正常掛載#9106導(dǎo)出 PDF 時(shí)將資源文件作為附件嵌入失效恢復(fù) PDF 導(dǎo)出時(shí)附件資源的嵌入能力其中 #9083 與資源文件/塊 ID語義直接相關(guān).sy.zip導(dǎo)入會(huì)重新生成塊 ID 以保證不沖突而正文中的超鏈接若仍指向舊 ID 就會(huì)失效本版本將其納入重映射范圍屬于文檔結(jié)構(gòu)一致性修復(fù)。面向開發(fā)者的變更Developmentv2.10.3 對(duì)插件體系與內(nèi)核 API 的調(diào)整對(duì)二次開發(fā)影響最大值得插件作者與 API 調(diào)用方重點(diǎn)關(guān)注。插件 APIopenWindow與command.globalCallback#9032本次為插件 API 新增了兩個(gè)能力openWindow允許插件以窗口形式打開自定義頁面/界面區(qū)別于既有的面板、彈窗可承載更復(fù)雜的插件 UIcommand.globalCallback為全局命令注冊(cè)回調(diào)使插件能響應(yīng)跨文檔、跨場景的全局命令觸發(fā)。這兩者均是對(duì)思源插件運(yùn)行時(shí)kernel/plugin 目錄下api_plugin.go、api_rpc.go、api_event.go等構(gòu)成插件 API 與事件總線的能力擴(kuò)展前端側(cè)由 app/src/plugin 提供對(duì)應(yīng)類型與封裝。鑒權(quán)支持查詢參數(shù)tokenPR #9069內(nèi)核鑒權(quán)此前僅接受 Header/固定形式的令牌現(xiàn)支持在 URL 查詢字符串中以token...傳遞訪問授權(quán)碼Access Authorization Code。這意味著 WebSocket、API 回調(diào)及部分無法自定義 Header 的客戶端可直接在 URL 中帶令牌完成鑒權(quán)——但請(qǐng)注意URL 會(huì)被日志、歷史記錄捕獲該方式更適合受控內(nèi)網(wǎng)或一次性回調(diào)場景。桌面端在設(shè)置 - 關(guān)于 - 訪問授權(quán)碼下管理該令牌見下文的跟隨系統(tǒng)鎖屏選項(xiàng)。內(nèi)核 API 改進(jìn)/api/file/getFile響應(yīng)狀態(tài)碼改進(jìn)PR #9075此前對(duì)文件不存在等錯(cuò)誤場景返回的狀態(tài)碼語義不明確本版本統(tǒng)一為符合 HTTP 語義的狀態(tài)碼如 404便于客戶端區(qū)分成功/不存在/鑒權(quán)失敗。該 API 用于按路徑讀取資源/文檔文件屬于 kernel/api 中文件與資源類接口的范疇/api/network/forwardProxy改進(jìn)PR #9110內(nèi)核網(wǎng)絡(luò)轉(zhuǎn)發(fā)代理接口用于插件/內(nèi)核側(cè)發(fā)起 HTTP 請(qǐng)求時(shí)經(jīng)代理轉(zhuǎn)發(fā)得到增強(qiáng)返回的狀態(tài)碼與錯(cuò)誤信息更可讀。桌面端新增訪問授權(quán)碼跟隨系統(tǒng)鎖屏#9087Windows/macOS設(shè)置新增跟隨系統(tǒng)鎖屏Follow system lock screen開關(guān)開啟后當(dāng)操作系統(tǒng)進(jìn)入鎖屏狀態(tài)時(shí)思源對(duì)外的訪問授權(quán)碼自動(dòng)進(jìn)入鎖定態(tài)解鎖系統(tǒng)后恢復(fù)——避免筆記本在用戶離開電腦期間被局域網(wǎng)內(nèi)其他設(shè)備經(jīng)授權(quán)碼訪問。該項(xiàng)位于設(shè)置 - 關(guān)于 - 訪問授權(quán)碼頁面屬于訪問控制Access Authorization Code相關(guān)實(shí)現(xiàn)見 kernel/util/session.go、kernel/conf/user.go 等在桌面端的安全增強(qiáng)。版本定位與升級(jí)建議綜合來看v2.10.3 是典型的穩(wěn)定性 細(xì)節(jié)打磨版本對(duì)內(nèi)修復(fù)了資源內(nèi)容搜索與 EPUB 解析支撐付費(fèi)會(huì)員特性質(zhì)量對(duì)外補(bǔ)齊了桌面端交互、移動(dòng)端可用性以及面向開發(fā)者的 API/插件能力。若你正在使用搜索資源文件內(nèi)容會(huì)員特性并遇到 PDF/EPUB 內(nèi)容命中異常、預(yù)覽轉(zhuǎn)義錯(cuò)亂等問題v2.10.3 值得升級(jí)若你是插件作者或通過內(nèi)核 API/WebSocket 鑒權(quán)調(diào)用思源請(qǐng)?zhí)貏e關(guān)注新增的openWindow、command.globalCallback與查詢參數(shù)token鑒權(quán)若你運(yùn)行在 macOS iCloud 環(huán)境或經(jīng)常處理 PDF 標(biāo)注、網(wǎng)絡(luò)圖片轉(zhuǎn)本地本版本對(duì)路徑檢測、證書校驗(yàn)與復(fù)制尺寸的修復(fù)同樣有直接收益。本倉庫的 CHANGELOG.md 匯總了完整版本演進(jìn)v2.10.3 的英文、簡體中文與繁體中文發(fā)布說明分別位于英文app/changelogs/v2.8.4-v2.12.8/v2.10.3/v2.10.3.md簡體中文app/changelogs/v2.8.4-v2.12.8/v2.10.3/v2.10.3_zh_CN.md繁體中文app/changelogs/v2.8.4-v2.12.8/v2.10.3/v2.10.3_zh_CHT.md希望深入資源內(nèi)容搜索原理的讀者可繼續(xù)閱讀上述 kernel/model/asset_content.go 全文并結(jié)合 kernel/sql/asset_content.go 中的建表與索引隊(duì)列實(shí)現(xiàn)梳理附件變更 → 解析 → FTS 索引 → 命中預(yù)覽的完整閉環(huán)?!久赓M(fèi)下載鏈接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 開源、隱私優(yōu)先、自托管的知識(shí)工作空間讓人與智能體在此協(xié)作項(xiàng)目地址: https://gitcode.com/GitHub_Trending/si/siyuan創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考