🎯 目標
新增 /api/search 端點,支援關鍵字搜尋(食物名稱 / 成分 / 效果 / 證據)
資料來源仍是 MySQL(先用全文檢索或 LIKE),保持輕量
為未來向量檢索(Phase 4,可選 SQLite-vec / DuckDB / Qdrant)做預留
🛠 工作項目
1) 資料庫準備
確認哪些欄位要能搜尋:
foods.name
effects.effect_name / effects.category
evidence.endpoint / evidence.note / evidence.reference
2) DAO / RowMapper
SearchDao.search(String keyword)
SQL (LIKE 版 MVP):
4) 體驗優化
支援多關鍵字:?q=黑芝麻 抗皺
預設排序:依 type 分組 → effect > food > evidence
分頁:?q=番茄&page=1&size=10
5) 預留向量檢索(Phase 4)
抽象出介面 SearchStrategy:
List<SearchResultDto> search(String q)
Day 11:只實作 SqlSearchStrategy(LIKE/FTS)
✅ 驗收
curl "http://localhost:8080/api/search?q=黑芝麻"
回 food + evidence,能找到「黑芝麻」
curl "http://localhost:8080/api/search?q=抗皺"
回 effectId=E002
curl "http://localhost:8080/api/search?q=番茄"
回 food=番茄、evidence=番茄紅素、effect=抗皺