中文文本相似度检测接口返回字段全解:like / likeValue / mostLike / ret_code 一文读懂
# 中文文本相似度检测接口返回字段全解:like / likeValue / mostLike / ret_code 一文读懂
> 元信息:接口/接入点 中文文本相似度检测接口(294/1、294/2)· 免费 · 返回格式 JSON · 适用人群 已接入或准备接入的开发者 · 阅读时间 约 6 分钟
## 核心要点
- 接入点 1(294/1)返回 **`like`**;接入点 2(294/2)返回 **`likeValue` + `mostLike`**——两者字段名不同,切勿混用。
- `ret_code` 业务状态码:0 为成功,非 0 为失败;失败原因看系统级 `showapi_res_error`。
- 系统级字段(`showapi_res_code` / `showapi_res_error` / `showapi_fee_num` / `showapi_res_id`)由平台统一封装,所有接口一致。
## Why:为什么必须分清字段名
很多开发者在批量场景(接入点 2)里照着单文本示例取 `like`,结果取不到值——因为接入点 2 根本不返回 `like`,而是 `likeValue` 和 `mostLike`。这是真实文档结构差异,不是接口 bug。本文把两个接入点的返回结构一次厘清,避免你反复踩坑。
## What:接口速览
| 项 | 接入点 1(294/1) | 接入点 2(294/2) |
|----|------|------|
| 地址 | `route.showapi.com/294-1` | `route.showapi.com/294-2` |
| 用途 | 两段文本两两比较 | 1 段文本 vs 一组候选文本 |
| 必填参数 | `t1`、`t2`(均为 String) | `t1`(String)、`t2`(**数组**) |
| 相似度字段 | `like` | `likeValue` |
| 匹配定位字段 | 无(仅返回分值) | `mostLike`(最匹配项下标) |
## How:逐字段解析
### 接入点 1 返回结构
```json
{
"showapi_res_error": "",
"showapi_fee_num": 1,
"showapi_res_code": 0,
"showapi_res_id": "67aaea24fb638c23e1d6fc6b",
"showapi_res_body": {
"ret_code": 0,
"like": 0.8164965809277261
}
}
```
| 字段 | 类型 | 含义 |
|------|------|------|
| `showapi_res_body.ret_code` | Number | 业务状态,0 成功,其他失败 |
| `showapi_res_body.like` | Number | 两文本相似度,0~1,越接近 1 越像 |
| `showapi_res_error` | String | 系统级错误,成功为空 |
| `showapi_res_code` | Number | 系统级状态,0 成功 |
| `showapi_fee_num` | Number | 本次消耗计费次数 |
| `showapi_res_id` | String | 本次请求唯一 ID |
### 接入点 2 返回结构
```json
{
"showapi_res_error": "",
"showapi_fee_num": 1,
"showapi_res_code": 0,
"showapi_res_id": "67aae9f2fb638c23e1c487be",
"showapi_res_body": {
"mostLike": 0,
"ret_code": 0,
"likeValue": 1
}
}
```
| 字段 | 类型 | 含义 |
|------|------|------|
| `showapi_res_body.ret_code` | Number | 业务状态,0 成功,其他失败 |
| `showapi_res_body.likeValue` | Number | `t1` 与最匹配候选的相似度,0~1 |
| `showapi_res_body.mostLike` | Number | **最匹配文本在 `t2` 数组中的下标**(即输入 `t2` 的序号) |
> 关键点:`mostLike` 是**下标**,不是相似度。拿到 `mostLike=0` 表示 `t2[0]` 与 `t1` 最相似,相似度用 `likeValue` 读取。
### Python 取值对照
```python
import requests
# 接入点 1
r1 = requests.post("https://route.showapi.com/294-1",
params={"appKey": "YOUR_APPKEY"},
data={"t1": "文本A", "t2": "文本B"}, timeout=10).json()
b1 = r1["showapi_res_body"]
if b1["ret_code"] == 0:
score = b1["like"] # 接入点 1 用 like
# 接入点 2
r2 = requests.post("https://route.showapi.com/294-2",
params={"appKey": "YOUR_APPKEY"},
data={"t1": "文本A", "t2": '["候选一","候选二","候选三"]'},
timeout=10).json()
b2 = r2["showapi_res_body"]
if b2["ret_code"] == 0:
idx = b2["mostLike"] # 最匹配下标
score = b2["likeValue"] # 对应相似度
print("最匹配候选下标:", idx, "相似度:", score)
```
## 返回示例与解析要点
- 系统级字段永远在外层,业务数据永远在 `showapi_res_body` 内——先判断 `showapi_res_body.ret_code`。
- 非 0 失败的具体原因看 `showapi_res_error`,文档未给出非 0 的具体枚举值,请勿臆测错误码含义。
## 进阶 / 边界
- 所有返回字段类型固定:`like` / `likeValue` 为 Number,`mostLike` 为 Number(整型下标)。
- 免费接口仍带 `showapi_fee_num` 计费字段,免费档位下通常为 1,仅作消耗计数。
- 无独立的"置信度""分类标签"等扩展字段,接口只产出相似度分值与(批量时)最匹配下标。
## FAQ
**Q1:接入点 1 和接入点 2 的返回值有什么区别?**
接入点 1 返回 `like`(相似度);接入点 2 返回 `likeValue`(相似度)和 `mostLike`(最匹配候选在 t2 数组中的下标)。字段名不同,取数时要对应。
**Q2:ret_code 非 0 代表什么错误?**
文档只定义 `ret_code`:0 为成功,其他为失败,未给出具体的非 0 枚举值。具体失败原因以系统级字段 `showapi_res_error` 的文案为准。
**Q3:mostLike 是相似度吗?**
不是。`mostLike` 是最匹配文本在 `t2` 数组中的**下标序号**;相似度要用 `likeValue` 读取。
**Q4:showapi_res_error 和 ret_code 有什么关系?**
`ret_code` 是业务层状态(在 `showapi_res_body` 内);`showapi_res_error` 是平台系统级错误信息(在外层),失败时看它获取原因。
## 下一步阅读
- [中文文本相似度检测接口:5 分钟从注册到第一条相似度结果](https://www.showapi.com/guides/text-similarity-quickstart-294)
- [中文文本相似度检测接口批量匹配:单文本 vs 候选库如何定位最相似项](https://www.showapi.com/guides/text-similarity-batch-294)
- [相似度阈值怎么定?用中文文本相似度检测接口做判重的工程实践](https://www.showapi.com/guides/text-similarity-threshold-294)
- **本系列共 12 篇**:查看[中文文本相似度检测接口指南总目录](https://www.showapi.com/guides/text-similarity-guides-294)