¿Cuál es la mejor manera de construir un índice en tiempo real que cambie con el tiempo?

Nunca he trabajado en esto per se, así que obviamente podría estar completamente fuera del objetivo, pero déjame intentar responder esto de la manera más significativa posible.

Por lo que parece, hay 2 partes en su pregunta.
1. Presentar contenido al usuario según el comportamiento del usuario (Personalización)
2. Presente el contenido al usuario en función del tiempo. (Últimos datos primero)

1. Personalización: su algoritmo es importante
Esto significa mostrarle al usuario ese contenido que es específico para él / ella en función de algún parámetro específico (opciones, relevancia de los feeds, en función de los datos, suscripciones, etc.), todo esto podría estar reproduciéndose en el sistema. Ahora, la mayoría de las veces, dependiendo de la red, estos podrían ser datos que nunca son comunes entre los usuarios y el almacenamiento en caché no ayudaría en absoluto. Siempre podría tener diferentes servicios que le brinden los canales de información para cada uno de estos parámetros y muestren los datos en la pantalla cuando el usuario actualice su página. Sin embargo, esto podría significar que funcionará bien para la mayoría de los casos de uso. Sin embargo, si habla de un sitio como Quora que es en tiempo real, esto podría significar un sistema completamente diferente donde el índice por sí solo no es para resolver el problema.

2. Datos nuevos primero: use cadenas de datos
Ahora, según los elementos que desea mostrar, es posible que deba mostrar los datos que son frescos / relevantes según el algoritmo que utiliza para filtrar los datos que son relevantes. Dar un algo estándar sin tener en cuenta la vida media del elemento hará que se muestren todo el tiempo.

La mayoría de las veces su función podría ser una suma única que puede asignar el peso a su elemento o una función matemática compleja donde un elemento como Flexviews que construye una vista materializada incremental podría funcionar. Esto podría ser incluso un sistema como Percolator o Dremel para calcular el índice o la clasificación de los elementos que se mostrarán. YMMV.

tldr;
La mayoría de las veces, el índice que usa para mostrar puede ser solo pesos asociados a él para filtrar elementos por debajo de un umbral. Si puede usar un algoritmo simple o una función que pueda asignar los criterios a un solo valor, ese podría ser su índice.

Se trata de comparar cadenas de fecha / hora. Digamos, por ejemplo, que su sitio web está ejecutando PHP y MySQL: cada elemento tendrá un campo de tiempo agregado que es una marca de tiempo de Unix por brevedad de este ejemplo. Entonces tendría un algoritmo que simplemente haría algunas comparaciones.

Cada voto en una historia también tendría una marca de tiempo que compararía con la marca de tiempo de la historia original presentada. Luego diría que en cada carga de la página o tal vez cada 10 minutos ejecute un script que verifique cuántos votos ha recibido una historia, en qué período de tiempo recibió dichos votos tal vez en la vista de la página y el recuento de comentarios y listo.

Hay muchas maneras en que puede hacerlo, ese es solo uno de los muchos enfoques que podría adoptar. Algo que me encantaría ver es un motor de sumisión que tenga en cuenta; votos, comentarios, acciones de Facebook, actividad de Twitter y visitas a la página y luego quizás va un paso más allá haciendo un análisis inteligente del lenguaje y determina si la presentación es una noticia positiva y digna de ser presentada.