闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统(上)

简介: 电商搜索里都有啥?详解闲鱼搜索系统


 

作者:云钟

 

搜索是电商平台的核心流量入口,承载着平台主要的成交引导、意图收敛、活动投放。一个稳定、高效、可扩展的搜索系统是电商平台得以生存发展的基石。本文探讨如何构建完善的商品搜索系统,并根据闲鱼二手交易的差异化特性介绍闲鱼搜索系统的时效性优化。

 

一、 首先,构建一个搜索系统:电商场景的搜索

 

1. 搜索引擎

 

搜索系统的核心是搜索引擎,目前Lucene、ElasticSearch等开源引擎已十分成熟,阿里云也提供完整的搜索解决方案-OpenSearch,包含基于Ha3的搜索引擎(Heaven ask 3)及系列管控工具。这里,我们简单描述下搜索引擎内的基本概念作为导引,不过多深入引擎的具体实现(那将是一个冗长的话题,网络上的资料也随处可见)。

 

1) 搜索引擎的基本概念

 

分词

 

通过一定规则对文本分出单词,每个单词作为搜索的最小粒度单元。只有单词匹配,文档才能被召回,因此分词的准确是搜索精准的基础。如“红色摩托车”被分词成“红色”,“摩托车”,那它将被“摩托车”或者“红色”召回,如果分词成“红色摩托”,“车”,那它在引擎中被搜索出的概率就将大打折扣。

 

索引

 

_红色苹果手机doc1_

_红色苹果doc2_

“红色”,“苹果”->doc1doc2

_“手机”->doc1_

 

倒排索引称为反向索引、置入档案或反向档案,是一种索引方法。被用来存储在全文搜索下某单词在文档存储位置的映射。它是文档检索系统中最常用的数据结构。

 

正排索引也叫attribute索引或者profile索引,是存储doc某特定字段(正排字段)对应值的索引,用来进行过滤、统计、排序或者算分使用。正排索引中“正"指的是从doc-> fieldInfo的过程。

 

索引内容类型文本索引、空间索引、向量索引、数值索引

 

排序方法

 

匹配召回的结果集,通过特定的排序规则呈现。这里的排序规则,可以是单一维度的排序(如按价格、销量、发布时间);人工设置的权重分;相关性得分;特定场景的模型打分等。

 

基于这三个基本概念,搜索动作就可以简化地理解为“利用搜索词的分词结果,通过倒排索引匹配相应的文档,并依据特定排序方法有序透出”的过程。

 

搜索引擎仅提供搜索的基础能力,现实环境下的搜索场景当然要复杂的多,一款地图搜索和一款商品搜索所面临的挑战大相径庭。作为原材料的搜索引擎,该打造成何种形状,就看面对问题如何去设计模具了。

 

以闲鱼为例,搜索系统的整体架构如下:

 

image.png

闲鱼搜索系统架构图

 

2. 在线服务

 

上述架构图中的步骤1~8为一次搜索请求的完整执行流程

 

1) 请求接入模块->应用层

 

处理客户端或h5请求,请求接入模块的主要工作:参数校验、负载均衡、安全拦截。大部分的非法请求在这一层被拦截,避免进入系统核心模块后,导致不可预期的结果。应用层承载面向用户的业务逻辑:实际处理用户的业务请求,进行安全合规检测,同时并行请求投放的各类资源位。

 

 

 

2) 应用层->排序接入层

 

排序接入层是连接应用层与底层引擎的纽带,也是闲鱼搜索系统的最核心模块。他负责解析应用层的搜索请求,并对其进行合适流程编排:意图预测->请求拼串->搜索引擎召回->精排模型打分->重排规则->外部混排。

 

3) 排序接入层->意图预测模块

 

负责分词并预测搜索请求的实际意图,包括错词改写例:平果->苹果、同义词的合并(例:pingguo->苹果),类目预测(例:“苹果”出手机,还是出水果,它们各自的权重又是多少?)。

 

4) 排序接入层->搜索引擎

 

利用意图预测得到的信息,合并应用层参数,拼装出合法的搜索引擎请求,在搜索引擎内部历经海选、“粗排”、精排三个阶段,得到符合召回条件的商品集。

 

5) 排序接入层->精排模型打分

 

由于RT的限制,搜索引擎内部无法完成对海量商品复杂度较高的打分计算。这一步的工作,将引擎召回的商品集送入更精准的打分系统进行算分。为什么不把打分服务放在引擎内部?技术上是可行的,但由于打分服务变更频率频繁,而引擎相对稳定,处于系统迭代稳定性的考虑,独立拆分精排打分服务是更好的选择。

 

6) 排序接入层->混排模块

 

部分业务场景下,合作方有合并混排的诉求。独立拆分混排服务,隔离开发环境,让不熟悉主搜的外部开发同学在独立混排模块内做开发,即使服务异常,也不至于影响闲鱼本身的搜索能力。

 

7) 排序接入层->应用层

 

排序完成的商品列表,在应用层补充实时信息,如各类标签,促销信息等。同时,将商品搜索结果与广告等各类投放组装层最终的搜索结果页。

 

8) 应用层->接入层->客户端

 

将最终的搜索结果页返回到客户端或h5页面进行渲染。

 

3. 离线模块

 

与在线服务对应,搜索系统的离线模块负责数据的dump,清洗,索引构建。

 

1) 搜索引擎离线模块

 

image.png


全量索引Fullindex:数据源来自多表join后的全量业务数据,包含所有商品信息,由buildSerive构建好索引后提供给Ha3使用,系统内仅有一份全量索引。

 

批次增量索引IncIndex:根据周期内(通常30分钟到1小时)数据产出方发送的增量消息(如:商品修改信息),在BuildService上构建成索引段,定期发送给Ha3加载,引擎存在多段批次增量。

 

实时索引RtIndex将数据产出方实时生产的数据经中转Topic发送至Ha3,由Ha3引擎内的BS lib构建出实时索引加载使用,时效性为实时。在新的批次增量索引加载后,Ha3对实时索引作清理。

 

接下篇:https://developer.aliyun.com/article/1225878?groupCode=idlefish

相关文章
|
2月前
|
小程序 安全 Java
【社区每周】消息产品支持沙箱调试;搜索关键词产品接口升级(12月第四期)
【社区每周】消息产品支持沙箱调试;搜索关键词产品接口升级(12月第四期)
22 0
|
人工智能 自然语言处理 搜索推荐
阿里云开放搜索重磅发布!云时代搜索业务的价值重构
【云栖大会】阿里云开放搜索重磅发布~
6833 0
阿里云开放搜索重磅发布!云时代搜索业务的价值重构
|
2月前
|
小程序 算法
支付宝搜索,再添新能力!
支付宝搜索,再添新能力!
88 11
|
搜索推荐 UED 索引
闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统(下)
闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统
203 0
|
容灾 算法 数据可视化
闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统(中)
闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统
191 0
|
搜索推荐
《搜索端上动态化-搜索推荐事业部》电子版地址
搜索端上动态化-搜索推荐事业部
92 0
《搜索端上动态化-搜索推荐事业部》电子版地址
|
存储 前端开发 数据管理
淘宝安卓端搜索架构升级总结
推荐语:这篇文章图文并茂地介绍了淘宝搜索滚动容器的技术演进过程,结合代码讲解页面结构划分、数据处理、交互效果,还包含了对逻辑抽象、功能拓展的思考,最后总结了可复用的架构。非常具有实践意义,推荐阅读学习! ——大淘宝技术终端开发工程师 门柳
308 0
淘宝安卓端搜索架构升级总结
|
机器学习/深度学习 算法 搜索推荐
多媒体搜索现状(上) | 学习笔记
快速学习多媒体搜索现状(上),介绍了多媒体搜索现状(上)系统机制, 以及在实际应用过程中如何使用。
93 0
多媒体搜索现状(上) | 学习笔记
|
机器学习/深度学习 人工智能 算法
多媒体搜索现状(下) | 学习笔记
快速学习多媒体搜索现状(下),介绍了多媒体搜索现状(下)系统机制, 以及在实际应用过程中如何使用。
142 0
多媒体搜索现状(下) | 学习笔记
|
搜索推荐 SEO
怎样做好搜索下拉优化?百度搜索推荐词的推广方式
怎样做好搜索下拉优化?百度搜索推荐词的推广方式
214 0