问题及现状
闲鱼搜索很多场景基于集团搜索中台能力,纵观闲鱼搜索链路,存在多角色(工程、算法工程、算法等)、多业务(闲鱼无忧购、租房、帖子等)、多节点(离线数据源聚合、在线召回、URF Rank等),具有明显的复杂性。并且闲鱼主搜仅存在一条链路支持搜索多业务发展,各角色、各业务、各节点处于高耦合串行迭代模式。在大数据量、多业务、多角色并行场景下,以下问题日益明显:
1、迭代效率低、排期长,无法满足新业务快速迭代诉求:主要体现在数据量大,单次迭代周期长,以及多业务、多角色串行操作,耦合严重;
2、风险高:不同业务、不同特性均在主引擎召回链路执行修改,侵入大,风险高;
3、干预能力弱,业务间混排能力不足:缺少干预扶持能力,无法有效为创新业务提供定制化孵化能力。
闲鱼一次请求完整流程如下:
注:QP,即Query Planner,主要用于预测用户query搜索意图。
SP在测试环节下调用拓扑示例如下:
关键节点:
blender是SP服务核心入口,主要职责包括解析用户query意图、引擎分页召回、搜索数据补齐等功能。
uniq_session是召回核心入口,通过引擎召回、分页处理、URF Rank等操作,获取最终商品列表
ha3_searcher是引擎召回入口,翻译用户query为HA3引擎查询query,请求引擎在线服务,召回满足条件商品信息
uniq_summary是商品信息补充入口,依据商品id列表,补齐商品详细信息并返回,最终在搜索结果页呈现给用户
背景概述
闲鱼搜索很多场景基于集团搜索中台能力,搜索引擎分为数据源聚合(离线dump)、全量/增量/实时索引构建及在线服务等部分,通过集团内部一系列处理阶段,对客户提供高可用高性能的搜索服务。服务架构如下:
其中:
SP/SPL是集团内一套构建于Wunder上的开发工具,提供开发测试打包上线的视图界面以及一套业务函数库。HA3是一套基于suez框架的全文检索引擎,提供丰富的在线查询子句,过滤子句,排序子句,聚合子句且支持用户自定义开发排序插件。
Qrs用于接收用户查询,将用户查询分发给Searcher,收集Searcher返回的结果作整合,最终返回给用户。Searcher是搜索查询的执行者,主要包括倒排索引召回、统计、条件过滤、文档打分及排序及摘要生成。在实际