···24242525 _, err = tx.ExecContext(ctx, `
2626 INSERT INTO user_article_recommendations (user_did, feed_url, article_url, score)
2727- SELECT target, l.feed_url, l.article_url, SUM(us.jaccard) AS score
2727+ SELECT targets.target, l.feed_url, l.article_url, SUM(targets.jaccard) AS score
2828 FROM (
2929- SELECT us.user_a AS target, s.user_did AS peer
2929+ SELECT us.user_a AS target, us.user_b AS peer, us.jaccard
3030 FROM user_similarity us
3131 WHERE us.jaccard > 0.2
3232 UNION ALL
3333- SELECT us.user_b AS target, s.user_did AS peer
3333+ SELECT us.user_b AS target, us.user_a AS peer, us.jaccard
3434 FROM user_similarity us
3535 WHERE us.jaccard > 0.2
3636 ) targets
3737 JOIN likes l ON l.author_did = targets.peer
3838- WHERE l.article_url NOT IN (
3939- SELECT a.url FROM articles a
4040- JOIN subscriptions s ON a.feed_url = s.feed_url AND s.user_did = targets.target
4141- LEFT JOIN read_state r ON r.user_did = targets.target AND r.article_id = a.id
3838+ WHERE NOT EXISTS (
3939+ SELECT 1 FROM subscriptions sub WHERE sub.user_did = targets.target AND sub.feed_url = l.feed_url
4240 )
4341 AND NOT EXISTS (
4442 SELECT 1 FROM likes ul WHERE ul.author_did = targets.target AND ul.feed_url = l.feed_url AND ul.article_url = l.article_url