背景
我们应用场景的人找货就是根据用户的搜索条件,从货源库中找到匹配的货源返回给用户。此场景的实现主要涉及货源渲染、召回、排序等主要环节。
人找货匹配架构1.0
search-app:
作为人找货的入口,为用户提供直接的货源条件筛选。
货源召回:
承接货源召回底层处理,对用户的搜索条件进行泛化、对ES搜索结果进行排序、对排序后结果进行缓存。
ES:
在线货源存储在Elasticsearch中,利用ES的搜索特性和脚本排序能力。
此架构在业务发展初期,很好的解决了搜货问题。但是随着业务和产品快速发展,对搜货的要求也变得越来越复杂,对排序的质量也越来越高,召回服务变得非常臃肿,在此架构下的功能迭代也很难适应人找货的精细化控制。
人找货匹配架构2.0
为了适应业务和产品的快速发展,对人找货实现更加精细化的控制,架构2.0中对货源召回做了拆分。
搜货引擎:
搜货引擎对执行搜货的具体过程进行流程编排,并对召回和精排后的货源进行缓存,为search-app提供数据分页等能力;
货源召回:
召回服务在功能上做了简化,在召回质量和性能上做了升级。提供了精准召回和用户特性的多路召回,大量增加了召回结果数量,对于每个用户在保留精准搜索结果的基础上,增加了每个用户特有的搜索意图;
精排:
精排对召回出来的货源进行精准排序,结合详细的货源特性、用户特征,实现对召回结果的多维度排序,并对排序后的结果进行截断。
架构升级到2.0后,很好的解决了业务和产品对于找货的精细化控制,召回和精准排序也独立进行功能迭代,提升了产品研发的效率。