# Noterich Workspaces and Advanced Search Tutorial In an era where information overload is the norm, organizing your digital thoughts efficiently isn't just a luxury—it's a necessity. **NoteRich** introduces two powerful features designed to transform how you manage and retrieve knowledge: **Isolated Multi-Workspaces** and **Advanced Semantic Search**. This tutorial will guide you through mastering these features, helping you build a personalized knowledge management system that scales with your needs. --- ## Part 1: Understanding Workspaces in NoteRich ### What Are Workspaces? Imagine having separate physical notebooks for different areas of your life—one for work projects, another for personal journaling, and a third for research notes. **Workspaces** in NoteRich bring this organizational clarity to your digital environment. Each workspace in NoteRich is a **fully isolated container** for your notes, complete with its own: - Independent note database - Separate search index - Unique URL routing - Isolated AI memory context ```mermaid graph TB subgraph "NoteRich Application" A[Workspace Router] --> B[Workspace: Work] A --> C[Workspace: Personal] A --> D[Workspace: Research] B --> B1[Notes Database] B --> B2[Search Index] B --> B3[AI Context] C --> C1[Notes Database] C --> C2[Search Index] C --> C3[AI Context] D --> D1[Notes Database] D --> D2[Search Index] D --> D3[AI Context] 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 ``` ### Why Use Multiple Workspaces? | Scenario | Benefit | |----------|---------| | **Work-Life Separation** | Keep professional notes completely separate from personal journals | | **Project Isolation** | Dedicate workspaces to specific clients or long-term projects | | **Context Switching** | Instantly switch between different mental contexts without distraction | | **Privacy Control** | Share specific workspaces without exposing unrelated content | | **Performance Optimization** | Large knowledge bases remain fast when split into focused workspaces | --- ## Part 2: Navigating Between Workspaces ### The Workspace Router System NoteRich uses an intelligent routing system that remembers your workspace preferences and provides seamless navigation. #### URL-Based Workspace Identification Each workspace has a unique identifier reflected in your browser's URL: ``` https://noterich.app/#workspace=work-projects https://noterich.app/#workspace=personal-journal https://noterich.app/#workspace=research-notes ``` The workspace ID is: - **URL-Safe**: Only alphanumeric characters, hyphens, and underscores are allowed - **Persistent**: Stored in your browser's local storage for quick recovery - **Shareable**: You can share direct links to specific workspaces #### How Workspace Switching Works When you switch workspaces in NoteRich, here's what happens behind the scenes: ```mermaid sequenceDiagram participant U as User participant R as Workspace Router participant L as LocalStorage participant W as Web Worker participant S as Search Engine participant D as IndexedDB U->>R: Click workspace switch R->>L: Save workspace ID R->>R: Update URL hash R->>W: Post workspace ID message R->>S: Reinitialize search engine W->>D: Switch database connection S->>D: Load workspace-specific index S-->>U: Search ready notification ``` ### Best Practices for Workspace Naming Choose workspace IDs that are: - **Descriptive**: `marketing-q4-2025` instead of `work1` - **Consistent**: Use a naming convention across your organization - **Future-Proof**: Avoid time-bound names unless temporary (`project-phoenix` vs `temp-notes`) --- ## Part 3: Advanced Search Architecture ### From Keyword Matching to Semantic Understanding Traditional search tools rely on exact keyword matching. If you search for "automobile," they won't find notes containing "car." NoteRich's advanced search engine goes beyond this limitation. #### The Dual-Layer Search System NoteRich employs a sophisticated two-tier search architecture: ```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="User Query", fillcolor="#000", color="#000", fontcolor="#ffffff"]; subgraph cluster_processing { label = "Query Processing Pipeline"; style = "filled"; fillcolor = "#f9f9f9"; color = "#eaeaea"; Segment [label="Text Segmentation\n(Intl.Segmenter + Smart Fallback)"]; Tokenize [label="Token Classification\n(Emails, URLs, Numbers, CJK)"]; } subgraph cluster_search { label = "Parallel Search Execution"; style = "filled"; fillcolor = "#f9f9f9"; color = "#eaeaea"; Precise [label="Precise Match\ntitle_raw field\nWeight: 1.0"]; Fuzzy [label="Fuzzy Match\ntitle/content fields\nWeight: 0.8"]; } Merge [label="Score Merging & Ranking"]; Results [label="Final Results\nwith Highlights"]; Query -> Segment; Segment -> Tokenize; Tokenize -> Precise; Tokenize -> Fuzzy; Precise -> Merge; Fuzzy -> Merge; Merge -> Results; } ``` ### Intelligent Text Segmentation The foundation of NoteRich's search power lies in its advanced text segmentation capabilities. #### Multi-Language Support The search engine automatically detects and segments text in multiple languages: | Language Type | Examples | Segmentation Strategy | |---------------|----------|----------------------| | **Latin-based** | English, Spanish, French | Word boundary detection | | **CJK** | Chinese, Japanese, Korean | Character-level segmentation using Intl.Segmenter | | **Mixed** | Code snippets, URLs, emails | Pattern-based extraction | | **Numeric** | Dates, prices, phone numbers | Specialized pattern recognition | #### Smart Pattern Recognition NoteRich recognizes and preserves important patterns during segmentation: - **Email addresses**: `user@example.com` - **URLs**: `https://example.com/path` - **Phone numbers**: `+1-555-123-4567` - **Dates**: `2025-01-15`, `15/01/2025` - **Currency**: `$1,234.56`, `¥500` - **Measurements**: `42℃`, `100km/h` This ensures that searching for `user@example.com` finds the exact email, not fragmented results for `user`, `example`, and `com`. --- ## Part 4: Mastering Search Queries ### Query Syntax and Operators NoteRich supports powerful query syntax for precise information retrieval. #### Basic Search Simply type your query to search across all indexed content: ``` Quarterly marketing strategy ``` This searches both titles and full content, returning results ranked by relevance. #### Multi-Term OR Search Use the pipe symbol `|` to search for multiple alternative terms: ``` Q4 planning | quarterly review | year-end summary ``` This returns notes matching **any** of the specified terms, perfect for brainstorming sessions where terminology might vary. #### Weighted Scoring System NoteRich uses a sophisticated scoring algorithm: ``` Match Type | Weight | Description --------------------|--------|------------------------------------- Precise (title_raw) | 1.0 | Exact match in original title Fuzzy (title) | 0.8 | Segmented match in tokenized title Fuzzy (content) | 0.8 | Segmented match in note content ``` Results are sorted by: 1. **Match type priority**: Precise matches rank higher than fuzzy matches 2. **Cumulative score**: Multiple term matches increase the score 3. **Sub-query coverage**: Notes matching more sub-queries rank higher ### Real-World Search Examples #### Example 1: Finding Meeting Notes ```javascript // Search query "team standup | daily sync | morning meeting" // Returns notes containing any of these phrases, // with exact title matches prioritized ``` #### Example 2: Technical Documentation Search ```javascript // Search query "API endpoint authentication" // Intelligently segments and finds: // - Notes mentioning "API" and "endpoint" and "authentication" // - Preserves "API" as a single token // - Matches both camelCase and spaced variations ``` #### Example 3: Multilingual Content ```javascript // Search query (mixed English and Chinese) "project roadmap 项目规划" // Segments and searches across both languages simultaneously ``` ### Long Document Navigation Assistant One of NoteRich's standout features is its ability to handle **massive documents** with ease. Whether you're working with technical specifications, research papers, or comprehensive project documentation, finding specific content within long documents is seamless. #### How In-Document Search Works When you perform a search, NoteRich doesn't just return matching documents—it provides **precise in-document navigation**: ```mermaid sequenceDiagram participant User participant SearchEngine participant DocumentIndex participant Viewer User->>SearchEngine: Enter search query SearchEngine->>DocumentIndex: Query across all workspaces DocumentIndex-->>SearchEngine: Return matching docs + hit positions SearchEngine->>User: Display results with match count User->>User: Click on a result SearchEngine->>Viewer: Open document at first match Viewer->>User: Highlight all matches with navigation controls User->>Viewer: Jump between matches (Next/Previous) Viewer->>User: Show match position indicator (e.g., "3 of 12") ``` #### Key Features for Long Documents 1. **Match Count Display**: Each search result shows the number of matches within that document (e.g., "Annual Report 2024 · 15 matches"), helping you identify which documents contain the most relevant content. 2. **Instant Jump-to-Match**: Clicking a search result opens the document and automatically scrolls to the first match, with the matched text highlighted for immediate visibility. 3. **Navigation Controls**: Use keyboard shortcuts or UI buttons to cycle through all matches: - `F3` or `Cmd+G`: Next match - `Shift+F3` or `Shift+Cmd+G`: Previous match - Visual counter shows your current position (e.g., "Match 7 of 23") 4. **Multi-Match Highlighting**: All instances of your search term are highlighted simultaneously, giving you a visual overview of distribution throughout the document. 5. **Context Preservation**: When navigating between matches, the surrounding context remains visible, ensuring you never lose your place in complex documents. #### Real-World Example: Technical Specification Navigation Imagine you have a 50,000-character technical specification document. You need to find all mentions of "authentication protocol": | Step | Action | Result | |------|--------|--------| | 1 | Type `authentication protocol` in search bar | Spec document appears with "8 matches" | | 2 | Click the search result | Document opens, jumps to first occurrence | | 3 | Press `F3` seven times | Review all 8 instances sequentially | | 4 | Observe highlighted matches | Visual overview of term distribution | | 5 | Read surrounding context | Full paragraph context preserved at each jump | This capability transforms lengthy documents from intimidating walls of text into navigable knowledge structures where any information is always just a few keystrokes away. #### Tips for Long Document Search - **Use Specific Phrases**: Longer queries reduce false positives in large documents - **Check Match Counts**: High match counts may indicate overly common terms - **Combine with Workspace Filtering**: Search within specific workspaces to narrow scope - **Leverage Title Precision**: Structure section headers clearly for precise title matching --- ## Part 5: Performance at Scale ### IndexedDB-Powered Storage NoteRich leverages **IndexedDB** for high-performance local storage, enabling instant search even with massive knowledge bases. #### Database Architecture Each workspace maintains its own set of IndexedDB databases: ``` noterich_note_database_{workspaceId} → Note metadata and content noterich_search_index_{workspaceId} → Search index documents ``` This isolation ensures: - **Fast switching**: No cross-workspace data loading - **Independent backups**: Export individual workspaces - **Scoped permissions**: Fine-grained access control ### Incremental Index Updates Rather than rebuilding the entire search index every time, NoteRich uses intelligent incremental updates: ```mermaid graph LR A[Note Saved] --> B{Index Exists?} B -->|Yes| C[Compare Timestamps] B -->|No| D[Full Index Build] C -->|Newer| E[Update Index Entry] C -->|Older| F[Skip - Already Indexed] E --> G[Persist to IndexedDB] D --> G F --> H[Index Current] 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 ``` ### Benchmark Performance Our testing shows exceptional performance even at scale: ```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" } } } ``` Even with **50,000 notes**, search queries return results in under 40 milliseconds—faster than the blink of an eye. ### Memory Efficiency The search engine uses optimized data structures: - **FlexSearch Document Index**: Combines multiple fields into a single efficient index - **Shared Note Map**: Maintains O(1) lookup for note metadata - **Batch Processing**: Updates indexes in chunks to prevent UI blocking - **Lazy Loading**: Search indexes load on-demand when switching workspaces --- ## Part 6: Workspace Management Best Practices ### Creating an Effective Workspace Structure #### Recommended Patterns **Pattern 1: Domain-Based Separation** ``` ├── work-engineering ├── work-marketing ├── work-hr └── personal ``` **Pattern 2: Project-Centric Organization** ``` ├── project-alpha ├── project-beta ├── project-gamma └── archive-2024 ``` **Pattern 3: Temporal Organization** ``` ├── 2025-q1 ├── 2025-q2 ├── 2025-q3 └── 2025-q4 ``` ### When to Create New Workspaces Consider creating a new workspace when: ✅ **Context boundaries are clear**: Different projects, teams, or life domains ✅ **Access control needs differ**: Some notes need restricted sharing ✅ **Knowledge bases grow large**: Split when a single workspace exceeds 10,000 notes ✅ **Collaboration requirements vary**: Different collaborators for different topics ### When to Stay in a Single Workspace Keep notes together when: ❌ **Cross-referencing is frequent**: Notes regularly link to each other ❌ **Search needs span topics**: You often search across all content ❌ **Setup overhead outweighs benefits**: For small collections (<1,000 notes) --- ## Part 7: Advanced Tips and Tricks ### Tip 1: Leverage Hashtag Segmentation NoteRich automatically segments hashtags for search: ``` #machine-learning → searchable as "machine" + "learning" ``` This allows finding `#machine-learning` notes when searching for either "machine" or "learning." ### Tip 2: Use Attachment Filenames in Search Attachment filenames are indexed and searchable: ``` quarterly_report.pdf → searchable as "quarterly" + "report" + "pdf" ``` ### Tip 3: Mathematical Equations Are Searchable Equation content is extracted and indexed: ``` E = mc² → searchable components indexed ``` ### Tip 4: Optimize for Common Searches Structure frequently accessed information in titles for precise matching: ``` Better: "Q4 Marketing Budget Analysis" Instead of: "Some thoughts on numbers" ``` ### Tip 5: Regular Index Maintenance While NoteRich handles indexing automatically, periodic rebuilds can optimize performance: 1. Open Settings → Search 2. Click "Rebuild Search Index" 3. Wait for completion notification This is recommended after: - Bulk imports (>1,000 notes at once) - Major version upgrades - Noticeable search slowdown --- ## Part 8: Troubleshooting Common Issues ### Issue: Search Results Missing Expected Notes **Possible Causes:** 1. Note is in a different workspace 2. Index hasn't updated yet 3. Note is marked as draft **Solutions:** - Check current workspace indicator in URL - Wait a few seconds for index to update - Verify note status (drafts are excluded from search) ### Issue: Workspace Switch Feels Slow **Possible Causes:** 1. Large workspace with many notes 2. First-time index load 3. Browser IndexedDB performance **Solutions:** - Allow initial index cache to build (one-time operation) - Consider splitting very large workspaces - Ensure browser has sufficient storage quota ### Issue: Search Index Out of Sync **Symptoms:** - Recently edited notes don't appear in search - Deleted notes still show in results **Solution:** ``` Settings → Advanced → Rebuild Search Index ``` This forces a complete reindex of all notes in the current workspace. --- ## Conclusion: Building Your Second Brain Mastering NoteRich's workspaces and advanced search transforms your note-taking from passive storage into an active thinking partner. Here's your action plan: ### Week 1: Foundation - [ ] Audit existing notes and identify natural workspace boundaries - [ ] Create 2-3 initial workspaces based on your primary contexts - [ ] Practice switching between workspaces using URL navigation ### Week 2: Optimization - [ ] Experiment with different search query patterns - [ ] Learn the OR operator (`|`) for flexible searching - [ ] Review search result rankings and adjust note titles accordingly ### Week 3: Mastery - [ ] Set up workspace-specific workflows - [ ] Implement consistent naming conventions - [ ] Share workspace links with collaborators ### Ongoing: Maintenance - [ ] Quarterly review of workspace structure - [ ] Monitor search performance metrics - [ ] Refine organization as your knowledge grows --- <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]">Workspaces</span> <span class="px-3 py-1 bg-[#f4f4f5] border border-[#eaeaea] rounded-full text-xs font-medium text-[#666]">Advanced Search</span> <span class="px-3 py-1 bg-[#f4f4f5] border border-[#eaeaea] rounded-full text-xs font-medium text-[#666]">Semantic Index</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]">Multi-Language</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]">Local-First</span> <span class="px-3 py-1 bg-[#f4f4f5] border border-[#eaeaea] rounded-full text-xs font-medium text-[#666]">Performance</span> </div>