Document Fuzzy Search process

16ba8331b5bd0bec42bf005551c51799a1e58c1e

Joe <joenunezb@gmail.com>

1 files changed, +113 -0Showing whitespace changes
docs/fuzzy_search_flow.md+113 -0
@@ -0,0 +1,113 @@
1+## Input Sources to printCharacters
2+
3+
4+`printCharacters` is the main function that triggers the fuzzy search process if fuzzy search is enabled.
5+
6+```mermaid
7+flowchart TD
8+ subgraph User Actions
9+ UA1[Character Search Input]
10+ UA2[Tag Filter Click]
11+ UA3[Folder Navigation]
12+ UA4[Character Delete]
13+ UA5[Character Create]
14+ UA6[Character Import]
15+ UA7[Clear All Filters]
16+ UA8[Bulk Edit Operations]
17+ UA9[Persona Changes]
18+ end
19+
20+ subgraph API Events
21+ API1[Character List Update]
22+ API2[Group Update]
23+ API3[Tag Update]
24+ end
25+
26+ subgraph System Events
27+ SE1[Page Load]
28+ SE2[Content Manager Update]
29+ SE3[Extension Events]
30+ end
31+
32+ UA1 -->|triggers| PCD[printCharactersDebounced]
33+ UA2 -->|triggers| PCD
34+ UA7 -->|triggers| PCD
35+ UA8 -->|triggers| PCD
36+ UA9 -->|triggers| PCD
37+
38+ UA3 -->|triggers| PC[printCharacters]
39+ UA4 -->|triggers| PC
40+ UA5 -->|triggers| PC
41+ UA6 -->|triggers| PC
42+
43+ API1 -->|triggers| PC
44+ API2 -->|triggers| PC
45+ API3 -->|triggers| PC
46+
47+ SE1 -->|triggers| PC
48+ SE2 -->|triggers| PC
49+ SE3 -->|triggers| PC
50+
51+ PCD -->|debounced call| PC
52+
53+ style PC fill:#f96,stroke:#333
54+ style PCD fill:#f96,stroke:#333
55+```
56+
57+This diagram shows how `printCharacters` is called throughout the application:
58+
59+1. User Actions that trigger character list updates:
60+ - Search input (debounced)
61+ - Tag filter clicks (debounced)
62+ - Folder navigation (direct)
63+ - Character management operations (direct)
64+
65+2. API Events that require list refresh:
66+ - Character list updates
67+ - Group updates
68+ - Tag system updates
69+
70+3. System Events:
71+ - Initial page load
72+ - Content manager updates
73+ - Extension-triggered refreshes
74+
75+
76+
77+## Fuzzy Search Flow
78+
79+
80+This diagram shows the flow of fuzzy search operations:
81+```mermaid
82+sequenceDiagram
83+ participant Data as Data Sources
84+ participant PC as printCharacters
85+ participant GEL as getEntitiesList
86+ participant FH as FilterHelper
87+ participant AF as applyFilters
88+ participant FS as FuzzySearch Functions
89+ participant Cache as FuzzySearchCaches
90+
91+ Note over Data: Changes from:<br/>- Tags<br/>- Personas<br/>- World Info<br/>- Groups
92+
93+ Data->>PC: All changes trigger printCharacters<br/>(direct or debounced)
94+
95+ PC->>GEL: Call with {doFilter: true}
96+ GEL->>FH: filterByTagState(entities)
97+ GEL->>AF: entitiesFilter.applyFilters(entities)
98+
99+ AF->>FH: Check scoreCache for existing results
100+ FH-->>AF: Return cached scores if exist
101+
102+ Note over FS: Filter functions include:<br/>SEARCH, <br/>FAV, <br/>GROUP, <br/>FOLDER, <br/>TAG, <br/>WORLD_INFO_SEARCH, <br/>PERSONA_SEARCH
103+ AF->>FS: fuzzySearchCharacters/Groups/Tags
104+ FS->>Cache: Check/Store results
105+
106+ FS-->>AF: Return search results
107+ AF->>FH: Cache new scores
108+ AF-->>GEL: Return filtered entities
109+ GEL-->>PC: Return final entities list
110+
111+ PC->>Cache: clearFuzzySearchCaches()
112+ Note over Cache: Cache is cleared at the end of<br/>each printCharacters call,<br/>ensuring fresh results for next search
113+```