タグリスト内の正確なトピック数

tags ページでは、トピック数が正確ではありません。実際には、ユーザーに表示されないトピックも含まれています。

メタでの例:

私はこの問題に API を使用している際に遭遇しました。私のプラグインでは正確なトピック数が必要であるため、表示されるトピックを数えるために各タグを読み込む必要があります。現在は機能していますが、帯域幅の無駄であり、ある日 Discourse の API 呼び出しのレート制限に達するのではないかと心配しています。

この問題を解決できる見込みはありますか?

ありがとうございます。

「いいね!」 2

それらはすべてアクセスできないプライベートメッセージに含まれています。

もちろん、これは修正でも何でもありませんが、プライベートメッセージ内の 4 件の事例のみについて、この特定のタグは必要ない我认为ので、削除します。

「いいね!」 1

必要であれば、Meta の別の例として sass タグがあります(タグ一覧のトピック数=2、タグページのトピック数=1)。

「いいね!」 1

フォーラムでも同じ現象を確認しました。最も簡単に再現するには、新しいトピックを作成してタグ付けし、その後削除すると、まだカウントされている状態になります。

「いいね!」 2

この問題による追加の小さな不便さは、管理者が空のタグを削除する際に誤ったエラーメッセージが表示されることです。

空のタグ:

誤ったエラーメッセージ:

@tshenry さん、これを再現できますか?

「いいね!」 1

はい、私の返信を書き直します。ここでは何が起こっているのか、ほぼすべてわかったと思います :slight_smile:

@ninjapenguin が指摘しているように、タグを割り当てたトピックをすべて削除しても、そのタグはタグ一覧ページに残り、件数も変わりません。これは、トピックが技術的にはまだ存在し、引き続きそのタグを保持しているためだと考えています。

@syl さん、スクリーンショットに示されているように tete タグのトピック一覧に移動し、URL の末尾に

?status=deleted

を追加すると、tete タグが割り当てられた削除済みトピックが 2 つ表示されるはずです。

2 つ目のスクリーンショットのメッセージは、そのタグが割り当てられた削除済みトピックの数に対応しています。


タグの集計や一覧表示において、削除済みトピックを考慮すべきではないと感じますが、データベースの保存方法から考えると、これは簡単な変更ではないかもしれません。@codinghorror さん、どうお考えですか?

「いいね!」 2

その通りです。

標準的なフォーラムでは、タグ一覧に表示されるトピック数と、ユーザーが各タグ内で実際に見ることができるトピック数の不一致の大部分は、削除されたトピックによって説明できると考えられます。これを修正するだけで大きな改善になります。ただし、非管理者ユーザーがプライベートトピックを含むタグを表示している場合にも、不一致が発生することに注意してください。

これは再現できません。もし、あるタグが私的メッセージ(PM)または制限付きカテゴリ内のトピックでのみ使用されている場合、それらのトピックへのアクセス権を持たないユーザーは、タグ一覧にそのタグが表示されることはありません。

現時点で私が確認している唯一の望ましくない動作は、削除されたトピックに関連する挙動について私が以前触れた点です。

「いいね!」 1

混乱させてしまい申し訳ありません。私はタグ数について話していました。この問題を再現する手順は以下の通りです。

  1. 管理者として、カテゴリを指定せず、新しいタグを付けたトピックを作成します
  2. 管理者として、同じタグを使用し、制限付きカテゴリに属する別のトピックを作成します
  3. 一般ユーザーとして、test-tag タグに移動し、表示されるトピックが 1 つだけであることを確認します
  4. しかし、タグリストでは、タグ数が 2 と表示されます
「いいね!」 1

わかりました、ありがとうございます。コードを確認したところ、いくつかの点に気づきました。

  • tags テーブルには、タグの件数に影響を与える 2 つの列があります。それは topic_countpm_topic_count です。これらのカウントは、タグの適用/削除時に増減 されます。管理者以外のユーザーは、常に topic_count の値のみを表示します。

  • 12 時間ごとに実行される整合性ジョブがあり、これによりタグのカウントが更新され、削除されたトピックが含まれないようにされます。

  • ユーザーの個別のトピックアクセスに基づいて、即座にカウントを調整する仕組みはありません。

私の確認した限りでは、バグではなく、現在の実装に基づく制限です。ここで議論されたすべての内容は「機能リクエスト」に分類でき、以下のように要約できます。

タグページのタグ件数を動的にし、ユーザーがタグのトピック一覧に移動した際に実際に表示される内容を反映するようにします。

「いいね!」 1

@tshenry さん、ありがとうございます。それはとても良いですね。私の開発インスタンスでこの問題がより頻繁に発生していた理由もこれで説明がつくかもしれません(もしかすると整合性ジョブが実行されていないのかもしれません)。確認してみます。

P.S.: 現在、Meta の documentation タグの数は 5 となっていますが、私が確認できるトピックは 4 つだけです。12 時間後にもう一度確認します :slight_smile:

「いいね!」 1