bug fix
All checks were successful
Deploy mindnet to llm-node / deploy (push) Successful in 4s

This commit is contained in:
Lars 2025-12-28 11:52:49 +01:00
parent 53058d1504
commit 92bd3d9a47

View File

@ -271,9 +271,10 @@ class GraphExplorerService:
) )
# WICHTIG: Wir müssen genug Kanten laden, um alle "Titel#Abschnitt" Varianten zu finden # WICHTIG: Wir müssen genug Kanten laden, um alle "Titel#Abschnitt" Varianten zu finden
# Verwende paginierte Suche, um sicherzustellen, dass wir alle Kanten durchsuchen # Verwende paginierte Suche, um sicherzustellen, dass wir alle Kanten durchsuchen
# OPTIMIERUNG: Lade alle Kanten in einem Durchgang (falls möglich)
res_extended = [] res_extended = []
next_offset = None next_offset = None
max_iterations = 20 # Maximal 20 Iterationen (20 * 5000 = 100000 Kanten) max_iterations = 50 # Maximal 50 Iterationen (50 * 5000 = 250000 Kanten)
iteration = 0 iteration = 0
while iteration < max_iterations: while iteration < max_iterations:
batch, next_offset = self.client.scroll( batch, next_offset = self.client.scroll(
@ -311,14 +312,13 @@ class GraphExplorerService:
# ZUSÄTZLICH: Fuzzy-Matching für ähnliche Titel # ZUSÄTZLICH: Fuzzy-Matching für ähnliche Titel
# PROBLEM: Wikilinks können andere Titel verwenden als der gespeicherte Note-Titel # PROBLEM: Wikilinks können andere Titel verwenden als der gespeicherte Note-Titel
# Beispiel: Note-Titel = "Persönliches Leitbild (20252029)", aber Wikilink = "Mein Persönliches Leitbild 2025" # Beispiel: Note-Titel = "Persönliches Leitbild (20252029)", aber Wikilink = "Mein Persönliches Leitbild 2025"
# Strategie: Normalisiere beide Titel und prüfe, ob sie ähnlich sind # STRATEGIE: Da target_id immer "Titel#Abschnitt" ist, nehmen wir einfach den Teil vor dem #
# und normalisieren beide (Note-Titel und target_id-Basis) für Vergleich
if not any(tgt_id == t or tgt_id.startswith(t + "#") for t in note_titles_to_search): if not any(tgt_id == t or tgt_id.startswith(t + "#") for t in note_titles_to_search):
# Normalisiere target_id (entferne #Abschnitt) # Extrahiere Basis-Titel aus target_id (Teil vor dem #)
tgt_base = tgt_id.split("#")[0].strip() tgt_base = tgt_id.split("#")[0].strip()
# Normalisiere jeden Titel und prüfe auf Ähnlichkeit # Normalisierungs-Funktion: Entferne Klammern, Jahreszahlen, Präfixe
for title in note_titles_to_search:
# Normalisiere: Entferne Klammern, Jahreszahlen, Präfixe
def normalize_title(t): def normalize_title(t):
if not t: if not t:
return "" return ""
@ -333,10 +333,14 @@ class GraphExplorerService:
t = re.sub(r'\s+', ' ', t).strip() t = re.sub(r'\s+', ' ', t).strip()
return t.lower() # Case-insensitive Vergleich return t.lower() # Case-insensitive Vergleich
title_norm = normalize_title(title) # Normalisiere target_id-Basis
tgt_norm = normalize_title(tgt_base) tgt_norm = normalize_title(tgt_base)
# Prüfe auf Ähnlichkeit: Entweder exakt gleich oder einer beginnt mit dem anderen # Prüfe gegen alle Note-Titel (inkl. Aliases)
for title in note_titles_to_search:
title_norm = normalize_title(title)
# Prüfe auf Ähnlichkeit: Exakt gleich oder einer beginnt mit dem anderen
if title_norm and tgt_norm and len(title_norm) > 5: if title_norm and tgt_norm and len(title_norm) > 5:
if (title_norm == tgt_norm or if (title_norm == tgt_norm or
title_norm.startswith(tgt_norm) or title_norm.startswith(tgt_norm) or
@ -344,7 +348,7 @@ class GraphExplorerService:
results.append(edge) results.append(edge)
existing_edge_ids.add(edge.id) existing_edge_ids.add(edge.id)
matched_count += 1 matched_count += 1
break break # Nur einmal hinzufügen
return results return results