4.2 KiB
4.2 KiB
search — 搜索
支持多种搜索类型,通过 scope 参数切换 tab,来指定不同的搜索结果 tab 页面。
接口
/store/search
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
keyword |
string | 是 | 搜索关键词 |
scope |
int | 否 | 搜索类型。Agent 应按下方“scope 选择指引”显式选择;未传时服务端默认 10(电子书) |
maxIdx |
int | 否 | 翻页偏移,默认 0 |
count |
int | 否 | 每页数量,不传则服务端默认 15。用户未指定数量时不要传此参数 |
scope 对应关系:
| scope | 名称 | 说明 |
|---|---|---|
0 |
全部 | 综合搜索,results 中包含多个分组;适合用户只说“搜一下”且未限定类型 |
10 |
电子书 | 只搜电子书(不含网文小说);适合用户明确“搜书/找书/搜某本书” |
16 |
网文小说 | 只搜网文小说 |
14 |
微信听书 | 有声书/专辑/播客(三者同义) |
6 |
作者 | 搜索作者 |
12 |
全文 | 搜索书籍正文内容 |
13 |
书单 | 搜索书单 |
2 |
公众号 | 搜索公众号 |
4 |
文章 | 搜索公众号文章 |
scope 选择指引(Agent 根据用户意图自动选择):
- 用户明确说"搜书""找书""查某本书"或请求获取 bookId →
scope=10(电子书) - 用户只说"搜一下 xx",未说明要搜书/作者/文章/公众号等具体类型 →
scope=0(全部) - 用户说"网文""网络小说" →
scope=16(网文小说);如果只是普通语义中的"小说"且想找书,仍用scope=10 - 用户说"听书""有声书""播客""专辑" →
scope=14 - 用户说"搜一下 xx 作者""查作者 xx" →
scope=6 - 用户说"书里提到了 xx""全文搜索" →
scope=12 - 用户说"有什么书单""推荐书单" →
scope=13 - 用户说"搜公众号" →
scope=2 - 用户说"搜文章" →
scope=4 - 不要把"没特别指定"同时解释成
scope=10和scope=0;判断标准是:有明确找书意图用scope=10,泛搜索用scope=0。
回包(V3 格式):
| 字段 | 说明 |
|---|---|
sid |
搜索会话 ID |
hasMore |
是否有更多(1=有, 0=无) |
results |
搜索结果分组数组 |
results[].title |
分组标题(如"电子书""作者") |
results[].scope |
分组类型 |
results[].scopeCount |
该分组总结果数 |
results[].currentCount |
本次返回数量 |
results[].books |
书籍/结果数组 |
results[].books[].searchIdx |
搜索序号(用于翻页) |
results[].books[].bookInfo |
书籍信息对象 |
results[].books[].bookInfo.bookId |
书籍唯一标识 |
results[].books[].bookInfo.title |
书名 |
results[].books[].bookInfo.author |
作者 |
results[].books[].bookInfo.cover |
封面图 URL |
results[].books[].bookInfo.intro |
书籍简介 |
results[].books[].bookInfo.publisher |
出版社 |
results[].books[].bookInfo.category |
分类 |
results[].books[].bookInfo.payType |
付费类型 |
results[].books[].bookInfo.price |
价格(分) |
results[].books[].bookInfo.soldout |
是否下架 |
results[].books[].readingCount |
在读人数 |
results[].books[].newRating |
评分(0-100) |
results[].books[].newRatingCount |
评分人数 |
results[].books[].newRatingDetail |
评分标签(如 {"title":"神作"} ) |
scope=0(全部)时 results 会返回多个分组(电子书、作者、书单等),每个分组有自己的 title 和 scope。
工作流
- 根据用户意图选择
scope,调/store/search。 - 从
results取搜索结果。单 tab 模式(scope>0)通常只有一个分组;全部模式(scope=0)有多个分组。 - 展示结果:书名、作者、评分、在读人数、分类。已下架(soldout=1)需标注。
- 用户选择某本书后,调
/book/info获取完整信息。 - 翻页:
hasMore为 1 时,用最后一条的searchIdx作为下一页的maxIdx。
输出格式
- 搜索结果用编号列表展示,方便用户通过数字选择
- scope=0 时按分组标题(电子书/作者/书单…)分区展示
- 重点展示:书名、作者、评分、在读人数、分类