3.7 KiB
3.7 KiB
批量匹配查询接口说明
接口地址
POST /match/batch
接口说明
该接口基于数据库实现快速批量匹配查询,传入用户ID,自动从数据库读取用户简历信息和所有岗位,进行匹配计算并按匹配度排序返回。
请求参数
请求方式
- 方法: POST
- Content-Type: application/json 或 application/x-www-form-urlencoded
请求参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| user_id | int | 是 | 用户ID |
| page | int | 否 | 页码,从1开始,默认1 |
| page_size | int | 否 | 每页数量,默认20,最大100 |
| filter_zero | bool | 否 | 是否过滤0分岗位,默认false |
请求示例
JSON格式请求
{
"user_id": 527,
"page": 1,
"page_size": 20,
"filter_zero": false
}
表单格式请求
user_id=527&page=1&page_size=20&filter_zero=false
响应参数
成功响应
{
"code": 200,
"msg": "查询成功",
"data": {
"list": [
{
"position_id": 2,
"match_score": 95,
"position": {
"id": 2,
"positon_name": "人工智能与大数据侦察职位二",
"education_require": "本科及以上",
"degree_require": "学士及以上",
...
}
},
{
"position_id": 1,
"match_score": 80,
"position": { ... }
}
],
"pagination": {
"page": 1,
"page_size": 20,
"total": 150,
"total_pages": 8,
"has_more": true
}
}
}
错误响应
{
"code": 400,
"msg": "参数错误:user_id不能为空且必须为数字",
"data": null
}
功能说明
1. 自动读取用户简历
接口会自动从数据库读取:
- 用户基本信息(
t_user表) - 教育经历(自动查找教育经历表)
2. 数据库快速过滤
使用SQL WHERE条件快速过滤岗位:
- 学历要求过滤
- 性别要求过滤
- 排除已删除的岗位
3. 匹配度计算
对通过初步筛选的岗位进行详细匹配计算:
- 硬性条件检查(一票否决)
- 软性条件评分(100分制)
4. 排序和分页
- 按匹配度降序排序
- 支持分页返回
- 可选过滤0分岗位
性能说明
- 数据库过滤:利用SQL索引快速筛选,从1万个岗位可能筛选到几百个
- 计算时间:只计算通过初步筛选的岗位,大幅减少计算量
- 响应时间:通常在1-3秒内返回结果
注意事项
-
教育经历表:系统会自动查找以下表名:
t_user_educationuser_educationt_educationeducation
如果您的教育经历表名不同,需要修改
getUserResumeFromDb方法中的表名列表。 -
年龄过滤:由于年龄要求是文本格式(如"18周岁以上、35周岁以下"),难以用SQL精确匹配,会在详细匹配时检查。如需优化性能,建议在数据库中添加
age_min和age_max字段。 -
专业要求:专业要求存储在
position_other_require的JSON字段中,会在匹配时解析。
使用示例
# 查询用户ID为527的匹配岗位,第1页,每页20条
curl -X POST http://your-domain.com/match/batch \
-H "Content-Type: application/json" \
-d '{
"user_id": 527,
"page": 1,
"page_size": 20
}'
后续优化建议
- 添加年龄字段:在
no_notice_position表中添加age_min和age_max字段,提升过滤效率 - 建立索引:对
education_require、sex_require等字段建立索引 - 缓存机制:如果简历不变,可以缓存匹配结果
- 专业分类表:建立专业分类映射表,优化专业匹配