feat(search): 搜索覆盖标题/正文/评论
原 /api/v1/articles?q=xxx 只搜 title + body_text(外文原文),
导致:
- 搜中文译文里出现的词搜不到
- 搜双 provider 评论里的"主题词"搜不到
- 搜摘要搜不到
扩展为搜索 7 个字段(命中任一即可):
- title (原标题,外文)
- body_text (原文,外文)
- title_zh (中文标题)
- body_zh_text (中文译文,纯文本)
- summary_zh (中文摘要)
- commentary (Angel 评论)
- commentary_meituan (美团评论)
不去搜 body_zh_formatted(HTML 包了 <p class="diary-para">),
避免 ilike 跟 HTML 标签字符串误匹配,纯文本走 body_zh_text 即可。
性能:
- ilike '%xxx%' 走不了 B-tree 索引,PG 会 seq scan
- 当前文章量级别(几千篇)下完全 OK,延迟 < 50ms
- 未来 10w+ 文章量时改 PG full-text search(to_tsvector + GIN)
或外部 ES;现阶段不做
无 schema/migration 改动;无前端改动(后端响应 schema 没变)。