Actualmente estoy construyendo un pequeño sitio de comercio electrónico y para la página de inicio, me gustaría clasificar los productos según su popularidad. El esquema del producto tiene los siguientes datos:
{ ... noViews: Number, // Number of times a user has clicked on the product avgRating: Number, // Average star rating (1 - 5) datePosted: Date // Date the product was posted }¿Qué es un algoritmo/código (relativamente) simple que puedo usar para implementar esto (con Node.js), donde los productos se clasificarían según su popularidad (teniendo en cuenta el tiempo para que el contenido no esté obsoleto)?
Gracias.
En primer lugar, necesita una métrica basada en el tiempo para resolver esto.
Los productos de tendencia general no tienen mucho sentido, especialmente para una aplicación de comercio electrónico.
Digamos que desea encontrar los productos de moda para un día en particular (por ejemplo, hoy).
Ahora bien, este no es un problema fácil de resolver. Y no hay una sola forma directa de resolverlo. ¡Para cada empresa, un método funciona!
Idealmente, lo que podría ser una solución simple aquí sería crear un valor de puntaje basado en una combinación de factores. Por ejemplo, número de compras, número de vistas, número de clics, etc.
Aquí tienes el parámetro datePosted . Ahora, crea un date_score para esto. Entonces, la idea básica aquí es que un producto que se publicó ayer tiene más puntaje que el que se publicó hace una semana. Los valores que coloca deben modificarse y verificarse para la personalización de su algoritmo.
Del mismo modo, implemente una puntuación similar para avgRating y noViews .
Una vez que tenga estos puntajes listos, cree pesos para estos puntajes. Ahora el promedio ponderado de estos de 100 es el puntaje final.
Entonces, una solución de ejemplo final:
Fecha de publicación:
Clasificación de estrellas:
numeroDeVisitas:
Ahora, maneje el caso de la esquina de lo que sucede cuando dos puntajes coinciden.
Después de esto, simplemente puede ordenar por el parámetro de puntuación.
Además, asegúrese de que todo lo que haga sea dinámico, ya que los umbrales estáticos generalmente no brindan un gran resultado.