Sto cercando di creare un “motore di raccomandazione” per i miei utenti tramite l’API di Discourse che elenchi tutti gli argomenti che un utente specifico non ha ancora letto per tag/categoria. Ho esaminato le varie query esistenti, ma non ho idea da dove iniziare. Potete aiutarmi? Grazie!
@simon Potresti aggiungere il tag qui?
Hai controllato la tabella post_timings?
Qualcosa di simile elencherà gli argomenti in una categoria in cui un utente non è mai entrato o non ha letto alcun post. Non è esattamente quello che vuoi, ma è un punto di partenza.
-- [params]
-- user_id :user
-- category_id :category
SELECT t.id, t.title
FROM
topics AS t
WHERE
category_id = :category
AND user_id != :user
AND last_post_user_id != :user
AND deleted_at IS NULL
AND NOT EXISTS(SELECT 1 FROM post_timings AS p WHERE p.topic_id = t.id AND p.user_id = :user)
Nota che nel tuo “motore di raccomandazione” probabilmente dovrai verificare se l’utente può vedere l’argomento prima di consigliarlo.