nandi/gleanpublic⑂ Fork 0
⑂ fd2d54c
Commits
⬇ Clone ▾
git clone https://git.rickub.com/nandi/glean.git
git clone ssh://git@rickub.com/nandi/glean.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Optimize recommendation query and remove unnecessary migrationUnverified

Julien Robert committed 2026-04-20T12:52:18+02:00 Browse files
fd2d54c parent: 5641d4d
modified internal/cluster/jaccard.go +5 -7
@@ -24,21 +24,19 @@ func (e *Engine) ComputeArticleRecommendations(ctx context.Context) error {
2424
2525 _, err = tx.ExecContext(ctx, `
2626 INSERT INTO user_article_recommendations (user_did, feed_url, article_url, score)
27- SELECT target, l.feed_url, l.article_url, SUM(us.jaccard) AS score
27+ SELECT targets.target, l.feed_url, l.article_url, SUM(targets.jaccard) AS score
2828 FROM (
29- SELECT us.user_a AS target, s.user_did AS peer
29+ 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
33- SELECT us.user_b AS target, s.user_did AS peer
33+ 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
38- WHERE l.article_url NOT IN (
39- SELECT a.url FROM articles a
40- JOIN subscriptions s ON a.feed_url = s.feed_url AND s.user_did = targets.target
41- LEFT JOIN read_state r ON r.user_did = targets.target AND r.article_id = a.id
38+ WHERE NOT EXISTS (
39+ 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
@@ -24,21 +24,19 @@ func (e *Engine) ComputeArticleRecommendations(ctx context.Context) error {
24 24
25 _, err = tx.ExecContext(ctx, `25 _, err = tx.ExecContext(ctx, `
26 INSERT INTO user_article_recommendations (user_did, feed_url, article_url, score)26 INSERT INTO user_article_recommendations (user_did, feed_url, article_url, score)
27- SELECT target, l.feed_url, l.article_url, SUM(us.jaccard) AS score27+ SELECT targets.target, l.feed_url, l.article_url, SUM(targets.jaccard) AS score
28 FROM (28 FROM (
29- SELECT us.user_a AS target, s.user_did AS peer29+ SELECT us.user_a AS target, us.user_b AS peer, us.jaccard
30 FROM user_similarity us30 FROM user_similarity us
31 WHERE us.jaccard > 0.231 WHERE us.jaccard > 0.2
32 UNION ALL32 UNION ALL
33- SELECT us.user_b AS target, s.user_did AS peer33+ SELECT us.user_b AS target, us.user_a AS peer, us.jaccard
34 FROM user_similarity us34 FROM user_similarity us
35 WHERE us.jaccard > 0.235 WHERE us.jaccard > 0.2
36 ) targets36 ) targets
37 JOIN likes l ON l.author_did = targets.peer37 JOIN likes l ON l.author_did = targets.peer
38- WHERE l.article_url NOT IN (38+ WHERE NOT EXISTS (
39- SELECT a.url FROM articles a39+ SELECT 1 FROM subscriptions sub WHERE sub.user_did = targets.target AND sub.feed_url = l.feed_url
40- JOIN subscriptions s ON a.feed_url = s.feed_url AND s.user_did = targets.target
41- LEFT JOIN read_state r ON r.user_did = targets.target AND r.article_id = a.id
42 )40 )
43 AND NOT EXISTS (41 AND NOT EXISTS (
44 SELECT 1 FROM likes ul WHERE ul.author_did = targets.target AND ul.feed_url = l.feed_url AND ul.article_url = l.article_url42 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
modified internal/db/db.go +0 -7
@@ -161,12 +161,5 @@ func migrate(db *sql.DB) error {
161161 }
162162 }
163163
164- migrations := []string{
165- `ALTER TABLE feeds ADD COLUMN favicon_url TEXT`,
166- }
167- for _, m := range migrations {
168- tx.Exec(m)
169- }
170-
171164 return tx.Commit()
172165 }
@@ -161,12 +161,5 @@ func migrate(db *sql.DB) error {
161 }161 }
162 }162 }
163 163
164- migrations := []string{
165- `ALTER TABLE feeds ADD COLUMN favicon_url TEXT`,
166- }
167- for _, m := range migrations {
168- tx.Exec(m)
169- }
170-
171 return tx.Commit()164 return tx.Commit()
172 }165 }