Bewertungssystem wie reddit

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Terrorbeat, 3. November 2012 .

Schlagworte:
  1. 3. November 2012
    Zuletzt bearbeitet: 3. November 2012
    HI

    Auf meiner Startseite sollen ähnlich wie bei reddit Artikel Bewertet werden können um so einer besser Positionierung innerhalb der Seite zu vergeben (upvote/downvote). Also ein Artikel der sehr interessant ist wird vom Leser positiv bewertet und wird vom System so als "lesenswerter" eingestuft und zeigt ihn möglichst weit oben in der Startseite an.

    Da dies aber News-Artikel sind die im laufe der Zeit immer uninteressanter werden sollen diese automatisch an "leserwert" verlieren.

    Jetzt stellt sich für mich die frage wie man so was realisiert. Ich kann ja wohl kaum pauschal sagen nach 24 stunden ist ein Artikel nicht mehr lesenswert. Genau so wenig ist ein Artikel wie "gleich kommen die lottozahlen" noch in 10 stunden interessant. Irgendwie muss man das doch am Vote verhalten der Leser erkennen können wan ein Artikel "weg soll" und wie er Positioniert werden soll.
     
  2. 3. November 2012
    AW: Bewertungssystem wie reddit

    Wenn du ein schon bestehendes System hast, kann man das evtl. ablesen. So etwas aber nur nach Vermutung zu erstellen halte ich für keine gute Idee.

    Wie werden die Artikel denn eingestellt? Gibt es nicht die Möglichkeit, ihm eine "Lebensdauer" zu geben, nach Ablauf dieser wird er dann vom System in Schritten von x% weniger gewertet (bzw. Votes negative Votes vergeben, je nachdem wie es am Ende implementiert wird)
     
  3. 3. November 2012
    AW: Bewertungssystem wie reddit

    Den Sourcecode gibt es auf Github: reddit/reddit zum nachlesen

    Interessant könnte für dich diese Datei sein:
    sql/functions.sql
     
  4. 4. November 2012
    Zuletzt bearbeitet: 4. November 2012
    AW: Bewertungssystem wie reddit

    Oh danke. Ich habe mir jetzt diese "hot" function angeschaut ich glaube das ist was ich suche. Aber leider funktioniert das nicht. Zummindest weiß ich jetzt nicht mehr weiter vll kann ja einer von euch mir helfen.

    Der rote Teil ergibt immer dann Null wen Up und Downvotes identisch sind (z.b 100 up votes / 100 down votes). Somit ergibt die darauf folgende Multiplikation mit dem alter des Artikels auch null. Daher selbst wen der Beitrag 100 Jahre alt ist verliert er keinen Lesewert und bleibt immer über denen die Negativ bewertet wurden auch wen man nicht viele negative stimmen zählt.

    Das ganze habe ich aber nur über PHP testen können da ich nicht mit postgresql arbeite.

    Da ist auch noch ein weiterer Fehler in der Ausgabe das so nicht sein sollte:
    Spoiler
    Code:
    <?php
    //Testdaten
    $database = array(
     array(0, 0, 1352047440),
     array(1, 0, 1352047440),
     array(0, 1, 1352047440),
     array(1, 1, 1352047440),
     array(16, 100, 1352047440),
     array(10, 120, 1352047440),
     array(100000, 0, 1352047440)
    );
    
    //Programm start
    $sortArray = array();
    foreach($database as $index => $values) {
     $sortArray[] = @hot($values[0], $values[1], $values[2]);
    }
    var_dump($sortArray);
    rsort($sortArray);
    var_dump($sortArray);
    
    
    //Die Hot Funktion
    function hot($up, $down, $date = NULL) {
     if ($date === NULL) {
     $date = time();
     }
     
     return round(log(max(abs($up - $down), 1)) + sign($up, $down) * ($date - 1325372400) / 45000.0, 7); 
    }
    
    //sign (is_negativ) gibt es nicht in PHP
    function sign($up, $down) {
     $int = $up - $down;
     
     if($int < 0) {
     return -1;
     }
     
     if($int == 0) {
     return 0;
     }
     
     if($int > 0) {
     return 1;
     }
    }
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.