闲鱼技术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

相关文章
|
机器学习/深度学习 数据采集 人工智能
阿里巴巴首次揭秘电商知识图谱AliCoCo!淘宝搜索原来这样玩!
电商技术进入认知智能时代,将给亿万用户带来更加智能的购物体验。经过两年的探索与实践,阿里巴巴的电商认知图谱 AliCoCo 已成体系规模,并在搜索推荐等电商核心业务场景上取得佳绩,关于 AliCoCo 的文章《AliCoCo: Alibaba E-commerce Cognitive Concept Net》也已被国际顶会 SIGMOD 接收,这是阿里巴巴首次正式揭秘领域知识图谱。 本文将通过介绍 AliCoCo 的背景、定义、底层设计、构建过程中的一些算法问题,以及在电商搜索和推荐上的广泛应用,分享 AliCoCo 从诞生到成为阿里巴巴核心电商引擎的基石这一路走来的思考。
19187 1
阿里巴巴首次揭秘电商知识图谱AliCoCo!淘宝搜索原来这样玩!
|
运维 监控 搜索推荐
【电商搜索】现代工业级电商搜索技术-Ha3搜索引擎平台简介
【电商搜索】现代工业级电商搜索技术-Ha3搜索引擎平台简介
|
机器学习/深度学习 存储 算法
阿里云国际站:拍立淘-以图搜图中的图像搜索算法是怎么样的?
@luotuoemo飞机@TG 阿里云国际站:拍立淘-以图搜图中的图像搜索算法是怎么样的?图像搜索在现代搜索系统中扮演了重要角色,尤其在电子商务网站如阿里巴巴等,它更是一个必不可少的功能。拍立淘是阿里云国际站的一个以图搜图功能,它使用了复杂的图像搜索算法进行图片匹配和识别。以下是对该算法的简单描述。
|
搜索推荐 UED 索引
闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统(下)
闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统
507 0
|
容灾 算法 数据可视化
闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统(中)
闲鱼技术2022年度白皮书-服务端主题-电商搜索里都有啥?详解闲鱼搜索系统
575 0
|
存储 人工智能 算法
量子计算概述
量子计算概述
341 0
|
算法 数据挖掘 知识图谱
基于品类关系,虚拟类目如何建设?
类目-属性项-属性值体系(简称CPV)是淘宝建设中非常重要的基石,在商品的发布、管理,以及搜索场景下都大量应用。比如每个商品都有自己的类目、以及属性,而且需要发布在适合自己的类目下,才能够方便管理和搜索;在用户搜索的过程中,对Query的类目预测也是相关性中非常重要的一环。
6136 0
|
设计模式 算法 安全
什么是设计模式?设计模式有什么好处?如何高效学习设计模式?
什么是设计模式?设计模式有什么好处?如何高效学习设计模式?
763 1
什么是设计模式?设计模式有什么好处?如何高效学习设计模式?
|
运维 UED
闲鱼技术2022年度白皮书-推荐语
闲鱼技术2022年度白皮书
463 0
|
算法 搜索推荐
闲鱼技术2022年度白皮书-服务端主题-QCon直击|闲鱼推荐大规模应用背后的工程实践(上)
闲鱼技术2022年度白皮书-服务端主题-QCon直击|闲鱼推荐大规模应用背后的工程实践
529 0