Protokolle durchsuchen
Durchsucht die Protokolle aller vergangenen Treffen, von den Etherpad-Mitschriften ab 2013 bis heute. Mehrere Begriffe werden verknüpft, es genügt jeweils der Wortanfang.
def build_query(user_input: str) -> str:
"""Nutzereingabe in einen FTS5-Ausdruck uebersetzen.
Die FTS5-Syntax kennt eigene Operatoren (``AND``, ``NEAR``, ``*``,
Klammern), an denen eine unbedachte Eingabe zu einem SQL-Fehler fuehrt.
Deshalb wird die Eingabe in Terme zerlegt, jeder Term als Phrase
gequotet und mit ``*`` zur Praefixsuche erweitert. Mehrere Begriffe
werden mit AND verknuepft, es zaehlt also nur, was alle Begriffe
enthaelt.
"""
terms = _TERM_RE.findall(user_input)
if not terms:
return ""
return " AND ".join(f'"{term}"*' for term in terms)
build_query('pandas dataframe')
'"pandas"* AND "dataframe"*'