Un Digg-como página de contenido popular de rotación, la forma de incluir la fecha como un factor?

StackOverflow https://stackoverflow.com/questions/2715941

  •  01-10-2019
  •  | 
  •  

Pregunta

Estoy construyendo una aplicación web para compartir imágenes avanzado. Como se puede esperar, los usuarios pueden subir imágenes y otros pueden comentarios sobre el mismo, el voto en ella, y favoritas. Estos eventos determinarán la popularidad de la imagen, que me captura en un campo de "karma".

Ahora quiero crear un sistema de página de inicio Digg-como, mostrando las imágenes más populares. Es fácil, pues ya tengo la puntuación ponderada Karma. Yo sólo una especie en que descender a muestro las 20 imágenes más valiosos.

La parte que falta es Tiempo . No quiero imágenes extremadamente populares que siempre estaremos en la página principal. Creo que es una solución fácil para restringir el conjunto de resultados de las últimas 24 horas. Sin embargo, también estoy pensando que con el fin de mantener la imagen de rotación aparecen durante todo el día, el tiempo puede ser algún tipo de variable en que su desplazamiento tiene una influencia en la imagen de la clasificación.

Las preguntas específicas:

  • ¿Recomendaría el escenario fácil (sólo una especie de mejores imágenes dentro de las 24 horas) o la más sofisticada (fecha y hora utilizar desplazamiento como parte de la clasificación)? Si se avisa a éste, toda la ayuda en la solución matemática para esto?
  • ¿Sería mejor para ejecutar un servicio programado de imágenes de marcas de la página principal, o podría aconsejarle una consulta directa (estoy usando MySQL)
  • Como nota adicional, la página debe apoyar la paginación y en un tranquilo día debe incluir entradas de días antes con el fin de asegurarse de que siempre está "llena"

No estoy pidiendo a la comunidad para construir este algoritmo, sólo en busca de algunos consejos:)

¿Fue útil?

Solución

Me gustaría ir con una función que disminuye el "karma eficaz" de cada artículo después de una determinada cantidad de tiempo que transcurre. Esto es un poco como método de Eric.

determinar la frecuencia con que desea que el "karma eficaz" para ser disminuido. Luego se multiplica el karma por un factor de escala basado en este periodo.

effective karma = karma * (1 - percentage_decrease)

donde percentage_decrease se determina por yourfunction. Por ejemplo, se podría hacer

percentage_decrease = min(1, number_of_hours_since_posting / 24)

para que sea por lo que el karma efectiva de cada elemento disminuye a 0 más de 24 horas. A continuación, utilice el karma eficaz para determinar qué imágenes para mostrar. Esto es un poco más de una solución estable que simplemente restando el tiempo transcurrido desde la publicación, a medida que aumenta el karma entre 0 y su valor real. El mínimo es mantener la escala de 0 a una cota inferior, ya que una vez pasa un día, usted comienza a recibir valores mayores que 1.

Sin embargo, esto no toma en cuenta la popularidad en el sentido estricto. La respuesta de Tim da algunas ideas en cómo tomar estricta de popularidad (es decir, páginas vistas) en cuenta.

Otros consejos

En su primera pregunta, me gustaría ir con el método un poco más complicado. Usted tendrá que algunos "favoritos de siempre" en la mezcla. Pero no se vaya por un tiempo a solas, ir por el número de reales vista La imagen tiene. Tenga en cuenta que no todo el mundo va a login y voto, pero eso no hace que la imagen sea menos popular. Una imagen que es de dos años de edad con 10 votos y 100k puntos de vista es obviamente más importante para las personas que una imagen que es de 1 año de edad con 100 votos y 1k vistas.

En su segunda pregunta, sí, usted quiere algún tipo de almacenamiento en caché pasando en su portada. Esa es una gran cantidad de consultas para producir el punto de entrada en su sitio. Sin embargo, al igual que es así, su tipo de sitio tenderá a atraer tráfico a páginas interiores a través de motores de búsqueda .. así tratar de reloj / optimizar sus consultas en todas partes.

En su tercera pregunta, pasando por factores distintos de tiempo (es decir, # de puntos de vista) ayuda a asegurarse de que siempre tiene una página completa y dinámica. No estoy seguro acerca de la paginación en la primera página, lo que lleva a la gente a las etiquetas o búsquedas podría ser una mejor estrategia.

Sólo podía calcular un campo "Karma ajustado" tipo que se tome el tiempo en cuenta:

adjusted karma = karma - number of hours/days since posted

A continuación, podría calcular y ordenar por que directamente en la consulta, o se puede hacer que sea un campo real en la base de datos que actualice a través de un proceso nocturno o algo así. Personalmente me gustaría ir con un proceso nocturno que lo actualiza desde que es probable que sea más fácil hacer el algoritmo un poco más sofisticado en el futuro.

Esto, lo he encontrado, la Lower bound of Wilson score confidence interval for a Bernoulli parameter

Mira esto: http: // www. derivante.com/2009/09/01/php-content-rating-confidence/

En el segundo ejemplo se explica cómo usar el tiempo como un "factor de frescura".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top