# NoteRich 工作空間與進階搜尋指南 在資訊過載成為常態的時代,有效組織數位資訊已不再是一種奢求,而是一種必要。**NoteRich** 提供了兩種強大的功能,能夠改變你管理與檢索知識的方式:**獨立的多工作空間**和**進階語義搜尋**。 本指南將引導你掌握這些功能,幫助你建立一個能夠根據需求擴展的個人知識管理系統。 --- ## 第1部分:了解 NoteRich 中的工作空間 ### 什麼是工作空間? 想象一下,你為生活的不同領域擁有獨立的實體筆記本——一個用於工作項目,另一個用於個人日記,還有一個用於研究筆記。NoteRich 中的工作空間將這種組織性帶到了你的數位環境中。 NoteRich 中的每個工作空間都是一個**完全獨立的容器**,包含以下元素: - 獨立的筆記數據庫 - 獨立的搜尋索引 - 獨特的 URL 路由 - 獨立的 AI 記憶體上下文 ```mermaid graph TB subgraph "NoteRich 應用程序" A[工作空間路由器] --> B[工作空間:工作] A --> C[工作空間:個人] A --> D[工作空間:研究] B --> B1[筆記數據庫] B --> B2[搜尋索引] B --> B3[AI 上下文] C --> C1[筆記數據庫] C --> C2[搜尋索引] C --> C3[AI 上下文] D --> D1[筆記數據庫] D --> D2[搜尋索引] D --> D3[AI 上下文] end style A fill:#000,stroke:#000,color:#fff style B fill:#fafafa,stroke:#eaeaea,color:#333 style C fill:#fafafa,stroke:#eaeaea,color:#333 style D fill:#fafafa,stroke:#eaeaea,color:#333 ``` ### 為何要使用多個工作空間? | 情境 | 好處 | |------|---------| | **工作與生活的分離** | 將專業筆記與個人日記完全分開 | | **項目獨立性** | 將工作空間專屬於特定客戶或長期項目 | | **上下文切換** | 能夠立即在不同上下文之間切換,而不受干擾 | | **隱私控制** | 可以分享特定工作空間,而不暴露無關的內容 | | **性能優化** | 當將大型知識庫分割成聚焦的工作空間時,性能依然快速 | --- ## 第2部分:在工作空間之間導航 ### 工作空間路由器系統 NoteRich 使用一種智能的路由系統,能記憶你的工作空間偏好,並提供無縫導航。 #### 基於 URL 的工作空間識別 每個工作空間都有獨立的識別符,會反映在你的瀏覽器 URL 中: ``` https://noterich.app/#workspace=work-projects https://noterich.app/#workspace=personal-journal https://noterich.app/#workspace=research-notes ``` 工作空間 ID 是: - **URL 安全**:只允許字母數字、連字符和底線 - **持久性**:儲存在你的瀏覽器本地存儲中,以便快速恢復 - **可分享**:你可以分享特定工作空間的直接連結 #### 工作空間切換方式 當你在 NoteRich 中切換工作空間時,其實際發生的是以下情況: ```mermaid sequenceDiagram participant U as 用戶 participant R as 工作空間路由器 participant L as 本地存儲 participant W as 網絡工作者 participant S as 搜尋引擎 participant D as 索引DB U->>R: 點擊工作空間切換 R->>L: 保存工作空間 ID R->>R: 更新 URL 哈希 R->>W: 發送工作空間 ID 消息 R->>S: 重新初始化搜尋引擎 W->>D: 切換數據庫連接 S->>D: 載入特定工作空間的索引 S-->>U: 搜尋準備完成通知 ``` ### 工作空間命名的最佳實踐 選擇以下特徵的工作空間 ID: - **描述性**:`marketing-q4-2025` 而不是 `work1` - **一致性**:在整個組織中使用相同的命名規則 - **未來可擴展性**:避免使用時間限制的命名,除非是臨時的 (`project-phoenix` 而不是 `temp-notes`) --- ## 第3部分:進階搜尋架構 ### 從關鍵字匹配到語義理解 傳統的搜尋工具依賴於精確的關鍵字匹配。如果你搜尋“automobile”,它將找不到包含“car”的筆記。NoteRich 的進階搜尋引擎超越了這種限制。 #### 雙層搜尋系統 NoteRich 採用了一種複雜的雙層搜尋架構: ```graphviz digraph SearchArchitecture { rankdir=TB; node [shape=box, style="rounded,filled", fillcolor="#fafafa", color="#eaeaea", fontname="Inter", fontsize=11]; edge [color="#d4d4d4", penwidth=1.5]; Query [label="用戶搜尋", fillcolor="#000", color="#000", fontcolor="#ffffff"]; subgraph cluster_processing { label = "搜尋處理管道"; style = "filled"; fillcolor = "#f9f9f9"; color = "#eaeaea"; Segment [label="文本分割\n(Intl.Segmenter + Smart Fallback)"; Tokenize [label="詞元分類\n(電子郵件, URL, 數字, CJK)"; } subgraph cluster_search { label = "並行搜尋執行"; style = "filled"; fillcolor = "#f9f9f9"; color = "#eaeaea"; Precise [label="精確匹配\ntitle Raw 字段\n權重: 1.0"]; Fuzzy [label="模糊匹配\ntitle/內容字段\n權重: 0.8"]; } Merge [label="得分合併與排名"]; Results [label="最終結果\n及高亮項目"]; Query -> Segment; Segment -> Tokenize; Tokenize -> Precise; Tokenize -> Fuzzy; Precise -> Merge; Fuzzy -> Merge; Merge -> Results; } ``` ### 智能文本分割 NoteRich 的搜尋能力基於其先進的文本分割功能。 #### 多語言支持 搜尋引擎能自動檢測並分割多種語言的文本: | 語言類型 | 示例 | 分割策略 | |----------|------|----------| | **拉丁基** | 英語、西班牙語、法語 | 詞元邊界檢測 | | **CJK** | 中文、日語、韓語 | 使用 Intl.Segmenter 進行字符級分割 | | **混合** | 程式碼片段、URL、電子郵件 | 基於模式的提取 | | **數字** | 日期、價格、電話號碼 | 專門的模式識別 | #### 智能模式識別 NoteRich 能識別並保留分割過程中的重要模式: - **電子郵件地址**:`user@example.com` - **URL**:`https://example.com/path` - **電話號碼**: `+1-555-123-4567` - **日期**:`2025-01-15`, `15/01/2025` - **貨幣**: `$1,234.56`, `¥500` - **測量**: `42℃`, `100km/h` 這樣就能確保搜尋 `user@example.com` 時能找到正確的電子郵件,而不是對 `user`, `example`, 和 `com` 的碎片化結果。 --- ## 第4部分:掌握搜尋查詢 ### 查詢語法與運算符 NoteRich 支持強大的查詢語法,以便精確地獲取資訊。 #### 基本搜尋 只需輸入查詢語句,即可在所有索引內容中進行搜尋: ``` Quarterly marketing strategy ``` 這種搜尋方式會搜尋標題和完整內容,並根據相關性排序結果。 #### 多項詞語 OR 搜尋 使用管道符 `|` 來搜尋多個替代詞語: ``` Q4 planning | quarterly review | year-end summary ``` 這種搜尋方式會返回符合**任何**指定詞語的筆記,非常適用於需要多種術語的腦寫會議。 #### 權重評分系統 NoteRich 使用複雜的評分算法: ``` 匹配類型 | 權重 | 描述 --------------------|--------|------------------------------------- Precise (title_raw) | 1.0 | 原始標題的精確匹配 Fuzzy (title) | 0.8 | 標題的分割匹配 Fuzzy (content) | 0.8 | 筆記內容的分割匹配 ``` 結果按以下標準排序: 1. **匹配類型優先級**:精確匹配比模糊匹配排名更高 2. **累積得分**:多項詞語匹配會增加得分 3. **子查詢覆蓋率**:與更多子查詢匹配的筆記排名更高 ### 實際搜尋示例 #### 示例 1:查找會議筆記 ```javascript // 搜尋查詢 "team standup | daily sync | morning meeting" // 返回包含以下任何一種短语的筆記, // 並優先顯示與標題完全匹配的筆記 ``` #### 示例 2:技術文獻搜尋 ```javascript // 搜尋查詢 "API endpoint authentication" // 智能分割並找到: // - 提到“API”和“endpoint”以及“authentication”的筆記 // - 將“API”保留為單一符號 // - 匹配 CamelCase 和分號後的變體 ``` #### 示例 3:多語言內容 ```javascript // 搜尋查詢(英文和中文混合) "project roadmap 項目規劃" // 同時在兩種語言中進行分割和搜尋 ``` ### 長文內容導航助手 NoteRich 的突出功能之一是其能夠輕鬆處理**海量文件**。無論你是處理技術規格、研究論文還是全面的項目文獻,都能在長文中找到特定內容,操作簡單。 #### 文件內部搜尋的工作原理 當你進行搜尋時,NoteRich 不僅返回匹配的文檔,還提供**精確的文件內部導航**: ```mermaid sequenceDiagram participant User participant SearchEngine participant DocumentIndex participant Viewer User->>SearchEngine: 輸入搜尋查詢 SearchEngine->>DocumentIndex: 在所有工作空間中查詢 DocumentIndex-->>SearchEngine: 返回匹配的文檔及命中位置 SearchEngine->>User: 顯示結果及匹配數量 User->>User: 點擊結果 SearchEngine->>Viewer: 打開文檔,定位到第一個匹配項目 Viewer->>User: 使用導航控制突出顯示所有匹配項目 User->>Viewer: 在匹配項目之間跳轉(Next/Previous) Viewer->>User: 顯示匹配位置指示符(例如:“3 of 12”) ``` #### 長文的主要功能 1. **匹配數量顯示**:每個搜尋結果都顯示該文檔中的匹配數量(例如:“年度報告 2024 · 15 次匹配”),幫助你識別哪些文檔包含最相關的內容。 2. **立即跳轉到匹配項目**:點擊搜尋結果後,文檔會打開並自動捲動到第一個匹配項目,匹配文本會被突出顯示,以便立即查看。 3. **導航控制**:使用鍵盤快捷鍵或圖形界面按鈕來輪流查看所有匹配項目: - `F3` 或 `Cmd+G`:下一個匹配項目 - `Shift+F3` 或 `Shift+Cmd+G`:上一個匹配項目 - 視覺計數器顯示當前位置(例如:“匹配 7 of 23”) 4. **多匹配突出顯示**:所有搜索條件的出現都會同時被突出顯示,讓你能夠視覺上了解其在文檔中的分佈情況。 5. **上下文保留**:在匹配項目之間導航時,周圍的上下文仍然可見,這樣你就不會在複雜的文檔中迷失方向。 #### 實際示例:技術規格導航 假設你有一份有 50,000 個字符的技術規格文檔。你需要找到所有提到“authentication protocol”的內容: | 步驟 | 操作 | 結果 | |------|--------|--------| | 1 | 在搜索欄位中輸入 `authentication protocol` | 文檔中出現了 “8 次匹配” | | 2 | 點擊搜尋結果 | 文檔打開,跳轉到第一個出現的位置 | | 3 | 按 `F3` 七次 | 依次查看所有 8 個出現 | | 4 | 觀察突出顯示的匹配項目 | 視覺上了解條目分佈情況 | | 5 | 閱讀周圍上下文 | 每次跳轉時都保留完整段落的上下文 | 這種能力將冗長的文檔從令人望而生畏的文本壁壘轉變為可輕鬆導航的知識結構,任何資訊都只需幾次鍵入即可獲得。 #### 長文搜尋的建議 - **使用特定短语**:長查詢能減少在大型文檔中的誤匹配 - **檢查匹配數量**:高匹配數量可能表示某些條目過於常見 - **與工作空間篩選結合**:在特定工作空間內進行搜尋以縮小範圍 - **利用標題精確性**:明確構建節目標題,以實現精確的匹配 --- ## 第5部分:大規模性能 ### 基於 IndexedDB 的存儲 NoteRich 利用 **IndexedDB** 進行高性能的本地存儲,即使擁有龐大的知識庫也能實現即時搜尋。 #### 數據庫架構 每個工作空間都維護自己的 IndexedDB 數據庫: ``` noterich_note_database_{workspaceId} → 筆記元數據和內容 noterich_search_index_{workspaceId} → 搜尋索引文檔 ``` 這種分離方式確保了: - **快速切換**:無需跨工作空間導入數據 - **獨立備份**:可以导出個別工作空間 - **範圍化權限控制**:細粒度访问控制 ### 增量索引更新 NoteRich 不會每次都重建整個搜尋索引,而是使用智能的增量更新: ```mermaid graph LR A[筆記保存] --> B[索引存在嗎?] B -->|是| C[比較時間戳] B -->|否| D[完整索引建置] C -->|更新後的| E[更新索引條目] C -->|已經存在的| F[忽略 - 已經索引] E --> G[保留到 IndexedDB] D --> G F --> H[索引當前] style A fill:#fafafa,stroke:#eaeaea style B fill:#000,stroke:#000,color:#fff style C fill:#fafafa,stroke:#eaeaea style D fill:#fafafa,stroke:#eaeaea style E fill:#fafafa,stroke:#eaeaea style F fill:#fafafa,stroke:#eaeaea style G fill:#fafafa,stroke:#eaeaea style H fill:#fafafa,stroke:#eaeaea ``` ### 測試性能 我們的測試顯示即使在大規模情況下,性能依然出色: ```echarts { "xAxis": { "type": "category", "data": ["1k Notes", "5k Notes", "10k Notes", "20k Notes", "50k Notes"], "axisLabel": { "color": "#666", "rotate": 0 } }, "yAxis": [ { "type": "value", "name": "Notes Count", "splitLine": { "lineStyle": { "color": "#f4f4f5" } }, "axisLabel": { "color": "#666" } }, { "type": "value", "name": " latency (ms)", "splitLine": { "show": false }, "axisLabel": { "color": "#666" } } ], "series": [ { "name": "Notes Count", "data": [1000, 5000, 10000, 20000, 50000], "type": "bar", "itemStyle": { "color": "#eaeaea", "borderRadius": [4, 4, 0, 0] } }, { "name": "Search Latency", "data": [8, 12, 15, 22, 35], "type": "line", "yAxisIndex": 1, "smooth": true, "lineStyle": { "color": "#000", "width": 3 }, "itemStyle": { "color": "#000" }, "symbol": "circle", "symbolSize": 8 } ], "grid": { "left": "10%", "right": "10%", "bottom": "15%" }, "legend": { "data": ["Notes Count", "Search Latency"], "bottom": 0, "textStyle": { "color": "#666" } } } ``` 即使有**50,000 筆筆記**,搜尋查詢也在 40 毫秒內返回結果——比眨眼間更快。 ### 記憶體效率 搜尋引擎使用優化過的數據結構: - **FlexSearch 文檔索引**:將多個字段合併為單一高效的索引 - **共享筆記映射**:保持 O(1) 查找速度以獲取筆記元數據 - **批量處理**:分批更新索引以避免佔用 UI 界面 - **靜默載入**:在切換工作空間時按需載入索引 --- ## 第6部分:工作空間管理最佳實踐 ### 創建有效的工作空間結構 #### 推薦模式 **模式 1:按領域分離** ``` ├── work-engineering ├── work-marketing ├── work-hr └── personal ``` **模式 2:以項目為中心的组织** ``` ├── project-alpha ├── project-beta ├── project-gamma └── archive-2024 ``` **模式 3:時間性組織** ``` ├── 2025-q1 ├── 2025-q2 ├── 2025-q3 └── 2025-q4 ``` ### 何時創建新的工作空間 考慮在以下情況下創建新的工作空間: ✅ **上下文界限清晰**:不同的項目、團隊或生活領域 ✅ **访问控制需要不同**:某些筆記需要限制共享 ✅ **知識庫變得龐大**:當單個工作空間超過 10,000 筆筆記時拆分 ✅ **合作需求不同**:不同合作者對不同主題有不同需求 ### 何時保持在同一工作空間 將筆記集中在一起,當: ❌ **頻繁交叉引用**:筆記定期相互鏈接 ❌ **搜尋需要涵蓋多個主題**:你經常搜尋所有內容 ❌ **設定開銷大於收益**:對於小數集(<1,000 筆筆記)而言 --- ## 第7部分:進階技巧與秘訣 ### 技巧 1:利用 Hashtag 分類 NoteRich 自動對 Hashtag 進行分類,以便搜尋: ``` #machine-learning → 搜尋為 “machine” + “learning” ``` 這樣就能在搜尋時找到包含 `#machine-learning` 的筆記,無論是搜尋 “machine” 還是 “learning”。 ### 技巧 2:在搜尋中使用附件文件名 附件文件名會被索引並可搜尋: ``` quarterly_report.pdf → 搜尋為 “quarterly” + “report” + “pdf” ``` ### 技巧 3:數學方程式也可被搜尋 方程式內容會被提取並索引: ``` E = mc² → 搜尋其包含的元件 ``` ### 技巧 4:為常見搜尋進行優化 在標題中構造常見的資訊,以實現精確的匹配: ``` 更好的標題: “Q4 Marketing Budget Analysis” 而不是: “一些關於數字的想法” ``` ### 技巧 5:定期維護索引 雖然 NoteRich 自動處理索引,但定期重建索引可以優化性能: 1. 開啟設定 → 搜尋 2. 點擊 “重建搜尋索引” 3. 等待完成通知 這在以下情況下建議: - 批量導入(一次超過 1,000 筆筆記) - 主要版本升級 - 搜尋速度明顯變慢時 --- ## 第8部分:解決常見問題 ### 問題:搜尋結果中缺少預期的筆記 **可能的原因**: 1. 筆記在另一個工作空間中 2. 索引尚未更新 3. 筆記被標記為草稿 **解決方案**: - 檢查 URL 中的當前工作空間指示 - 等待幾秒鐘,等待索引更新 - 確認筆記狀態(草稿不會被搜尋) ### 問題:工作空間切換速度緩慢 **可能的原因**: 1. 工作空間很大,包含許多筆記 2. 首次索引載入 3. 瀏覽器 IndexedDB 性能問題 **解決方案**: - 允許初始索引快取建立(一次性操作) - 考慮將非常大的工作空間拆分成多個部分 - 確保瀏覽器有足夠的儲存空間 ### 問題:搜尋索引不一致 **症狀**: - 最近編輯的筆記沒有出現在搜尋結果中 - 已刪除的筆記仍然出現在結果中 **解決方案**: ``` 設定 → 進階 → 重建搜尋索引 ``` 這會強制重新索引當前工作空間中的所有筆記。 --- ## 結論:打造你的第二腦 掌握 NoteRich 的工作空間和進階搜尋功能,能將你的筆記記錄從被動的儲存轉變為主動的思考伙伴。以下是你的行動計劃: ### 第1週:基礎建設 - [ ] 審核現有筆記並確定自然的工作空間界限 - [ ] 根據主要上下文創建2-3個初始工作空間 - [ ] 練習使用 URL 導航在工作空間之間切換 ### 第2週:優化 - [ ] 嘗試不同的搜尋查詢模式 - [ ] 學習 OR 運算符(`|`)以實現靈活搜尋 - [ ] 檢視搜尋結果排名並 accordingly 調整筆記標題 ### 第3週:精通 - [ ] 設置特定工作空間的工作流程 - [ ] 實施一致的命名規則 - [ ] 與合作者分享工作空間連結 ### 持續維護 - [ ] 每季檢視工作空間結構 - [ ] 監控搜尋性能指標 - [ ] 隨著知識增長而調整組織結構 --- <div class="flex flex-wrap gap-2 mt-8 mb-12"> <span class="px-3 py-1 bg-[#f4f4f5] border border-[#eaeaea] rounded-full text-xs font-medium text-[#666]">工作空間</span> <span class="px-3 py-1 bg-[#f4f4f5] border border-[#eaeaea] rounded-full text-xs font-medium text-[#666]">進階搜尋</span> <span class="px-3 py-1 bg-[#f4f4f5] border border-[#eaeaea] rounded-full text-xs font-medium text-[#666]">語義索引</span> <span class="px-3 py-1 bg-[#f4f4f5] border border-[#eaeaea] rounded-full text-xs font-medium text-[#666]">IndexedDB</span> <span class="px-3 py-1 bg-[#f4f4f5] border border-[#eaeaea] rounded-full text-xs font-medium text-[#666]">多語言</span> <span class="px-3 py-1 bg-[#f4f4f5] border border-[#eaeaea] rounded-full text-xs font-medium text-[#666]">PKM</span> <span class="px-3 py-1 bg-[#f4f4f5] border border-[#eaeaea] rounded-full text-xs font-medium text-[#666]">本地優先</span> <span class="px-3 py-1 bg-[#f4f4f5] border border-[#eaeaea] rounded-full text-xs font-medium text-[#666]">性能</span> </div>