Les résultats de recherche doivent privilégier le premier message du sujet lorsque le titre correspond au terme de recherche

Récemment, j’ai remarqué que lorsque je recherche un sujet spécifique, les résultats de recherche m’envoient vers un message situé au milieu du sujet plutôt que vers le premier message. Cela se produit lorsqu’un message dans le sujet contient le même terme de recherche que celui inclus dans le titre du sujet. Voici deux exemples récents provenant de http://community.wanikani.com :

La recherche de « Self Study Quiz » ou « Self-Study Quiz » m’envoie vers [Userscript] Self-Study Quiz - #731 by prouleau - API And Third-Party Apps - WaniKani Community au lieu du premier message.

La recherche de « ご注文はうさぎですか » m’envoie vers ご注文はうさぎですか miscellaneous discussion - #93 by seanblue - Book Clubs - WaniKani Community au lieu du premier message.

J’ai placé cela dans #feature car je ne suis pas certain à 100 % que cela ait déjà fonctionné comme je le décris. Cependant, je recherche le deuxième terme ci-dessus plusieurs fois par an, et je suis assez sûr que les résultats de recherche renvoyaient auparavant le premier message du sujet. Si cela a été modifié involontairement à un moment donné, vous pourriez considérer cela comme un bug.

Je sais qu’il existe une option de recherche avancée pour ne rechercher que les titres des sujets, mais cela semble inutile dans ce cas. Étant donné que le terme de recherche correspond à de nombreux messages dans le sujet ainsi qu’au titre lui-même, je pense qu’il devrait automatiquement donner la priorité à la correspondance du titre et renvoyer le premier message.

6 « J'aime »

Voici le résultat des récents changements apportés à la recherche par @tgxworld et @sam. Ils pourraient peut-être répondre.

4 « J'aime »

Oui, nous avons eu une longue discussion à ce sujet. Dans l’ensemble, je préfère que la recherche soit très basique et qu’elle privilégie toujours le premier résultat dans le sujet, indépendamment du classement. Cela rend l’explication beaucoup plus simple pour les gens ; le classement semble très arbitraire et magique.

7 « J'aime »

Je comprends la demande dans le sujet original de permettre à la recherche de faire référence au sujet lui-même (c’est-à-dire le premier message) si le titre du sujet correspond aux critères de recherche. Sinon, faire référence au message concret où la correspondance se produit.

3 « J'aime »

Le problème est que nous pouvons avoir 15 correspondances dans un sujet, dont une seule parmi les 15 a le « rang » le plus élevé.

4 « J'aime »

Franchement, tant que le premier message (via une correspondance de titre) est prioritaire par-dessus tout, je me moque du reste, mais ce que vous dites me semble raisonnable. Lorsqu’une douzaine de messages dans le sujet correspondent exactement à la phrase que vous recherchez, celui qui est effectivement renvoyé dans les résultats de recherche semble actuellement tout à fait arbitraire. Toujours renvoyer le premier message correspondant dans le sujet me semble être une bonne solution.

Cela dit, l’algorithme de recherche devrait probablement au moins continuer à privilégier les correspondances exactes pour s’assurer qu’un message antérieur qui ne correspond qu’en partie au terme de recherche n’est pas priorisé par rapport à un message ultérieur qui y correspond exactement. Je ne sais pas si cela est pertinent, car je ne connais pas très bien l’algorithme. Quoi qu’il en soit, comme je l’ai dit précédemment, je pense que tous ces détails sont bien moins importants que de privilégier la correspondance de titre par-dessus tout.

6 « J'aime »

Je continue d’être tagué par des personnes qui lient à l’un de mes messages au milieu d’un sujet alors qu’elles voulaient partager le sujet lui-même. L’approche actuelle crée assurément de la confusion.

1 « J'aime »

Oui @tgxworld et @sam, cela doit vraiment être modifié. Nous sommes bien au-delà de la règle des 3 ici. La correspondance de titre devrait avoir un poids massif de supernova et de trou noir dans le classement.

9 « J'aime »

Je ne pense pas que les choses puissent être aussi simples que de toujours privilégier le premier message d’un sujet, car modifier un scénario de recherche spécifique affectera un autre. Considérons le scénario suivant :

  1. Le sujet X et le sujet Y contiennent tous deux des messages correspondant au terme de recherche donné « discourse ».
  2. Le message numéro 1 et le message numéro 100 dans le sujet X correspondent au terme de recherche « discourse ».
  3. Le message numéro 100 est mieux classé car son contenu correspond beaucoup mieux au terme de recherche « discourse ».
  4. Le message numéro 1 du sujet Y correspond au terme de recherche « discourse ».
  5. Le message numéro 1 du sujet Y est mieux classé que le message numéro 1 du sujet X car son contenu est plus pertinent par rapport au terme de recherche « discourse ».

Avec l’approche précédente, nous utilisions le classement du message numéro 100 du sujet X pour le comparer au message numéro 1 du sujet Y. Dans ce cas, le message numéro 1 du sujet X apparaît plus haut dans les résultats de recherche que le message numéro 1 du sujet Y, même si le message numéro 1 du sujet Y correspond clairement mieux au terme de recherche que le message numéro 1 du sujet X. Cela équivaut à classer les sujets en prenant le classement le plus élevé des messages contenus dans le sujet.

Si nous nous contentions de prendre le premier message d’un sujet correspondant au terme de recherche, nous finirions par exclure des messages qui sont une meilleure correspondance mais qui ont un numéro de message plus élevé dans un sujet, ce qui soulève des questions sur la raison pour laquelle ce message n’a pas été inclus dans les résultats de recherche.

Je pense que ma principale objection ici par rapport à ce qui est proposé est que la recherche recherche par défaut des messages, donc le corps d’un message est en réalité ce que l’utilisateur recherche, et non le titre. Le titre nous aide à filtrer tous les sujets pour trouver les bons messages à rechercher.

Nous accordons en effet un poids plus élevé à la correspondance de titre. Le seul problème est que le titre fait partie des données de recherche pour tous les messages d’un sujet donné, donc tous les messages bénéficient en réalité du même poids pour les correspondances de titre.

2 « J'aime »

Je ne pense pas que quelqu’un suggère cela. Nous disons simplement de donner la priorité aux correspondances de titre, ce qui n’est pas le scénario que vous venez de décrire. Lorsque le titre correspond au terme de recherche, cela devrait spécifiquement rehausser le classement du premier message, et non de tous les messages du sujet.

Je ne suis pas d’accord avec cette évaluation. Les utilisateurs ne se soucient pas de trouver spécifiquement des messages, mais plutôt de trouver du contenu. Lorsque les sujets sont bien nommés, le titre est souvent le meilleur indicateur de ce que l’utilisateur recherche, et la plupart du temps, cela signifie commencer par le premier message.

Du moins dans la communauté que j’utilise, il existe des sujets dans certaines sous-catégories qui sont souvent recherchés dans le but de les partager lorsque d’autres utilisateurs demandent de l’aide. Obtenir un message aléatoire du sujet dans les résultats de recherche au lieu du premier message a conduit à partager les mauvais messages, ce qui a empêché les utilisateurs d’obtenir de l’aide aussi rapidement qu’ils l’auraient pu.

Que ce soit pour le partage ou pour un usage personnel, je pense aussi que vous sous-estimez à quel point les utilisateurs veulent souvent rechercher le même sujet encore et encore, et je pense que dans ces cas-là, la grande majorité du temps, les utilisateurs veulent soit le premier message, soit reprendre là où ils s’étaient arrêtés.

5 « J'aime »

Le scénario que j’ai décrit correspondait au fonctionnement de la recherche dans Discourse par le passé, et c’est un comportement incorrect.

Je pense que c’était une façon erronée de le formuler : la recherche par défaut recherche une combinaison du titre du sujet et du corps du message.

Bien que cela puisse être vrai, ce n’est pas toujours le cas, car cela suppose que le terme de recherche correspondra toujours au titre du sujet. Sur les forums de programmation, je cherche parfois un extrait de code, ce qui n’apparaîtra pas dans le titre.

Ce qui est proposé n’est pas impossible, bien que nous devions prendre certaines décisions techniques et faire des compromis. Par exemple, nous devons retirer le titre du sujet de PostSearchData pour les messages qui ne sont pas le premier. Cela garantit que les correspondances de titre du sujet classent le premier message plus haut que les autres messages du sujet, mais cela signifie toujours que nous sommes à la merci de l’algorithme de classement de Postgres.

4 « J'aime »

Voici un autre exemple pour illustrer mon cas d’usage. J’ai recherché « kanji spéciaux » sur https://community.wanikani.com dans le but de trouver ce sujet : Special kanji words derived from other words - Kanji - WaniKani Community. Je voulais consulter le tableau de données du premier message, qui est un wiki. Comme vous pouvez le voir, mon terme de recherche correspond exactement au début du titre du sujet. Cependant, le premier message ne contient pas réellement le mot « spécial », c’est pourquoi un autre message a été priorisé, simplement parce que les mots « spécial » et « kanji » apparaissaient quelque part dans ce message.

J’espère que fournir d’autres exemples comme celui-ci sera utile.

3 « J'aime »

@sam Je me demande ce que tu en penses. La recherche classe correctement car le « message quelque part »
contient les termes de recherche dans le titre et le corps, tandis que le premier message ne les contient que dans le titre. Il semble contre-intuitif de vouloir afficher le premier message alors qu’un autre message correspond beaucoup mieux. D’après ce que je vois, nous avons plusieurs options à envisager :

  1. Revenir au comportement précédent. Lorsque plusieurs messages d’un sujet correspondent à un terme de recherche donné, choisir toujours le message avec le numéro le plus petit. L’inconvénient ici est que le numéro le plus petit ne correspond pas toujours au premier message, et nos résultats de recherche peuvent s’en trouver dégradés dans ce cas. Il existe également des situations où le corps d’un message est manifestement une bien meilleure correspondance, mais il se trouve exclu simplement parce qu’un autre message avec un numéro inférieur dans le sujet correspond aussi aux termes de recherche.

  2. Je me demande si nous pouvons résoudre le problème du côté de l’expérience utilisateur (UX). Au lieu d’avoir simplement un seul lien menant au message, peut-être que le titre du résultat de recherche mènera toujours au premier message du sujet, tandis que l’extrait de recherche liera au message qui a été classé dans les résultats.

  3. Exclure les informations du titre du sujet des PostSearchData des messages qui ne sont pas le premier. Nous devrons expérimenter un peu, mais je m’attends à ce que cela oriente fortement les résultats de recherche vers la restitution des premiers messages.

Je suis plutôt enclin à essayer l’option 2, car elle conserve l’exactitude de nos résultats de recherche tout en offrant aux utilisateurs, qui savent ce qu’ils recherchent, un moyen d’accéder au premier message depuis les résultats de recherche.

4 « J'aime »

Cela me semble vraiment désagréable. Ce comportement n’est pas évident, sauf si l’utilisateur a l’habitude de lire (et d’interpréter) les données affichées au survol des liens.


Peut-être envisager une recherche en deux étapes ?

  • Rechercher les titres des sujets, en ne correspondant qu’aux critères EXACT_MATCH et CONTAINS_ALL
    • Ces résultats seront placés en haut de la liste, avec EXACT_MATCH prioritaire
  • Ensuite, compléter le reste des résultats en utilisant la recherche pondérée actuelle, en excluant tous les messages d’ouverture de sujet déjà capturés lors de la première étape.
3 « J'aime »

L’idée est que nous allons apporter des modifications à l’expérience utilisateur (UX) pour rendre cela plus clair.

L’idée est bonne, mais je ne pense pas que nous puissions exécuter la requête de recherche PostgreSQL de manière efficace, car il n’y a pas de support d’index lors de la tentative de correspondance avec les opérateurs like et ilike. Un autre facteur à considérer est qu’il n’y a aucun moyen de classer les correspondances exactes ou les correspondances de type « contient ». C’est la raison pour laquelle nous nous appuyons sur les capacités de recherche en texte intégral fournies par PostgreSQL.

1 « J'aime »

Je pense qu’il vous faudrait probablement un moyen plus évident de distinguer les liens vers le premier message et ceux vers les messages correspondants. Je ne pense pas que votre proposition soit intuitive. (Mais je comprends que ce n’était qu’un exemple.)

Une possibilité à laquelle j’ai pensé serait d’afficher tous les messages correspondants d’un sujet, peut-être en utilisant un mécanisme d’expansion/réduction. Ainsi, vous afficheriez le message le mieux correspondu de tous les sujets correspondants, de manière similaire à la vue actuelle, mais il y aurait une flèche ou quelque chose de similaire à côté de chaque sujet correspondant pour développer la liste et afficher tous les messages correspondants dans ce sujet. Cela pourrait être excessif, je ne sais pas.

Je pense que cela vaudrait vraiment la peine d’être testé. Cela résoudrait le problème dont je me plains en priorisant les correspondances de titres. Mais cela résoudrait aussi le scénario que vous avez soulevé concernant les forums de programmation @tgxworld, car comme vous l’avez dit, les extraits de code ne seraient pas dans le titre.

Bien sûr, si c’est impraticable, je suppose que c’est une autre histoire. Peut-être que quelqu’un d’autre connaît un moyen de le rendre suffisamment performant.

S’appuyer sur des technologies existantes est bien, mais seulement si elles résolvent correctement votre cas d’usage. Il semble que la recherche en texte intégral de PostgreSQL soit insuffisante à elle seule, étant donné les problèmes soulevés dans ce sujet. Il semble qu’une approche hybride comme celle proposée par @Sailsman63 serait idéale, s’il existe un moyen de la rendre réalisable.

Puisqu’il semble qu’il n’y ait pas de “réponse facile” pour le moment, je pense honnêtement que c’est la meilleure option en attendant qu’une solution plus complète soit développée. Tout changement d’UX ou nouvel algorithme nécessitant des optimisations de base de données ou d’autres considérations de performance pourrait prendre du temps à être mis au point, donc je pense que revenir au comportement ancien serait raisonnable en tant que mesure temporaire.

Malheureusement, ce n’est pas aussi simple que de dire que nous passerons à quelque chose de mieux pour nous. Nous devons prendre en compte des compromis tant du point de vue commercial que technique avant de prendre notre propre décision.

Je suis réticent à le faire car cela ne nous fait pas avancer vers une meilleure solution. En fait, je suis convaincu que l’ancien comportement est incorrect. Les cas décrits dans ce sujet reposent sur un seul scénario où il semble intuitif que le résultat de la recherche renvoie uniquement au premier message, car l’utilisateur qui recherche connaît exactement le sujet qu’il souhaite trouver. J’irais même jusqu’à dire que les utilisateurs qui connaissent déjà le titre du sujet qu’ils recherchent devraient utiliser le filtre de recherche avancé in:title. Dans la plupart des cas de recherche, le contenu du message compte beaucoup, et une correspondance partielle avec le titre du sujet ne devrait pas signifier que seul le premier message du sujet doit être affiché.

1 « J'aime »

Oui, c’est équitable, je suppose.

Cela pourrait suffire si la recherche avancée était plus simple. Personnellement, je la trouve incroyablement difficile à utiliser car il y a tout simplement trop d’options, ce qui rend difficile de trouver celle dont j’ai besoin. Peut-être que c’est juste moi :man_shrugging:

Il serait peut-être approprié de rendre la case à cocher in:title toujours visible. Ou mieux encore, peut-être qu’un menu déroulant à gauche de la zone de saisie avec des options comme « Tout », « Titres » et « Messages » aurait du sens, permettant à l’utilisateur de spécifier le périmètre de la recherche. Ce type de filtre de recherche est assez courant, je pense, donc cela serait (j’espère) intuitif pour les utilisateurs de l’utiliser ou de l’ignorer selon leur convenance. À titre d’exemple comparable, IMDb permet de rechercher dans « Tout », « Titres », « Acteurs », etc. (Je ne me souviens plus exactement des options.) Il faudrait trouver un moyen de différencier « Tout » et « Messages » puisque ce sont essentiellement la même chose pour l’instant, mais cette approche pourrait valoir la peine d’être envisagée.

2 « J'aime »

C’est ce que nous devrions faire — il n’a absolument aucun sens pour moi que tous les messages du sujet aient le titre du sujet associé à eux ?

2 « J'aime »

Il faudra clarifier cela avec @sam, car c’est ainsi que notre index de recherche a toujours été construit. En fait, l’index de recherche de chaque publication inclut le titre, le nom de la catégorie ainsi que les noms des étiquettes, même si la publication n’est pas la première.

1 « J'aime »