nandi/gleanpublic⑂ Fork 0
⑂ 8757845
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.

Limit article search to title and summary columnsUnverified

Julien Robert committed 2026-04-21T15:06:54+02:00 Browse files
8757845 parent: a091372
modified internal/db/article.go +3 -1
@@ -317,6 +317,8 @@ func (db *DB) SearchArticles(ctx context.Context, userDID, query string, limit,
317317 return nil, nil
318318 }
319319
320+ columnQuery := "{title summary} : " + safeQuery
321+
320322 rows, err := db.QueryContext(ctx, `
321323 SELECT a.id, a.feed_url, COALESCE(f.title, ''), f.favicon_url, a.guid, a.title, a.url, a.author, a.summary, a.content,
322324 a.published, a.updated, a.fetched_at,
@@ -329,7 +331,7 @@ func (db *DB) SearchArticles(ctx context.Context, userDID, query string, limit,
329331 WHERE articles_fts MATCH ?
330332 ORDER BY ft.rank
331333 LIMIT ? OFFSET ?
332- `, userDID, userDID, safeQuery, limit, offset)
334+ `, userDID, userDID, columnQuery, limit, offset)
333335 if err != nil {
334336 return nil, err
335337 }
@@ -317,6 +317,8 @@ func (db *DB) SearchArticles(ctx context.Context, userDID, query string, limit,
317 return nil, nil317 return nil, nil
318 }318 }
319 319
320+ columnQuery := "{title summary} : " + safeQuery
321+
320 rows, err := db.QueryContext(ctx, `322 rows, err := db.QueryContext(ctx, `
321 SELECT a.id, a.feed_url, COALESCE(f.title, ''), f.favicon_url, a.guid, a.title, a.url, a.author, a.summary, a.content,323 SELECT a.id, a.feed_url, COALESCE(f.title, ''), f.favicon_url, a.guid, a.title, a.url, a.author, a.summary, a.content,
322 a.published, a.updated, a.fetched_at,324 a.published, a.updated, a.fetched_at,
@@ -329,7 +331,7 @@ func (db *DB) SearchArticles(ctx context.Context, userDID, query string, limit,
329 WHERE articles_fts MATCH ?331 WHERE articles_fts MATCH ?
330 ORDER BY ft.rank332 ORDER BY ft.rank
331 LIMIT ? OFFSET ?333 LIMIT ? OFFSET ?
332- `, userDID, userDID, safeQuery, limit, offset)334+ `, userDID, userDID, columnQuery, limit, offset)
333 if err != nil {335 if err != nil {
334 return nil, err336 return nil, err
335 }337 }
modified internal/db/article_test.go +2 -3
@@ -240,15 +240,14 @@ func TestSearchArticles_FindsBySummary(t *testing.T) {
240240 assert.Equal(t, results[0].Title, "Rust Memory Safety")
241241 }
242242
243-func TestSearchArticles_FindsByContent(t *testing.T) {
243+func TestSearchArticles_IgnoresContentOnlyMatch(t *testing.T) {
244244 ctx := context.Background()
245245 db := setupTestDB(t)
246246 userDID, _ := seedSearchData(t, ctx, db)
247247
248248 results, err := db.SearchArticles(ctx, userDID, "garbage collection", 10, 0)
249249 assert.NilError(t, err)
250- assert.Equal(t, len(results), 1)
251- assert.Equal(t, results[0].Title, "Rust Memory Safety")
250+ assert.Equal(t, len(results), 0)
252251 }
253252
254253 func TestSearchArticles_NoResults(t *testing.T) {
@@ -240,15 +240,14 @@ func TestSearchArticles_FindsBySummary(t *testing.T) {
240 assert.Equal(t, results[0].Title, "Rust Memory Safety")240 assert.Equal(t, results[0].Title, "Rust Memory Safety")
241 }241 }
242 242
243-func TestSearchArticles_FindsByContent(t *testing.T) {243+func TestSearchArticles_IgnoresContentOnlyMatch(t *testing.T) {
244 ctx := context.Background()244 ctx := context.Background()
245 db := setupTestDB(t)245 db := setupTestDB(t)
246 userDID, _ := seedSearchData(t, ctx, db)246 userDID, _ := seedSearchData(t, ctx, db)
247 247
248 results, err := db.SearchArticles(ctx, userDID, "garbage collection", 10, 0)248 results, err := db.SearchArticles(ctx, userDID, "garbage collection", 10, 0)
249 assert.NilError(t, err)249 assert.NilError(t, err)
250- assert.Equal(t, len(results), 1)250+ assert.Equal(t, len(results), 0)
251- assert.Equal(t, results[0].Title, "Rust Memory Safety")
252 }251 }
253 252
254 func TestSearchArticles_NoResults(t *testing.T) {253 func TestSearchArticles_NoResults(t *testing.T) {