Files
1818web-hoduan/docs/search-api.md
2025-11-14 17:41:15 +08:00

6.5 KiB
Raw Blame History

内容搜索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

请求示例

GET /user/search?keyword=AI图像处理&type=all&freeOnly=false&page=1&size=20

响应示例

{
  "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

请求体

{
  "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 是否仅显示免费内容

请求示例

GET /user/search/stats?keyword=AI图像处理&type=all

响应示例

{
  "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. 创建者信息可能为空(对于已删除的用户账户)