組み込みのホットソート アルゴリズムは非常に単純で、さまざまなユースケースに適さない場合があります。Discourseのコードベースに関する私の基本的な理解では、現在、ホットソートアルゴリズムをカスタマイズするためのユーザー向けのサイト設定や適切なプラグインインジェクションポイントはありません。スコアが更新された後に呼び出されるtopic_hot_scores_updatedイベントが1つありますが、これは組み込みのホットスコアを上書きする機能なしに通知の目的を果たします。hot_topics_gravityとhot_topics_recent_daysという2つのサイト設定がありますが、これらはhidden: trueが設定されており、管理UIには表示されません。
組み込みのホットスコアアルゴリズムを置き換えるプラグインを作成することを検討しています。互換性と将来のDiscourseのアップグレードの容易さという点で、どの方法がより良いでしょうか?私の考えをいくつか以下に示します。
TopicHotScoreにモンキーパッチを適用し、カスタムアルゴリズムに従ってデータベースを更新する。- トピックのホットスコアを保存するための別のテーブルを作成し、それらを更新するための別のバックグラウンドジョブを実行する。カスタムのホットトピックリスト用に(/hotの代わりに)別のルートを追加する。
- あるいは、このようなユースケースをサポートするようにDiscourseのコードベースを改善できるでしょうか?