Im neuesten Digest erhielt eines meiner Konten keine doppelten Themen, aber die Kommentare darunter waren es (“Beliebte Beiträge”). Es gab fünf Plätze und zwei Duplikate (drei eindeutige Beiträge), beide vom selben Thema.
Bearbeiten: Ich sehe mir einige historische Digests an, die an verschiedene Test-/Admin-Konten gesendet wurden:
Im vorherigen gab es ebenfalls zwei Duplikate in den Beliebten Beiträgen, ebenfalls vom selben Thema.
Im davor gab es ein doppeltes Thema, aber keine doppelten Beliebten Beiträge. Es gibt ein Duplikat unter “Neu für Sie”.
@j127, es wäre interessant zu wissen, wie viele Tags deine Digest-Themen hatten. In meinen letzten Stichproben korrespondiert die Duplizierung mit der Anzahl der Tags eines Themas. Könnte Zufall sein – oder auch nicht.
Ich konnte das Problem auf meiner lokalen Discourse-Site reproduzieren, indem ich ein Tag zur Website-Einstellung digest suppress tags hinzugefügt und dann ein Thema mit mehreren Tags erstellt habe.
if SiteSetting.digest_suppress_tags.present?
tag_ids = Tag.where_name(SiteSetting.digest_suppress_tags.split("|")).pluck(:id)
if tag_ids.present?
topics =
topics.joins("LEFT JOIN topic_tags tg ON topics.id = tg.topic_id").where(
"tg.tag_id NOT IN (?) OR tg.tag_id IS NULL",
tag_ids,
)
end
end
Bearbeiten: Ich glaube nicht, dass hier ein LEFT JOIN benötigt wird. Die Spalten aus der verknüpften topic_tags-Tabelle werden später in der Methode nicht verwendet. Die Korrektur könnte so einfach sein:
if SiteSetting.digest_suppress_tags.present?
Tag_ids = Tag.where_name(SiteSetting.digest_suppress_tags.split("|")).pluck(:id)
if tag_ids.present?
topics =
topics.where.not(id: TopicTag.where(tag_id: tag_ids).select(:topic_id))
end
end
Ich überlasse es dem Discourse-Team, den besten Ansatz zu ermitteln. Die Methode for_digest wird oft aufgerufen und muss effizient sein.
@simon – vielen Dank, dass Sie das durchgearbeitet haben! Ich bin sicher, es war viel zu durchforsten. Ich freue mich darauf, dass das Discourse-Team zurückkehrt und Ihre Analyse umsetzt.
Ich bestätige nur, dass das Entfernen des Tags, das ich in digest suppress tags hatte, die Zusammenfassungen wieder normalisiert hat. (Ich verlasse mich in der Zwischenzeit auf digest suppress categories.)
Ich bin mir nicht ganz sicher, wann gemergte Commits im Beta-Kanal verfügbar sind. Wenn ich auf 3.4.0.beta3-dev (53f9c81790) bin und kein GUI-Update angefordert wird, wird dann ein Befehlszeilen-Update diese Änderung übernehmen?
Sie können die Benutzeroberfläche immer noch abrufen, ohne dass eine Aufforderung dazu erfolgt, und sie ruft die neuen Commits ab. Aber auch ein CLI-Neubau würde sie abrufen.