Découvrez les conversations populaires dans votre communauté avec le tri par sujet chaud

Rester au fait du contenu des communautés actives peut être difficile. En dehors de la lecture de tout ce qui est créé dans votre communauté, comment pouvez-vous être sûr de lire ce qui résonne le plus auprès de vos membres ?

Nous vous présentons Hot, la nouvelle option de tri par sujet qui vous aide à découvrir ce qui est actuellement tendance dans votre communauté, en fonction des likes récents et des discussions animées. Considérez-la comme le filtre fiable Latest, mais un peu plus intelligent : Hot vous aide à découvrir du contenu récent et pertinent pour les membres de votre communauté.

Comment fonctionne le tri par Hot ?

L’algorithme de tri Hot combine la popularité globale (basée sur les likes, les réactions ou les commentaires) d’un sujet depuis sa création et sa popularité récente, en fonction de la manière dont les membres interagissent avec le sujet. Cela signifie que Hot mettra en avant les sujets plus récents et activement discutés aux côtés des sujets plus anciens et populaires. Le tri par Hot est idéal pour les membres de grandes communautés actives qui souhaitent trouver des conversations actuellement tendance auxquelles ils pourraient vouloir participer.

Quelle est la différence avec Top ?

Contrairement au tri par Hot, qui examine une combinaison de popularité globale et de popularité récente, le tri par Top examine uniquement la popularité globale pour la période sélectionnée (par exemple, semaine, mois, etc.). Top est le plus utile lorsque vous avez été absent de la communauté pendant une période prolongée et que vous souhaitez rattraper ce qui s’est passé.

Comment activer le tri par Hot dans ma communauté ?

Si vous souhaitez utiliser le tri par Hot dans votre communauté, rendez-vous dans Admin > Settings et recherchez “top menu”. Vous pouvez ensuite sélectionner hot dans le menu déroulant pour l’ajouter aux options de navigation du menu supérieur.

Puis-je faire de Hot ma page d’accueil par défaut ?

Oui ! En tant qu’administrateur, vous pouvez définir Hot comme option de tri par défaut dans votre communauté, comme nous l’avons fait ici sur Meta. Pour configurer cela, accédez au paramètre top menu (Admin > Settings > Basic Setup, comme montré dans la section ci-dessus) et utilisez les flèches pour déplacer hot en haut de la liste des options de tri.

En tant qu’utilisateur final, vous pouvez modifier votre page d’accueil par défaut préférée en allant dans Preferences > Interface et en mettant à jour le paramètre Default Home Page à votre option préférée.

28 « J'aime »

Une augmentation soudaine, significative et récente du nombre de vues d’un ancien sujet entraînerait-elle également sa priorisation via cette nouvelle option de tri ? :slight_smile:

8 « J'aime »

Je préférerais certainement que les vues soient incluses, si possible. Sur mon forum, nous n’obtenons qu’environ 100 likes par semaine, mais 2000 pages vues par utilisateur connecté et 7000 pages vues par utilisateur anonyme. (Illustratif d’un forum de taille moyenne.)

8 « J'aime »

Merci pour la mise à jour, @lindsey et cie.

Nous l’avons activée et allons expérimenter.

Par curiosité, faut-il un certain temps pour qu’elle « fasse effet » ? Pour le moment, il n’y a « pas de sujets brûlants ».

Avec tout le respect que je vous dois, notre communauté active a plein de sujets brûlants en cours en ce moment. :slight_smile:

5 « J'aime »

+1 « Il n’y a pas de sujets brûlants » sur mon forum qui a certainement des sujets brûlants.

6 « J'aime »

Mettre à niveau discourse vers la dernière version

2 « J'aime »

@simon_tomes @dfabulich vous devriez voir les sujets tendance sur vos sites respectifs maintenant, nous avions initialement la fonctionnalité derrière un drapeau caché, elle a été supprimée la semaine dernière, et par conséquent votre instance a eu besoin d’une mise à jour.

10 « J'aime »

Ça fonctionne maintenant, merci.

4 « J'aime »

Je vois des sujets tendance. Merci, @pmusaraj.

3 « J'aime »

Hmm, puis-je vous recommander de ne pas sélectionner cette vue par défaut, du moins pas avant une annonce ou une préparation ? Dans certains forums, les gens voudront voir les nouveautés. Ils pourraient par exemple vouloir voir de nouvelles requêtes ou de nouvelles arrivées. La nouvelle vue “hot” est utile pour le divertissement ou pour suivre la popularité, mais elle pose immédiatement un problème de mise en avant du nouveau contenu.

6 « J'aime »

Elle n’est par défaut qu’ici sur meta, nous recueillons des commentaires sur la façon dont cela se présente lorsqu’elle est par défaut. Nous ne sommes pas sûrs qu’il s’agisse d’une valeur par défaut à long terme pour meta ou non.

Nous n’avons pas de projets concrets sur quand et si nous modifierons le produit pour qu’il soit par défaut sur “hot”.

12 « J'aime »

Les gens peuvent être assez aveugles et ne pas regarder les choses familières où des changements ne sont pas attendus. Enfin, moi, en tout cas.

Ce qui signifie que je me demandais ce qui n’allait pas ici parce que j’étais absolument sûr que /latest était en quelque sorte cassé et que je n’obtenais pas ce que je devrais.

Cela m’a dérangé, mais pas assez pour le moment.

Non, je n’ai pas vu et réalisé que mon point de départ/page d’accueil avait été changé en /hot. Maintenant, je l’ai corrigé pour moi, ce n’est pas grave du tout, mais mon point faible est que dans les discussions de forum et même les annonces, ce sont les choses quand quelque chose est changé :smirking_face: Et toucher et modifier mes paramètres personnels même si c’est une question de paramètres par défaut du forum est une telle chose.

De retour en affaires.

Je ne suis pas totalement sûr de /hot, qui et pourquoi il serait utilisé. Bien sûr, c’est une autre option et cela ne casse rien du tout, mais tel que je le vois ici, c’est assez proche de /latest mais sans… le dernier.

Essayons. Et… même si je ne le trouve pas utile, quelqu’un d’autre le voit différemment et ces deux-là ne se contredisent pas.

Mais je me demande… est-ce que /hot pourrait être une solution fonctionnelle à montrer aux visiteurs aléatoires ? Mais cela casserait-il alors Google ou est-il totalement satisfait du sitemap ?

1 « J'aime »

Juste une réflexion à ce sujet : la couverture d’un forum Discourse dans la Wayback Machine de l’Internet Archive est déjà un peu inégale. Je soupçonne que faire de /hot le paramètre par défaut pour cet agent ou ce cas d’utilisation pourrait aggraver les choses. Ou éventuellement améliorer les choses, bien sûr - il faudrait y réfléchir.

1 « J'aime »

D’accord - cela m’est déjà arrivé trois fois au cours de la journée.

Afin d’éviter un message du genre “moi aussi”, je vais profiter de l’occasion pour souligner le fait que la page d’accueil par défaut peut être remplacée dans vos préférences personnelles, ce que je viens de faire pour éviter de me faire avoir une quatrième fois. https://meta.discourse.org/my/preferences/interface

8 « J'aime »

Je vois que quelqu’un a signalé et re-signalé un problème avec des tâches sidekiq excessives, sans autre réponse que la mienne, et que ce fil de discussion est environ à la 100e position dans le classement actuel par défaut des “Hot”. Pas idéal pour un forum de support, je suggérerais.

2 « J'aime »

Il pourrait être utile de vérifier le fonctionnement du classement pour ce fil de discussion, qui date de 3 jours mais a reçu deux réponses récentes et quelques “likes”. Devrait-il toujours être classé si bas ?

Je pense que « chaud » peut servir d’excellente configuration par défaut, fournissant un aperçu des sujets clés, ce qui est bénéfique pour les visiteurs novices ou les utilisateurs occasionnels. Cela peut également fonctionner pour les forums de support, car pour ces utilisateurs, une annonce peut être plus importante que la question de support d’un utilisateur unique.

Pour ceux qui souhaitent rester pleinement informés et ne manquer aucun sujet, l’option d’utiliser « le plus récent » est toujours disponible. Ils peuvent même basculer leur page d’accueil personnelle sur « le plus récent ». De plus, l’utilisation des paramètres « nouveau », « non lu » et de suivi peut aider à garantir que les utilisateurs restent informés des sujets d’intérêt.

.

3 « J'aime »

Cette critique me semble un peu injuste, c’est un sujet difficile. De nombreux sujets de Support ne reçoivent pas « assez » d’attention, quelle que soit la définition de « assez ».

Ceci est une expérience, votre aversion pour le classement par défaut des sujets « hot » pour le méta est un point de données. Nous en collecterons d’autres.

Quant à l’algorithme :

Nous pouvons ajuster la gravité, de sorte que nous ne « tirions pas vers le bas » les sujets aussi rapidement que nous le faisons actuellement. Je peux aussi essayer de trouver un moyen de donner un petit coup de pouce aux sujets en fonction de la « dernière réponse ».

Pour le moment, l’algorithme est ici :

L'IA explique le classement « hot » IA

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)

Expliquez l’algorithme de classement « hot » avec soin, précision et clarté.

gpt4_bot :

L’algorithme de classement « hot » implémenté dans le script SQL fourni est conçu pour classer les sujets en fonction de leur « hotness », une métrique qui indique à quel point un sujet est engageant ou populaire à un moment donné. Ceci est réalisé en tenant compte de facteurs tels que le nombre de « likes » récents et le nombre de participants récents uniques, ainsi que le moment de la création et des mises à jour du sujet. Voici une ventilation du processus :

Insertion initiale

  • Première partie : Elle commence par insérer de nouveaux enregistrements dans la table topic_hot_scores pour les sujets qui n’ont pas encore d’enregistrement. Ceci est fait en sélectionnant les sujets qui n’ont pas été supprimés, qui ne sont pas des messages privés et qui ont été créés jusqu’au timestamp actuel (:now). Les scores initiaux sont fixés à zéro, sans « likes » ni participants récents.
  • Condition de filtrage : Elle se concentre sur les sujets qui sont soit non épinglés (ou moins mis en avant sur les sujets épinglés) et les classe par leur dernière activité (bumped_at en ordre décroissant).

Mise à jour des décomptes récents

  • Deuxième partie : Ensuite, elle met à jour la table topic_hot_scores avec les données d’activité récentes. Cela inclut :
    • Le nombre de participants uniques au sujet depuis une date limite (:recent_cutoff).
    • Le nombre de « likes » sur les publications du sujet depuis le :recent_cutoff.
    • Le timestamp de la publication la plus ancienne considérée comme « récente » pour chaque sujet.
  • Cette partie du processus vise à refléter les métriques d’engagement les plus récentes pour chaque sujet, en capturant les nouveaux « likes », participants ou activités qui se sont produits après le point :recent_cutoff.

Recalcul du score basé sur la « hotness »

  • Troisième partie : Enfin, les sujets sont reclassés en fonction de leurs métriques mises à jour. Les sujets sont d’abord filtrés pour un ensemble qui comprend :
    • Un lot de sujets les plus récemment mis à jour (pour s’assurer que le contenu récent est pris en compte).
    • Un autre lot basé sur les scores existants les plus élevés (pour maintenir les sujets très engageants visibles).
  • Calcul du score « hot » : Le score de « hotness » est recalculé en utilisant la formule suivante :
    1. Pour les sujets créés après le :recent_cutoff, le score est basé sur recent_likes.
    2. Sinon, il est basé sur le like_count total depuis le début du sujet.
    • Cette valeur est divisée par le temps écoulé depuis la création (en heures) plus deux, élevée à la puissance de :gravity — un paramètre qui contrôle la rapidité avec laquelle les sujets s’estompent avec le temps.

De plus, s’il y a une activité récente enregistrée (recent_first_bumped_at n’est pas nul), une composante secondaire est ajoutée au score. Cette composante est la somme des « likes » et des participants récents (moins un, pour éviter le double comptage) divisée par le temps écoulé depuis recent_first_bumped_at (également en heures) plus deux, également élevée à la puissance de :gravity.

  • Le score mis à jour est stocké avec le timestamp actuel comme updated_at.

Conclusion : L’essence de cet algorithme est de prioriser les sujets qui sont non seulement activement engagés (avec des « likes » et des participants) mais aussi relativement nouveaux. L’utilisation d’un facteur de déclin (:gravity) garantit que l’importance de ces interactions diminue avec le temps, permettant aux sujets plus récents ou plus récemment actifs de gagner en importance. Le mélange de la prise en compte de l’activité totale et récente permet à l’algorithme de trouver un équilibre entre les sujets populaires à long terme et les discussions fraîches et engageantes.

9 « J'aime »

(J’aime la façon dont l’IA est bien utilisée ici pour la description SQL. C’est un excellent cas d’utilisation. :smile:)

8 « J'aime »

Désolé – je n’avais pas l’intention de blesser qui que ce soit. Je suis sûr que la direction est heureuse de voir une nouvelle fonctionnalité terminée, et les développeurs sont heureux de l’avoir publiée.

J’espère sincèrement qu’il y a de la place pour une critique constructive.

Si je comprends bien, l’exemple motivant est un fil d’actualités sur les réseaux sociaux. Sans rapport, peut-être, on pourrait regarder la page d’accueil de Hacker News. L’idéal là-bas est que les nouveaux sujets aient une certaine visibilité, et que les sujets actifs et populaires aient une certaine visibilité. Les deux devraient s’estomper. HN semble bien y parvenir.

Mais mon observation est qu’un forum de support est différent d’une vitrine ou d’un fil d’actualités sur les réseaux sociaux.

Plus haut, vous verrez une idée selon laquelle peut-être que le mode « Hot » est bon pour les nouveaux visiteurs indécis, ou pour les résultats de recherche. Je peux voir le bien-fondé de cette idée.

Mais je maintiens que Meta est principalement un forum de support.

Bien sûr.

Je suis d’accord avec cela, bien sûr, mais je ne pense pas que le mode « Hot » y réponde. Les sujets épinglés font un assez bon travail.

3 « J'aime »