# 自然语言匹配宏观指标

> 通过自然语言找到唯一匹配的公开宏观指标编号

## 接口基本信息

- **接口名称**: `match_edb_displayid`
- **功能描述**: 根据自然语言问题匹配唯一且最相关的宏观经济指标，返回可用于数据查询的公开 `displayid`
- **数据更新频率**: 随宏观指标库更新
- **请求方法**: `POST`
- **API 路径**: `https://api.wanxingai.com/openapi/edb/match_displayid/`
- **认证方式**: `Authorization: Bearer sk-********`

---

## 输入参数说明

| 参数名 | 类型 | 必选 | 默认值 | 描述 | 示例 |
| --- | --- | --- | --- | --- | --- |
| `query` | str | **是** | — | 需要查询的完整自然语言问题 | `2025年乡村水电站的个数` |
| `count` | int | 否 | `5` | 参与筛选的候选数量，范围为 1–20 | `5` |

---

### 返回数据说明

成功时返回 `status=200`。指标编号统一为 `WX` 开头并跟随 9 位数字，例如 `WX567563093`。

| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| `status` | int | 业务状态码，`200` 表示成功 |
| `message.query` | str | 用户提交的原始问题 |
| `message.keyword_split` | str | 用于向量检索的精简关键词 |
| `message.count` | int | 检索到的候选数量 |
| `message.chosen` | object/null | 最终选中项，包含名称和公开编号 |
| `message.candidates` | array | 候选列表，每项包含名称、公开编号、频率和单位 |
| `error` | str | 失败原因，仅失败时返回 |

### 返回示例

```
{
  "status": 200,
  "message": {
    "query": "上海水电站个数",
    "keyword_split": "上海 水电站 个数",
    "count": 5,
    "chosen": {
      "name": "上海:乡村办水电站个数",
      "displayid": "WX843901243"
    },
    "candidates": [
      {
        "name": "上海:乡村办水电站个数",
        "displayid": "WX843901243",
        "frequency": "Y",
        "unit": "个"
      },
      {
        "name": "上海:城市供水(公共供水):水厂个数",
        "displayid": "WX095121532",
        "frequency": "Y",
        "unit": "个"
      },
      {
        "name": "上海:建制镇:污水处理厂个数",
        "displayid": "WX252670802",
        "frequency": "Y",
        "unit": "个"
      },
      {
        "name": "江苏省:乡村办水电站个数",
        "displayid": "WX504295528",
        "frequency": "Y",
        "unit": "个"
      },
      {
        "name": "上海:乡:污水处理厂个数",
        "displayid": "WX479373714",
        "frequency": "Y",
        "unit": "个"
      }
    ]
  }
}
```

---

## 使用示例

```python
import requests

url = "https://api.wanxingai.com/openapi/edb/match_displayid/"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer sk-********"
}
payload = {
    "query": "2025年乡村水电站的个数",
    "count": 5
}

resp = requests.post(url, json=payload, headers=headers)
resp.raise_for_status()
result = resp.json()
print(result["message"]["chosen"]["displayid"])
```

```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

HttpClient client = HttpClient.newHttpClient();
String json = """
    {
      "query": "2025年乡村水电站的个数",
      "count": 5
    }
    """;

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://api.wanxingai.com/openapi/edb/match_displayid/"))
    .header("Content-Type", "application/json")
    .header("Authorization", "Bearer sk-********")
    .POST(HttpRequest.BodyPublishers.ofString(json))
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
```

```curl
curl -X POST https://api.wanxingai.com/openapi/edb/match_displayid/ \\
  -H "Content-Type: application/json" \\
  -H "Authorization: Bearer sk-********" \\
  -d '{
    "query": "2025年乡村水电站的个数",
    "count": 5
  }'
```

### 注意事项

1. 建议传入包含地区、指标含义、统计口径和时间信息的完整问题
2. `displayid` 格式固定为 `WX` 加 9 位数字，不要自行修改或拼接
3. 该接口只匹配指标，不直接返回时间序列；请将返回编号传给“查询宏观指标数据”接口
4. 模型筛选和向量检索可能需要一定时间，请为 HTTP 客户端设置合理超时时间
