C’è un modo per far ricalcolare a Discourse tutti i Top Topics nel profilo di un utente dopo un’importazione e/o il conteggio dei link in un argomento?
Stranamente, i Top Reply funzionano correttamente.
C’è un modo per far ricalcolare a Discourse tutti i Top Topics nel profilo di un utente dopo un’importazione e/o il conteggio dei link in un argomento?
Stranamente, i Top Reply funzionano correttamente.
Credo che le statistiche vengano calcolate automaticamente ogni 24 ore. Non dovresti fare altro che aspettare.
Non sembra essere così: abbiamo avuto un test di importazione attivo da alcune settimane; alcune cose si sono corrette da sole, altre no. I ‘Top Topics’ ne sono l’esempio più evidente. Anche il numero di link nei topic presenta lo stesso problema. A parte questo, tutto il resto sembra corretto in tutto il sito.
Hmm, esaminando il codice, abbiamo due job: TopRefreshToday (si attiva ogni ora) e TopRefreshOlder (si attiva ogni 24 ore). Entrambi chiamano metodi da qui, che dovresti poter eseguire manualmente dalla console di Rails se necessario.
Puoi controllare /sidekiq/scheduler per verificare se i due job sono stati eseguiti?
Dato per scontato che tutte le informazioni pertinenti per il calcolo dei topic principali siano state importate insieme all’importazione?
In questo caso, questi lavori vengono eseguiti correttamente. Il problema sembra essere che il campo like_count nella tabella topics non è popolato. Esiste un modo efficace per ricalcolare il valore di questo campo, oppure è necessario farlo durante l’importazione? Se deve essere fatto durante l’importazione, come dovrebbe funzionare il calcolo? Si tratta di una somma di tutti i like di tutti i post presenti nel topic?
Ho trovato un metodo, utilizzando la console di Rails, che sembra ricalcolare questo campo:
Topic.visible.map(&:update_statistics)
Il problema con questa soluzione è che, considerando il numero dei nostri topic e post, ho stimato che ci vorrebbero circa due mesi per completare l’esecuzione di questo comando.
Sembra che tu possa rigenerare il like_count utilizzando il metodo update_action_counts:
Quindi forse qualcosa del genere:
Topic.all.find_each do |t|
putc '.'
t.update_action_counts
end
Sembra che abbia funzionato davvero bene per @Ghan e me, grazie mille ![]()