# 搜索增强模块 ## 概述 搜索增强模块提供自动补全、搜索历史、键盘导航和搜索结果高亮,全面提升搜索体验和效率。 --- ## 搜索自动补全 🆕 ### API | 路由 | 方法 | 功能 | |------|------|------| | /api/search/autocomplete | GET | 搜索自动补全建议 | - Query: `q` (搜索关键词), `type` (tool/skill/all) - 返回: `{ suggestions: [{ text, type, slug }] }` - 基于工具名称、技能名称、标签前缀匹配 - 最多返回 8 条建议 - 响应时间 < 100ms(内存缓存) ### 前端组件 #### SearchBox 重写 🆕 - **文件**: `src/components/common/SearchBox.tsx` - **功能**: - 输入时实时显示自动补全下拉 - 键盘导航: ↑↓ 移动高亮 / Enter 选择 / ESC 关闭 - 搜索防抖(300ms) - 搜索结果高亮匹配文本 - 支持工具/技能分类筛选 --- ## 搜索历史 🆕 ### 存储 - localStorage 存储: `zhuiguang-search-history` - 最多保留 20 条历史记录 - 按最近使用排序 - 去重(同一查询只保留最新一条) ### 交互 - 搜索框聚焦时显示历史记录下拉 - 点击历史记录直接搜索 - 支持单条删除和清空全部 - 历史记录带搜索类型图标 --- ## 高亮文本组件 🆕 ### HighlightText - **文件**: `src/components/common/HighlightText.tsx` - Props: `{ text: string, keyword: string, className?: string }` - 功能: 将文本中匹配的关键词包裹在 `` 标签中 - 样式: 黄色高亮背景 `bg-yellow-200 dark:bg-yellow-800` - 不区分大小写匹配 ### 使用场景 - 搜索结果列表中的工具名称/描述 - 自动补全下拉中的建议文本 - 评论/话题搜索 --- ## 搜索框语义化 ### WCAG 合规 - `
` 包裹搜索表单 - `