2010-11-08 13 views
2

Je cherche des informations sur l'algorithme de vote qui me conviendra le mieux. J'ai un système de vote de base 'Up/Down' où un utilisateur peut seulement voter le produit vers le haut ou vers le bas. Je voudrais que ce soit pondéré pour qu'un produit qui date d'un an ne soit pas soumis aux mêmes normes qu'un produit neuf.Algorithme de vote pondéré

Je pense faire un algorithme qui prend le nombre de votes pour chaque produit au cours des 30 derniers jours. Cependant, cela crée un inconvénient. Je ne veux pas que les votes de plus de 30 jours deviennent insignifiants, mais peut-être pas aussi pondérés que les plus récents. Puis, éventuellement, les votes après 90 jours sont même moins pondérés que ceux de plus de 30 jours.

Quelqu'un est-il au courant d'un algorithme qui le fait déjà et encore plus est capable d'être calculé facilement en PHP?

Répondre

3

Google App Engine a un bon example qui traite des votes qui "se désintègrent" au fil du temps.

C'est en Python, mais cela devrait correspondre à vos besoins.

0

Je pense que, compte tenu de la simplicité de vos exigences, la meilleure chose à faire est de l'écrire vous-même. Sans en savoir plus, je pense que votre défi sera de décider si vous sauvegardez ces données dans votre base de données dans un format pré-pondéré (par exemple "quand le vote est lancé, donnez-lui $ this_year + 1 points"), que vous Calculez la pondération dans votre requête db (par exemple, en vous basant sur un score qui représente à la fois les upvotes et la date à laquelle un vote a été lancé), ou si vous renvoyez toutes les données nécessaires et en déduisez la pondération en PHP. Le choix dépend de ce que votre application doit faire exactement et combien de données il y aura.