Tag-union implementation?

AI-generated summary

Tag-union Implementation Discussion

ebadgley initiated a discussion on implementing a tag union capability in Discourse, which would allow users to see topics with at least one of multiple specified tags. Currently, Discourse only supports tag intersections (AND) by default.

ebadgley proposed two possible solutions:

  1. Redirecting search results to the default category page.
  2. Creating a /tags/union/ route, possibly via a plugin.

sam revealed that a tag union route is already available in the form of https://meta.discourse.org/?tags[]=screen-reader&tags[]=accessibility, although it requires direct navigation to work due to Ember router limitations.

david suggested an alternative syntax using a space-separated list, e.g., https://meta.discourse.org/?tags=screen-reader+accessibility, which currently works but does not persist when selecting a category.

attj pointed out that this functionality does not work when selecting a category from the top left menu and requested a solution.

david acknowledged the limitation and mentioned that improving filtering and sorting of topic lists is a long-term goal for the Discourse team.

Continuing the discussion from Tags: category restrictions, tag groups, relationships:

I’m interested in building a tag union capability that would mimic how tag intersections are currently implemented (Tag intersections page): essentially the same result as intersections (the default category/Latest view), but doing an OR on multiple tags rather than an AND. I would appreciate any suggestions as a new Discourse developer.

My thoughts (so far) are as follows:

  • Searching on multiple tags via the search page essentially provides tag-union functionality (Does multiple tag search support AND vs OR?). The problem is that I don’t want the search results view – I want the default category page. Could search results be redirected to accomplish this?

  • If search results can’t be redirected, I’m open to attempting a /tags/union/ route (and have been looking into how intersection works). I would prefer to do this via plugin, but I am concerned that that is not something that could currently be accomplished via a plugin. Any suggestions here would be appreciated.

If there is sufficient user interest to add a tag-union capability into the Discourse core, I’d be willing to do it and submit a PR, but I’m hoping to find an alternative. Thanks in advance.

Je ne suis pas sûr que cela compte comme un « intérêt suffisant des utilisateurs », mais je compte relancer cette discussion pour voir si les utilisateurs ou l’équipe sont intéressés.

Qu’en pensez-vous ? @daniel

Y a-t-il eu des mises à jour à ce sujet ? Il serait très utile d’avoir une route /tags/union.

Nous l’avons maintenant, du moins sous forme de route :

https://meta.discourse.org/?tags[]=screen-reader&tags[]=accessibility

À long terme, nous envisageons de construire une interface utilisateur pour un filtrage et un tri plus nets des listes de sujets.

Je reçois une liste de sujets vide en cliquant sur l’URL fournie :

Y a-t-il un problème ?

Oui, notre routeur Ember doit connaître cette route (cc @david)

Fonctionnera si vous naviguez directement vers l’URL

Dois-je exécuter ./launcher rebuild app pour avoir cette mise à jour sur mon instance auto-hébergée ?

J’attendrais que nous corrigions le routage côté client.

La construction de tableaux de paramètres de requête à l’aide de la syntaxe paramName[] est spécifique aux frameworks backend, et je ne pense pas qu’elle soit prise en charge nativement par Ember. Nous pourrions peut-être la faire fonctionner, mais j’ai jeté un coup d’œil rapide à l’implémentation côté serveur du filtre tags et il semble que nous prenions également en charge une liste séparée par des espaces.

Donc, ce lien devrait déjà fonctionner sans rechargement complet de la page : https://meta.discourse.org/?tags=screen-reader+accessibility

C’est très bien. Cependant, la page ne conserve pas les restrictions lorsqu’une catégorie est sélectionnée en haut à gauche. Pour les pages avec des tags uniques, cela fonctionne comme prévu.

Par exemple, si je suis sur /tag/tag1 et que je choisis site-feedback en haut à gauche. Il affiche /tags/c/site-feedback/2/tag1.

Avec /?tags=tag1+tag2, il me redirige simplement vers /c/site-feedback/2.

Est-il possible d’avoir cette fonctionnalité ?

Je suppose que cela a également été demandé dans ces deux sujets :

Ce genre de chose n’est pas pris en charge pour le moment, mais c’est quelque chose que nous envisageons d’améliorer à long terme