Benutzer:Dapete/Ideen
Verbesserung der Funktion "Zufälliger Artikel"
[Bearbeiten | Quelltext bearbeiten]Das Problem: Die aktuelle Zufallsfunktion ist nicht gleichmäßig - einzelne Artikel werden häufiger erreicht als andere.
Die Lösung: jeder Artikel erhält eine eindeutige, durchgehende Nummerierung.
Dafür wird eine neue Tabelle in der Datenbank benötigt, die jeder page diese Nummerierung zuordnet.
Grundlegend wird die Tabelle folgendermaßen gefüllt:
- Zur Initialisierung wird für jede page ein Eintrag geschrieben.
- Beim Neuanlegen eines Artikels wird ein neuer Eintrag angelegt (mit dem bisherigen Maximum + 1)
- Beim Löschen eines Artikels wird der entsprechende Eintrag gelöscht. Der Eintrag, der bisher die höchste Nummer hatte, erhält die Nummer des gelöschten Artikels (um keine Lücke zu erzeugen).
- (Evtl. muss dabei auch beachtet werden, ob es sich um einen Redirect handelt. Also müsste auch die Umwandlung von/in Redirects berücksichtigt werden.)
Um einen zufälligen Artikel zu bekommen, wählt mai eine Zufallszahl zwischen 0 und der maximalen Nummer und ruft den passenden Artikel ab. Dabei kann es evtl. zu Fehlern kommen:
- Existiert aus irgendeinem Grund der Eintrag zur gewählte Zufallszahl nicht, wird diese Nummer dem Artikel zugeteilt, der bisher die maximale Nummer hatte (um evtl. Lücken zu schließen).
- (Evtl. wird, falls ein Redirect ermittelt wird, dessen Eintrag entfernt [Vorgehen wie bei Löschung].)
Bis auf die Initialisierung ist diese Lösung sparsam mit Änderungen – es geht immer nur um 1–2 Einträge, die geschrieben werden müssen. Sinnvoll wäre die Möglichkeit, die Korrektheit nachräglich zu prüfen - wobei überschüssige Einträge entfernt und fehlende ergänzt werden.