[Claude Workbench] Initial commit - preserving existing code
This commit is contained in:
261
docs/search-api.md
Normal file
261
docs/search-api.md
Normal file
@@ -0,0 +1,261 @@
|
||||
# 内容搜索API接口文档
|
||||
|
||||
## 概述
|
||||
|
||||
本系统提供了统一的内容搜索功能,支持搜索工作流和课程两种类型的内容。所有搜索接口均支持匿名访问,无需登录认证。
|
||||
|
||||
## 接口列表
|
||||
|
||||
### 1. 基础搜索接口
|
||||
|
||||
**GET** `/user/search`
|
||||
|
||||
#### 请求参数
|
||||
|
||||
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|
||||
|--------|------|------|--------|------|
|
||||
| keyword | String | 是 | - | 搜索关键词,至少2个字符 |
|
||||
| type | String | 否 | all | 内容类型:all/course/workflow |
|
||||
| category | String | 否 | - | 分类过滤 |
|
||||
| freeOnly | Boolean | 否 | false | 是否仅显示免费内容 |
|
||||
| sortBy | String | 否 | relevance | 排序方式:relevance/createTime/updateTime/viewCount/likeCount |
|
||||
| sortOrder | String | 否 | desc | 排序方向:asc/desc |
|
||||
| page | Integer | 否 | 1 | 页码,从1开始 |
|
||||
| size | Integer | 否 | 20 | 每页数量,最大100 |
|
||||
|
||||
#### 请求示例
|
||||
|
||||
```http
|
||||
GET /user/search?keyword=AI图像处理&type=all&freeOnly=false&page=1&size=20
|
||||
```
|
||||
|
||||
#### 响应示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "操作成功",
|
||||
"data": {
|
||||
"total": 156,
|
||||
"page": 1,
|
||||
"size": 20,
|
||||
"totalPages": 8,
|
||||
"keyword": "AI图像处理",
|
||||
"items": [
|
||||
{
|
||||
"id": 1,
|
||||
"type": "course",
|
||||
"title": "AI图像处理入门课程",
|
||||
"description": "学习AI图像处理的基础知识和实践技巧",
|
||||
"coverUrl": "https://example.com/cover1.jpg",
|
||||
"price": "29.99",
|
||||
"category": "人工智能",
|
||||
"isFree": false,
|
||||
"likeCount": 2300,
|
||||
"level": 1,
|
||||
"duration": "15:30",
|
||||
"viewCount": 12500,
|
||||
"commentCount": 856,
|
||||
"vipType": "normal",
|
||||
"creator": {
|
||||
"id": "17543607206742139",
|
||||
"username": "张三",
|
||||
"avatarUrl": "https://example.com/avatar1.jpg"
|
||||
},
|
||||
"createTime": "2024-01-15T10:30:00",
|
||||
"updateTime": "2024-01-15T10:30:00"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"type": "workflow",
|
||||
"title": "智能图像生成工作流",
|
||||
"description": "基于AI的智能图像生成工作流,支持多种图像风格转换",
|
||||
"coverUrl": "https://example.com/cover2.jpg",
|
||||
"price": "19.99",
|
||||
"category": "人工智能",
|
||||
"isFree": false,
|
||||
"likeCount": 1250,
|
||||
"rating": 5,
|
||||
"creator": {
|
||||
"id": "17543607206742140",
|
||||
"username": "李四",
|
||||
"avatarUrl": "https://example.com/avatar2.jpg"
|
||||
},
|
||||
"createTime": "2024-01-16T14:20:00",
|
||||
"updateTime": "2024-01-16T14:20:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 高级搜索接口
|
||||
|
||||
**POST** `/user/search`
|
||||
|
||||
#### 请求体
|
||||
|
||||
```json
|
||||
{
|
||||
"keyword": "AI图像处理",
|
||||
"type": "all",
|
||||
"category": "人工智能",
|
||||
"freeOnly": false,
|
||||
"sortBy": "relevance",
|
||||
"sortOrder": "desc",
|
||||
"page": 1,
|
||||
"size": 20
|
||||
}
|
||||
```
|
||||
|
||||
#### 响应格式
|
||||
|
||||
与GET接口相同。
|
||||
|
||||
### 3. 搜索统计接口
|
||||
|
||||
**GET** `/user/search/stats`
|
||||
|
||||
#### 请求参数
|
||||
|
||||
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|
||||
|--------|------|------|--------|------|
|
||||
| keyword | String | 是 | - | 搜索关键词 |
|
||||
| type | String | 否 | all | 内容类型 |
|
||||
| category | String | 否 | - | 分类过滤 |
|
||||
| freeOnly | Boolean | 否 | false | 是否仅显示免费内容 |
|
||||
|
||||
#### 请求示例
|
||||
|
||||
```http
|
||||
GET /user/search/stats?keyword=AI图像处理&type=all
|
||||
```
|
||||
|
||||
#### 响应示例
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "操作成功",
|
||||
"data": {
|
||||
"courseCount": 89,
|
||||
"workflowCount": 67,
|
||||
"totalCount": 156,
|
||||
"categoryStats": [
|
||||
{
|
||||
"categoryName": "人工智能",
|
||||
"count": 45
|
||||
},
|
||||
{
|
||||
"categoryName": "图像处理",
|
||||
"count": 32
|
||||
},
|
||||
{
|
||||
"categoryName": "机器学习",
|
||||
"count": 28
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 数据结构说明
|
||||
|
||||
### SearchResultItem
|
||||
|
||||
| 字段名 | 类型 | 说明 |
|
||||
|--------|------|------|
|
||||
| id | Long | 内容ID |
|
||||
| type | String | 内容类型:course/workflow |
|
||||
| title | String | 标题/名称 |
|
||||
| description | String | 描述 |
|
||||
| coverUrl | String | 封面图URL |
|
||||
| price | String | 价格 |
|
||||
| category | String | 分类 |
|
||||
| isFree | Boolean | 是否免费 |
|
||||
| likeCount | Integer | 点赞数 |
|
||||
| level | Integer | 访问级别(仅课程) |
|
||||
| duration | String | 课程时长(仅课程) |
|
||||
| viewCount | Integer | 观看次数(仅课程) |
|
||||
| commentCount | Integer | 评论数(仅课程) |
|
||||
| vipType | String | VIP类型(仅课程) |
|
||||
| rating | Integer | 评分(仅工作流) |
|
||||
| creator | CreatorInfo | 创建者信息 |
|
||||
| createTime | String | 创建时间 |
|
||||
| updateTime | String | 更新时间 |
|
||||
|
||||
### CreatorInfo
|
||||
|
||||
| 字段名 | 类型 | 说明 |
|
||||
|--------|------|------|
|
||||
| id | String | 创建者ID |
|
||||
| username | String | 创建者用户名 |
|
||||
| avatarUrl | String | 创建者头像URL |
|
||||
|
||||
### VIP类型说明
|
||||
|
||||
| level值 | vipType | 说明 |
|
||||
|---------|---------|------|
|
||||
| 0 | free | 免费用户 |
|
||||
| 1 | normal | 普通用户 |
|
||||
| 2 | vip | VIP用户 |
|
||||
| 3+ | svip | 超级VIP用户 |
|
||||
|
||||
## 功能特性
|
||||
|
||||
### 1. 多类型内容支持
|
||||
- 支持同时搜索课程和工作流
|
||||
- 可通过`type`参数过滤特定类型内容
|
||||
- 返回结果中明确标识内容类型
|
||||
|
||||
### 2. 智能搜索
|
||||
- 支持标题、描述、分类的模糊匹配
|
||||
- 相关度排序算法优化搜索结果
|
||||
- 支持多种排序方式
|
||||
|
||||
### 3. 高级过滤
|
||||
- 分类过滤:按内容分类筛选
|
||||
- 免费内容过滤:仅显示免费内容
|
||||
- 创建者信息:显示内容创建者详情
|
||||
|
||||
### 4. 分页支持
|
||||
- 灵活的分页参数控制
|
||||
- 返回完整的分页信息
|
||||
- 支持大数据量搜索
|
||||
|
||||
### 5. 统计信息
|
||||
- 提供搜索结果统计
|
||||
- 分类分布统计
|
||||
- 各类型内容数量统计
|
||||
|
||||
## 使用建议
|
||||
|
||||
### 1. 搜索优化
|
||||
- 使用具体的关键词获得更准确的结果
|
||||
- 结合分类过滤提高搜索精度
|
||||
- 合理使用排序参数优化用户体验
|
||||
|
||||
### 2. 性能考虑
|
||||
- 建议使用适当的页面大小(10-50)
|
||||
- 避免过于宽泛的搜索关键词
|
||||
- 优先使用GET接口进行基础搜索
|
||||
|
||||
### 3. 前端集成
|
||||
- 实现搜索建议和自动补全
|
||||
- 提供搜索历史记录
|
||||
- 支持搜索结果的多种展示方式
|
||||
|
||||
## 错误码说明
|
||||
|
||||
| 错误码 | 说明 |
|
||||
|--------|------|
|
||||
| 400 | 请求参数错误(如关键词过短、类型无效等) |
|
||||
| 500 | 服务器内部错误 |
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有搜索接口均支持匿名访问,无需身份认证
|
||||
2. 搜索关键词最少需要2个字符
|
||||
3. 搜索结果仅包含已审核通过的公开内容
|
||||
4. 接口返回的价格字段为字符串格式
|
||||
5. 创建者信息可能为空(对于已删除的用户账户)
|
||||
Reference in New Issue
Block a user