Limit article search to title and summary columnsUnverified
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, | ||
| 317 | 317 | return nil, nil |
| 318 | 318 | } |
| 319 | 319 | |
| 320 | + columnQuery := "{title summary} : " + safeQuery | |
| 321 | + | |
| 320 | 322 | rows, err := db.QueryContext(ctx, ` |
| 321 | 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 | 324 | a.published, a.updated, a.fetched_at, |
| @@ -329,7 +331,7 @@ func (db *DB) SearchArticles(ctx context.Context, userDID, query string, limit, | ||
| 329 | 331 | WHERE articles_fts MATCH ? |
| 330 | 332 | ORDER BY ft.rank |
| 331 | 333 | LIMIT ? OFFSET ? |
| 332 | - `, userDID, userDID, safeQuery, limit, offset) | |
| 334 | + `, userDID, userDID, columnQuery, limit, offset) | |
| 333 | 335 | if err != nil { |
| 334 | 336 | return nil, err |
| 335 | 337 | } |
| @@ -317,6 +317,8 @@ func (db *DB) SearchArticles(ctx context.Context, userDID, query string, limit, | |||
| 317 | return nil, nil | 317 | 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.rank | 332 | 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, err | 336 | return nil, err |
| 335 | } | 337 | } |
modified
internal/db/article_test.go +2 -3 | @@ -240,15 +240,14 @@ func TestSearchArticles_FindsBySummary(t *testing.T) { | ||
| 240 | 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 | 244 | ctx := context.Background() |
| 245 | 245 | db := setupTestDB(t) |
| 246 | 246 | userDID, _ := seedSearchData(t, ctx, db) |
| 247 | 247 | |
| 248 | 248 | results, err := db.SearchArticles(ctx, userDID, "garbage collection", 10, 0) |
| 249 | 249 | 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) | |
| 252 | 251 | } |
| 253 | 252 | |
| 254 | 253 | 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) { |