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.

これが「十分なユーザーの関心」に該当するかどうかはわかりませんが、ユーザーやチームが関心があるかどうかを確認するために、この議論を再開しようとしています。
ご意見をお聞かせください。@daniel

これに関して何かアップデートはありましたか? /tags/union ルートがあると非常に便利です。

これで、少なくともルート形式で入手できます。

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

長期的には、トピックリストのよりクリーンなフィルタリングと並べ替えのためのUIの構築を検討しています。

提供されたURLをクリックすると、トピックリストが空になります。

何か問題があるのでしょうか?

Emberルーターはこのルートについて学習する必要があります(@davidさん宛)

URLに直接移動すると機能します

セルフホストインスタンスでこのアップデートを適用するには、./launcher rebuild app を実行する必要がありますか?

クライアントサイドルーティングを修正するまで待ちます。

paramName[]構文を使用してクエリパラメータ配列を構築することは、バックエンドフレームワーク固有のことであり、Emberでネイティブにサポートされているとは思いません。機能させることができるかもしれませんが、tagsフィルターのサーバーサイド実装をざっと見たところ、スペース区切りのリストもサポートしているようです。

したがって、このリンクはページ全体をリロードせずに機能するはずです:https://meta.discourse.org/?tags=screen-reader+accessibility

これは非常に便利です。しかし、左上からカテゴリを選択すると、ページは制限を維持しません。単一タグのページでは、これは期待どおりに機能します。

たとえば、/tag/tag1 にいて、左上から site-feedback を選択した場合、/tags/c/site-feedback/2/tag1 が表示されます。

/?tags=tag1+tag2 の場合、/c/site-feedback/2 にリダイレクトされるだけです。

この機能は可能でしょうか?

これらの2つのトピックでも同様のリクエストがあったと思います。

そのようなことは現時点ではサポートされていませんが、長期的に改善を検討していることです。