diff --git a/FUNKTIONSWEISE.md b/FUNKTIONSWEISE.md index 123e319..c65b0b8 100644 --- a/FUNKTIONSWEISE.md +++ b/FUNKTIONSWEISE.md @@ -29,19 +29,28 @@ mdgrep hat **keinen Suchindex**. Alle Texte liegen als *Blöcke* im Speicher; je und ist bei einigen Megabyte Text schnell genug. ```mermaid -flowchart LR +flowchart TB subgraph Anfrage - Q["Suchtext
(rust OR go) -crypto"] --> T[Tokenizer] --> P[Parser] --> AST["Syntaxbaum
And/Or/Not/Term"] + direction TB + Q["Suchtext
(rust OR go) -crypto"] --> T[Tokenizer] + T --> P[Parser] + P --> AST["Syntaxbaum
And / Or / Not / Term"] end subgraph Daten - D["Markdown-Dateien
oder eigene Daten"] --> L["load_markdown()
split_markdown()"] --> B["Blöcke
(title, text, meta)"] + direction TB + D["Markdown-Dateien
oder eigene Daten"] --> L["load_markdown()
split_markdown()"] + L --> B["Blöcke
title, text, meta"] end AST --> E["SearchEngine.search()"] B --> E - E --> F[Filter] --> M["Treffer prüfen
(mit Zeitbudget)"] --> S["sortieren, gruppieren,
Seite ausschneiden"] - S --> H["Fundstellen (Spans)
→ Ausschnitte (Segmente)"] --> R["SearchResult
.to_dict()"] - R --> CLI["mdgrep (Terminal)"] - R --> API["Flask: GET /search (JSON)"] --> W["Widget (Browser)"] + E --> F["Filter"] + F --> M["Treffer prüfen
(mit Zeitbudget)"] + M --> S["sortieren, gruppieren,
Seite ausschneiden"] + S --> H["Fundstellen (Spans)
→ Ausschnitte (Segmente)"] + H --> R["SearchResult
.to_dict()"] + R --> CLI["mdgrep
(Terminal)"] + R --> API["Flask
GET /search"] + API --> W["Widget
(Browser)"] ``` Drei Begriffe tragen das ganze Design: