1、物流车货匹配业务中的搜索排序平台实践满帮集团车货匹配团队负责人目录物流车货匹配业务场景简介 系统研发目标 车货匹配业务搜索排序平台系统架构 设计要点 未来展望货主发布货源信息,司机主要通过搜索列表来进行找货,但场景有细分物流车货匹配业务场景简介货源消息有比较高的时效性 列表召回与排序考虑了价值性、公平性物流车货匹配业务场景简介时间轴1322TnTn-1Tn-2Tn-3Tn-512321111匹配目标:效率!司机货主请求时间货源信息同颜色代表匹配或近似匹配-装卸货地-距我附近-车长范围-车型高价值货源召回20分钟无反馈货源平台 根据算法自动刷新特定路线和场景下穿插出发地周边 无反馈货源不同场景下
2、,工程与算法同学对场景策略并行扩展开发与部署系统研发目标底层召回与排序等服务实现的通用性、扩展性搜索排序策略的实现可以做到部分配置化平台稳定性及性能围绕匹配效率的策略优化搜索排序平台系统架构问题 早期逻辑实现不易扩展 领域模型抽象度不够设计要点-统一领域模型方法 将各场景模型,统一到一个领域模型,即SearchPlan。支撑如下场景:司机“找”货 货“找”司机ScenUserDeviceSearchInputQuery AnalyseRecallMergeRankSortPaginationRecall-1Recall-2SearchPlan ModelEnhanceSearchContext
3、SearchResult+Stage设计要点-统一领域模型调用层创建SearchContext 传入基本查询信息设计要点-统一领域模型一个SearchPlan实例 由配置出来的SearchStage组成execType 决定了Operator执行的方式(并行/串行)一个SearchStage实例则由StageExecutor和这个Stage中的Operator组成设计要点-“算子”的通用性与定制化问题 如何能够快速扩展实现搜索排序场景并不断迭代?设计要点-“算子”的通用性与定制化例子 多“楼层”召回排序司机进入某场景搜索入口出发地选择“城市/区”目的地选择“城市/区”出发地选择“城市/区”目的
4、地选择“附近”精确匹配用户 所选“出发地”“到达地”发布时间距当前5分钟内发布时间倒序精确匹配用户 所选“出发地”“到达地”发布时间距当前5分钟以外发布时间倒序用户 所选“出发地”为“区”则上升到“市”发布时间距当前5分钟以外一层按装货距离排序;二层距离接近则按发布时间倒序Layer 1Layer 2Layer 3精确匹配用户 所选“出发地”目的地为用户附近X发布时间距当前5分钟内卸货距离小于20KMLayer 1Layer 2Layer 3按发布时间倒序用户输入精确匹配用户 所选“出发地”目的地为用户附近X发布时间距当前5分钟以外卸货距离N小于20KM按N由小到大排序召回与排序逻辑策略1精确
5、匹配用户 所选“出发地”目的地为用户附近X发布时间距当前5分钟以外卸货距离N小于20KM按N由小到大排序策略2精确匹配用户 所选“出发地”目的地为用户附近X发布时间距当前5分钟以外运输距离N小于20KM按N由小到大排序策略3出发地周边货源匹配发布时间距当前5分钟内按发布时间倒序Layer 4穿插在首部前两个位置(按50%概率展示)并行一路召回A类货设计要点-“算子”的通用性与定制化方法 查询分析“算子”按场景定制,拼接入参不同场景下,属性处理逻辑不一样按“场景”粒度决定放一个QA还是多个底层召回“算子”调用模板化按场景拆分设计要点-“算子”的通用性与定制化方法 框架层,召回、打分、排序等“算子
6、”的实现通用化?召回”算子“按不同召回场景,取其对应的业务层传入的召回参数设计要点-“算子”的通用性与定制化方法 业务层,则通过OperatorPreChecker等“胶水”代码关联起来在业务层召回“算子”的PreChecker实现 设计要点-“算子”的通用性与定制化方法 按场景将“算子”编排配置成SearchPlanTemplateLayer 1 Layer 2 Layer 3 多“楼层”SearchPlanTemplate 配置 设计要点-“算子”的通用性与定制化方法 SearchPlan在框架层中解析执行SearchContextObject poolXXXSearchPlan Temp