Descubre conversaciones populares en tu comunidad con la clasificación por tema candente

Mantenerse al día con el contenido en comunidades activas puede ser un desafío. Aparte de leer todo lo que se crea en tu comunidad, ¿cómo puedes estar seguro de que estás leyendo lo que más resuena con tus miembros?

Presentamos Hot, la opción de clasificación de temas más reciente que te ayuda a descubrir lo que es tendencia actualmente en tu comunidad basándose en “me gusta” recientes y discusiones animadas. Piénsalo como el confiable filtro Latest, pero un poco más inteligente: Hot te ayuda a descubrir contenido que es reciente y resuena con los miembros de tu comunidad.

¿Cómo funciona la clasificación Hot?

El algoritmo de clasificación Hot combina la popularidad general (basada en “me gusta”, reacciones o comentarios) de un tema desde que se creó por primera vez y su popularidad reciente basada en cómo los miembros interactúan con el tema. Esto significa que Hot mostrará temas más nuevos y activamente discutidos junto con temas más antiguos y populares. La clasificación Hot es ideal para miembros de comunidades grandes y activas que desean encontrar conversaciones que son tendencia actualmente y en las que podrían querer participar.

¿En qué se diferencia de Top?

A diferencia de la clasificación Hot, que considera una combinación de popularidad general y popularidad reciente, la clasificación Top solo considera la popularidad general para el período de tiempo seleccionado (por ejemplo, semana, mes, etc.). Top es más útil cuando has estado ausente de la comunidad durante un período de tiempo prolongado y deseas ponerte al día con lo que sucedió.

¿Cómo activo la clasificación Hot en mi comunidad?

Si deseas usar la clasificación Hot en tu comunidad, ve a Admin > Settings y filtra por “top menu”. Luego puedes seleccionar hot en el menú desplegable para agregarlo a las opciones de navegación del menú superior.

¿Puedo hacer de Hot mi página de inicio predeterminada?

¡Sí! Como administrador, puedes establecer Hot como la opción de clasificación predeterminada en tu comunidad, como lo hemos hecho aquí en Meta. Para configurar esto, ve a la configuración del top menu (Admin > Settings > Basic Setup, como se muestra en la sección anterior) y usa las flechas para mover hot a la parte superior de la lista de opciones de clasificación.

Como usuario final, puedes cambiar tu página de inicio predeterminada preferida yendo a Preferences > Interface y actualizando la configuración Default Home Page a tu opción preferida.

28 Me gusta

¿Un aumento repentino, significativo y reciente en las visualizaciones de un tema antiguo también haría que se priorizara a través de esta nueva opción de clasificación? :slight_smile:

8 Me gusta

Ciertamente preferiría que se incluyeran las vistas, si es posible. En mi foro, solo recibimos alrededor de 100 “me gusta” a la semana, pero 2000 visitas de página de usuarios registrados y 7000 visitas de página de anónimos. (Ilustrativo de un foro pequeño).

8 Me gusta

Gracias por la actualización, @lindsey y compañía.

Lo hemos activado y experimentaremos.

Por cierto, ¿tarda un tiempo en “activarse”? Por el momento no hay “temas candentes”.

Con todo respeto, nuestra comunidad activa tiene un montón de temas candentes en marcha en este momento. :slight_smile:

5 Me gusta

+1 “No hay temas candentes” en mi foro, que ciertamente tiene temas candentes.

6 Me gusta

Necesidad de actualizar Discourse a la última versión

2 Me gusta

@simon_tomes @dfabulich ahora deberían ver los temas más populares en sus respectivos sitios. Inicialmente, la función estaba oculta tras una bandera, la cual fue eliminada la semana pasada, por lo que su instancia necesitaba una actualización.

10 Me gusta

Ya está funcionando, gracias.

4 Me gusta

Veo temas candentes. Gracias, @pmusaraj.

3 Me gusta

Hmm, ¿recomendaría no seleccionar esta como la vista predeterminada, al menos hasta que haya algún tipo de anuncio o preparación? En algunos foros, la gente querrá ver qué hay de nuevo. Por ejemplo, podrían querer ver nuevas consultas o nuevas llegadas. La nueva vista “hot” es útil para el entretenimiento o para seguir la popularidad, pero inmediatamente causa un problema al mostrar contenido nuevo.

6 Me gusta

Solo es predeterminado aquí en meta, estamos recopilando comentarios sobre cómo se siente cuando es predeterminado. No estamos seguros de si este será un valor predeterminado a largo plazo para meta o no.

No tenemos planes concretos sobre cuándo y si modificaremos el producto para que sea el valor predeterminado para “hot”.

12 Me gusta

La gente puede ser bastante ciega y no mirar cosas familiares donde no se esperan cambios. Bueno, yo lo soy de todos modos.

Significa que me preguntaba qué estaba mal aquí porque estaba totalmente seguro de que /latest estaba roto de alguna manera y no obtuve lo que debería.

Me molestó, pero no lo suficiente en ese momento.

No, no vi y me di cuenta de que mi punto de partida/página de inicio había cambiado a /hot. Ahora lo he arreglado para mí, no es gran cosa, pero mi punto débil es que en las discusiones del foro e incluso en los anuncios están las cosas cuando algo cambia :smirking_face: Y tocar y alterar mi configuración personal, incluso cuando se trata de los valores predeterminados del foro, es algo así.

De vuelta al negocio.

No estoy totalmente seguro de /hot, quién y por qué se usaría. Claro, es otra opción y no rompe nada en absoluto, pero como lo veo aquí, está bastante cerca de /latest pero sin… lo último.

Vamos a intentarlo. Y… incluso si no lo considero útil, alguien más lo ve de manera diferente y esos dos no entran en conflicto entre sí.

Pero me pregunto… ¿sería /hot una solución que funcione para mostrar a visitantes aleatorios? Pero, ¿rompería entonces Google o estaría totalmente contento con el sitemap?

1 me gusta

Solo una idea al respecto: la cobertura de un foro de Discourse en la Wayback Machine de Internet Archive ya es un poco irregular. Sospecho que hacer que /hot sea el valor predeterminado para ese agente o caso de uso podría empeorar las cosas. O posiblemente mejorar, por supuesto, se necesitaría algo de reflexión.

1 me gusta

De acuerdo: esto ya me ha afectado tres veces en el último día.

Para evitar una publicación del tipo “yo también”, aprovecharé la oportunidad para señalar el hecho de que la página de inicio predeterminada se puede anular en sus preferencias personales, algo que acabo de hacer para evitar que me afecte por cuarta vez. https://meta.discourse.org/my/preferences/interface

8 Me gusta

Veo que alguien ha informado y vuelto a informar de un problema con trabajos excesivos de sidekiq, sin más respuesta que la mía, y ese hilo está en la posición 100 del ordenamiento “Hot” predeterminado actual. No es ideal para un foro de soporte, sugeriría.

2 Me gusta

Podría valer la pena comprobar cómo funciona la puntuación en ese hilo, que tiene 3 días pero ha recibido dos respuestas recientes y algunos “me gusta”. ¿Debería seguir estando tan abajo en la clasificación?

Creo que “hot” puede servir como una excelente configuración predeterminada, proporcionando una instantánea de los temas clave, lo cual es beneficioso para los visitantes primerizos o usuarios ocasionales. Esto también puede funcionar para foros de soporte, ya que para esos usuarios, un anuncio puede ser más importante que la pregunta de soporte de un solo usuario.

Para aquellos que desean mantenerse completamente informados y no perderse ningún tema, la opción de usar ‘latest’ todavía está disponible. Incluso pueden cambiar su página de inicio personal a ‘latest’. Además, utilizar la configuración de ‘new’, ‘unread’ y seguimiento puede ayudar a garantizar que los usuarios se mantengan actualizados sobre los temas de interés.

.

3 Me gusta

Esta para mí es una crítica un tanto injusta, es un tema difícil. Hay muchos temas de #soporte que no reciben “suficientes” miradas, sea cual sea la definición de suficiente.

Esto es un experimento, que a ti no te guste “hot” como opción predeterminada para meta es un punto de datos. Recopilaremos más.

En cuanto al algoritmo:

Podemos ajustar la gravedad, para que no “bajemos” los temas tan rápido como lo hacemos ahora. También puedo intentar pensar en alguna forma de dar un pequeño impulso a las cosas basándome en la “última respuesta”.

En este momento, el algoritmo está aquí:

AI Bot explicando hot AI

sam:

DB.exec(<<~SQL, args)
      INSERT INTO topic_hot_scores (
        topic_id,
        score,
        recent_likes,
        recent_posters,
        created_at,
        updated_at
      )
      SELECT
        topics.id,
        0.0,
        0,
        0,
        :now,
        :now

      FROM topics
      LEFT OUTER JOIN topic_hot_scores ON topic_hot_scores.topic_id = topics.id
      WHERE topic_hot_scores.topic_id IS NULL
        AND topics.deleted_at IS NULL
        AND topics.archetype <> :private_message
        AND topics.created_at <= :now
      ORDER BY
        CASE WHEN topics.pinned_at IS NOT NULL THEN 0 ELSE 1 END ASC,
        topics.bumped_at desc
      LIMIT :max
    SQL

    # update recent counts for batch
    DB.exec(<<~SQL, args)
      UPDATE topic_hot_scores thsOrig
      SET
          recent_likes = COALESCE(new_values.likes_count, 0),
          recent_posters = COALESCE(new_values.unique_participants, 0),
          recent_first_bumped_at = COALESCE(new_values.first_bumped_at, ths.recent_first_bumped_at)
      FROM
        topic_hot_scores ths
        LEFT OUTER JOIN
        (
          SELECT
              t.id AS topic_id,
              COUNT(DISTINCT p.user_id) AS unique_participants,
              (
                SELECT COUNT(distinct pa.user_id)
                FROM post_actions pa
                JOIN posts p2 ON p2.id = pa.post_id
                WHERE p2.topic_id = t.id
                  AND p2.post_type = :regular
                  AND p2.deleted_at IS NULL
                  AND p2.user_deleted = false
                  AND pa.post_action_type_id = 2 -- action_type for 'like'
                  AND pa.created_at >= :recent_cutoff
                  AND pa.deleted_at IS NULL
              ) AS likes_count,
              MIN(p.created_at) AS first_bumped_at
          FROM
              topics t
          JOIN
              posts p ON t.id = p.topic_id
          WHERE
              p.created_at >= :recent_cutoff
              AND t.archetype <> 'private_message'
              AND t.deleted_at IS NULL
              AND p.deleted_at IS NULL
              AND p.user_deleted = false
              AND t.created_at <= :now
              AND t.bumped_at >= :recent_cutoff
              AND p.created_at < :now
              AND p.created_at >= :recent_cutoff
              AND p.post_type = :regular
          GROUP BY
              t.id
        ) AS new_values
      ON ths.topic_id = new_values.topic_id

      WHERE thsOrig.topic_id = ths.topic_id
    SQL

    # we may end up update 2x batch size, this is ok
    # we need to update 1 batch of high scoring topics
    # we need to update a second batch of recently bumped topics
    sql = <<~SQL
      WITH topic_ids AS (
        SELECT topic_id FROM (
          SELECT th3.topic_id FROM topic_hot_scores th3
          JOIN topics t3 on t3.id = th3.topic_id
          ORDER BY t3.bumped_at DESC
          LIMIT :max
        ) Y

        UNION ALL

        SELECT topic_id FROM (
          SELECT th2.topic_id FROM topic_hot_scores th2
          ORDER BY th2.score DESC, th2.recent_first_bumped_at DESC NULLS LAST
          LIMIT :max
        ) X
      )
      UPDATE topic_hot_scores ths
      SET score = (
        CASE WHEN topics.created_at > :recent_cutoff
          THEN ths.recent_likes ELSE topics.like_count END
        ) /
        (EXTRACT(EPOCH FROM (:now - topics.created_at)) / 3600 + 2) ^ :gravity
 +
        CASE WHEN ths.recent_first_bumped_at IS NULL THEN 0 ELSE
          (ths.recent_likes + ths.recent_posters - 1) /
          (EXTRACT(EPOCH FROM (:now - recent_first_bumped_at)) / 3600 + 2) ^ :gravity
        END
        ,
        updated_at = :now

      FROM topics
      WHERE topics.id IN (
        SELECT topic_id FROM topic_ids
      ) AND ths.topic_id = topics.id
    SQL

    DB.exec(sql, args)

Explica el algoritmo de puntuación “hot” con cuidado, precisión y claridad.

gpt4_bot:
El algoritmo de puntuación “hot” implementado en el script SQL proporcionado está diseñado para clasificar los temas según su “hotness” (popularidad), una métrica que indica cuán atractivo o popular es un tema en un momento dado. Esto se logra considerando factores como el número de “me gusta” recientes y el número de participantes recientes únicos, junto con el momento de la creación y las actualizaciones del tema. Aquí hay un desglose del proceso:

Inserción Inicial

  • Primera Parte: Comienza insertando nuevos registros en la tabla topic_hot_scores para los temas que aún no tienen un registro. Esto se hace seleccionando temas que no han sido eliminados, no son mensajes privados y se crearon hasta la marca de tiempo actual (:now). Las puntuaciones iniciales se establecen en cero, sin “me gusta” ni participantes recientes.
  • Condición de Filtro: Se centra en temas que no están fijados (o tienen menos énfasis en los temas fijados) y los ordena por su actividad más reciente (bumped_at en orden descendente).

Actualización de Recuentos Recientes

  • Segunda Parte: Luego, actualiza la tabla topic_hot_scores con datos de actividad reciente. Esto incluye:
    • Conteo de participantes únicos en el tema desde una fecha límite (:recent_cutoff).
    • Conteo de “me gusta” en las publicaciones del tema desde el :recent_cutoff.
    • La marca de tiempo de la publicación más temprana considerada “reciente” para cada tema.
  • Esta parte del proceso tiene como objetivo reflejar las métricas de participación más recientes para cada tema, capturando cualquier “me gusta”, participante o actividad nueva que haya ocurrido después del punto :recent_cutoff.

Recalculación Basada en la Popularidad

  • Tercera Parte: Finalmente, los temas se recalifican según sus métricas actualizadas. Los temas se filtran primero para obtener un conjunto que incluye:
    • Un lote de temas con la actividad más reciente (para asegurar que el contenido nuevo sea considerado).
    • Otro lote basado en las puntuaciones existentes más altas (para mantener a la vista los temas muy atractivos).
  • Cálculo de la Puntuación “Hot”: La puntuación de popularidad se recalcula utilizando la siguiente fórmula:
    1. Para temas creados después del :recent_cutoff, la puntuación se basa en recent_likes (me gusta recientes).
    2. De lo contrario, se basa en el like_count (conteo de me gusta) total desde el inicio del tema.
    • Este valor se divide por el tiempo transcurrido desde la creación (en horas) más dos, elevado a la potencia de :gravity—un parámetro que controla la rapidez con la que los temas se desvanecen con el tiempo.

Además, si hay actividad reciente registrada (recent_first_bumped_at no es nulo), se agrega un componente secundario a la puntuación. Este componente es la suma de los “me gusta” recientes y los participantes (menos uno, para evitar el doble conteo) dividido por el tiempo transcurrido desde recent_first_bumped_at (nuevamente en horas) más dos, también elevado a la potencia de :gravity.

  • La puntuación actualizada se almacena con la marca de tiempo actual como updated_at.

Conclusión: La esencia de este algoritmo es priorizar los temas que no solo tienen una participación activa (con “me gusta” y participantes), sino que también son relativamente nuevos. El uso de un factor de decaimiento (:gravity) asegura que la importancia de estas interacciones disminuya con el tiempo, permitiendo que los temas más nuevos o con actividad más reciente ganen prominencia. La combinación de considerar tanto la actividad total como la reciente permite al algoritmo equilibrar entre temas populares a largo plazo y discusiones frescas y atractivas.

9 Me gusta

(Me gusta lo bien que se está utilizando la IA aquí para la descripción de SQL. Es un gran caso de uso. :smile:)

8 Me gusta

Lo siento, no pretendía herir los sentimientos de nadie. Estoy seguro de que la dirección estará contenta de ver completada una nueva función, y los implementadores estarán contentos de haberla lanzado.

Espero que haya espacio para la crítica constructiva.

Según entiendo, el ejemplo motivador es un feed de redes sociales. No relacionado, quizás, uno podría mirar la página principal de Hacker News. El ideal allí es que los temas nuevos tengan cierta visibilidad, y que los temas activos y populares tengan cierta visibilidad. Ambos deberían desvanecerse. HN parece hacerlo bien.

Pero mi observación es que un foro de soporte es algo diferente, en comparación con un escaparate o un feed de redes sociales.

Arriba verás una idea de que quizás “Hot” sea bueno para visitantes nuevos y no comprometidos, o para resultados de búsqueda. Puedo ver el mérito de esa idea.

Pero mantendría que meta es en su mayoría un foro de soporte.

Por supuesto.

Estoy de acuerdo con eso, por supuesto, pero no creo que “Hot” lo aborde. Los temas fijados hacen un trabajo bastante bueno.

3 Me gusta