十万个为什么 API 关键词检索技巧:keyword 命中规律与避坑
十万个为什么 API关键词检索keyword命中规律免费接口 # 十万个为什么 API 关键词检索技巧:keyword 命中规律与避坑
> 接口:十万个为什么(apiCode=1706)· 接入点:列表(1706-1) · 免费 · 请求方式:POST/GET · 返回格式:JSON · 适用人群:已接入开发者 / 运营 · 阅读时间:约 6 分钟
## 核心要点
- 列表接入点 `keyword` **必填**,是检索的唯一入口;它按关键词匹配问题标题/内容。
- 命中结果量差异很大:常见词(如"地球")示例返回 `allNum=210`,冷门或过长短语可能很少甚至为空。
- 少结果时优先"缩短为核心名词""换近义词",而不是反复加长句子。
## Why:关键词选得好,体验差很多
孩子问"为什么天空是蓝色的",如果直接把整句塞进 `keyword`,大概率命中寥寥。接口是按关键词检索,不是语义问答。把长问题提炼成核心名词("天空""蓝色"),命中率立刻提升。这篇讲清楚命中规律和几个避坑点。
## What:keyword 参数速览
| 项 | 说明 |
|----|------|
| 参数 | `keyword`(列表接入点,必填) |
| 示例 | "地球" → `allNum=210` |
| 配套 | `page` 控制翻页 |
| 返回 | `contentlist[{id,title}]`、`allNum`、`allPages` |
## How:检索实践
**步骤 1 — 必填校验**
```python
import requests
APP_KEY = "YOUR_APPKEY"
def search(keyword):
if not keyword or not keyword.strip():
raise ValueError("keyword 为必填项,不能为空")
r = requests.post("https://route.showapi.com/1706-1",
data={"keyword": keyword.strip()},
params={"appKey": APP_KEY},
headers={"content-type": "application/x-www-form-urlencoded"},
timeout=10).json()
body = r["showapi_res_body"]
if body.get("ret_code") != "0":
raise RuntimeError(body.get("remark"))
return body
```
**步骤 2 — 长问题提炼为核心名词**
```python
# "为什么天空是蓝色的?" -> 取核心名词
candidates = ["天空", "蓝色", "天为什么蓝"]
for kw in candidates:
body = search(kw)
print(kw, "命中", body["allNum"], "条")
# 选命中量最合理的一个展示
```
**步骤 3 — 少结果兜底**
```python
body = search("天空")
if int(body["allNum"]) == 0:
# 换近义词或缩短:天空 -> 天
body = search("天")
```
## 返回示例与解析
`keyword="地球"` 返回 `allNum=210`、`allPages=5`、`maxResult=50`,`contentlist` 含"地球名片""地球同步轨道和地球静止轨道"等。可见匹配是"包含该关键词的问题"。
## 进阶 / 边界
- **空结果处理**:`allNum=0` 时给"没找到相关问题,换个说法试试",不要当成接口错误。
- **不要整句检索**:把"为什么…"整句作 keyword 命中很低,提炼名词效果更好。
- **档位成本**:每次检索是一次列表调用,计入免费档位;热门词结果可缓存(见[《免费档位下:用缓存策略节省调用次数》](https://www.showapi.com/guides/why100k-free-tier-cache-1706))。
## FAQ
**Q1:keyword 可以不传吗?**
不可以,`keyword` 是必填项,缺失会调用失败(看 `remark`)。
**Q2:传整句话能搜到吗?**
可能命中很少。接口按关键词匹配,建议传核心名词。
**Q3:allNum=0 是接口坏了吗?**
不一定,通常是该词无匹配问题,换近义词或缩短再试。
**Q4:支持多个关键词吗?**
文档仅给出单个 `keyword` 参数,未提及多词/布尔检索,按单关键词使用。
**Q5:搜索有热度/排序字段吗?**
返回未提供热度或排序字段,结果顺序以接口实际返回为准。
## 相关能力 / 下一步阅读
- [十万个为什么 API 分页查询:page / allPages / allNum / maxResult 详解](https://www.showapi.com/guides/why100k-pagination-1706)
- [十万个为什么 API:5 分钟接入,从第一条问答到完整详情](https://www.showapi.com/guides/why100k-quickstart-1706)
- [十万个为什么 API 免费档位下:用缓存策略节省调用次数](https://www.showapi.com/guides/why100k-free-tier-cache-1706)
- **本系列共 11 篇**:查看[十万个为什么 API 指南总目录](https://www.showapi.com/guides/why100k-guides-1706)