Christian Kruse: Idee für neue Medaille

Beitrag lesen

Hallo Tabellenkalk,

Ich meinte, schon gesehen zu haben, dass die Nottification auch mit Angehängsel funkttioniert. Das war wohl ein Irrtum, bzw. Grund für einen featurewunsch an @Christian Kruse's Programmierbüro...

Das Problem ist, dass ich, um das umzusetzen, den Algorithmus so umstellen müsste, dass er für jeden Buchstaben eine SQL-Query macht. Usernamen hier folgen ja keinem festen Schema, bisher ist einfach jedes Zeicher erlaubt. Deshalb gehe ich zur Zeit so vor:

  • ich nehme ab dem @ alle Zeichen bis zum Ende der Zeile
  • solange Buchstaben übrig sind und noch kein User gefunden wurde
    • suche mit der Zeichenkette nach einem User. Falls einer gefunden wurde return
    • entferne alle Whitespaces vom Ende
    • besteht das Ende der Zeichenkette aus einem Nicht-Buchstaben: entferne einen Nicht-Buchstaben
    • besteht das Ende der Zeichenkette aus einem Buchstaben: entferne das letzte Wort

Ich müsste den letzten Schritt dann umstellen auf „entferne den letzten Buchstaben“. Wenn wir uns jetzt eine theoretische Zeile betrachten:

@Foo ist ein witziger Kerl, den man unbedingt kennen lernen sollte

In diesem Fall müsste ich also 52 Queries abfeuern um herauszufinden, dass ein User mit dem Namen Foo gemeint ist. Ich glaube nicht, dass das eine besonders gute Idee ist.

Natürlich könnte man hingehen und von links anfangen zu suchen, das würde die Such-Zeit dramatisch reduzieren. Aber in dem Fall hat man verloren, wenn es z.B. einen User foo und einen User foo bar gibt. Der Algorithmus würde immer nur foo finden, man braucht hier wirklich den longest match possible.

LG,
CK