电商搜索“优化商品排序”实践方案
编辑导语:搭建搜索功能不难,难的是如何提高搜索质量,帮助用户快速找到心中所想的内容或商品,那么搜索结果的相关性排序则是影响用户体验最关键的一环,本文通过电商行业的实际业务需求结合阿里云的开放搜索系统的解决方案,和大家聊一聊如何通过搜索的优化,助力业务GMV的转化。
一、案例背景
某导购类电商APP,与淘宝天猫等一线商家合作,亿级商品索引量,类目和子类目多层嵌套,商品有不同子款式和尺码,搜索和筛选需求复杂。
通过采用分销+券模式,优惠券帮助普通C用户降低了单品价格,分销模式帮助推广者B增加了用户数量,平台获得分成;用户下单后还可以返现金和优惠券,从而提升复购率。
其中搜索的流量占比站内流量60%以上,所以对于搜索结果的召回和排序有极高的要求,衡量搜索效果的直接指标就是成单转化率。
二、需求反馈
业务不断发展,用户量激增,导致搜索延迟,数据更新延迟情况,用户体验不好;需求开发团队针对提升CTR、CVR的业务指标10%的角度,优化现有的核心功能。
三、需求分析
电商行业中,“搜索”是帮助用户定位自己想要的商品提升转化的重要渠道;搜索引擎的效果优化是一个很大的话题,在查询意图理解阶段可以有语义理解、命名实体识别、词权重分析、拼写纠错等优化手段。
在排序阶段更是有很多优化干预的空间,通过配置查询分析策略和调整排序公式,我们对于效果优化可以有很大的发挥空间,再通过AB测试来对比不同优化策略的效果表现,我们可以做到效果优化心中有数。
业务指标数据中“点击率和转化率”可以直观反映了搜索结果页的商品结果是否满足用户的需求。
优化召回和排序结果可以帮助用户快速找到心中所想的内容,是改善用户体验,降低跳出率,促进用户转化率的最好方法。
四、自建Elasticsearch还是黑盒OpenSearch?
之前的几篇文章都是以黑盒OpenSearch 为最佳实践进行分析的,很多同学咨询和ES的区别,今天简单列了几点,仅供参考。
1. 自建Elasticsearch分析
1)人力成本压力
精准分词、查询Query的智能语义理解、搜索结果的排序算法,每个方向分别至少需要2个资深算法工程师做全人力投入。
2)数据不足
分词和查询Query的语义理解方面做到业务可用的效果,至少需要百万级有标注的商品和电商搜索关键词数据做训练。
3)投入大量精力不断调试
解决查询延迟问题,复杂的查询请求(比如拼音搜索)和高并发场景下往往会遇到查询耗时猛增的情况,想要做调优不仅要优化查询语法,集群内节点职责的分配、集群负载、索引的分片数和副本数等也需要花精力琢磨和尝试做调优。
4)运维工作占用时间比做业务还长
会面临服务器宕机恢复、数据备份、机器容灾处理、安全防护、索引优化等细碎繁琐的工作;急需扩容的时候还得机器采购,服务重新部署,总的来说运维侧至少需要1人全精力投入。
5)自建费用分析
经调研,数据量大、存储空间要求高的情况下肯定自建价格更低,但同理花费的精力也是很高的。
2. 黑盒-阿里云开放搜索分析
1)淘宝背书
阿里自主研发,淘宝天猫同款的搜索引擎,系统稳定性较好。
2)数据接入不够灵活
仅支持RDS、ODPS、POLARDB、API/SDK数据接入方式。
3)部署简单,不需要运维
从测试到正式接入差不多10–15天左右,就可以实现黑盒功能(查询语义理解、排序、搜索引导、行业模型,干预模型等)。
4)费用分析
按存储容量和计算资源的大小进行收费,体量越大费用越高,同理对搜索要求不高,或者对数据量不大的情况,像20GB,1000LCU的完全可以考虑黑盒产品。
多场景不同索引需购买多个实例,针对实例较多的,费用相比较高。但从节省的人力成本上看,整体性价比还是较高的。
电商是一个针对搜索效果要求很高的场景,所以综合考虑业务方还是选择了阿里云的开放搜索系统。
五、阿里云开放搜索解决方案
Query在开放搜索的执行流程:
开放搜搜的优化方案:
1. 查询意图理解优化方案
可以参考上一篇文章:《电商搜索“想用户所想,提高搜索结果质量”实践方案》
预置好的搜索功能,即插即用,高效的解决开发团队中缺少合适算法人才难以快速实现搜索效果的难题。
2. 开放搜索-类目预测功能
排序不仅仅是按销量、按人气、按价格去排,更应该直达客户心里,把搜索意图匹配的产品排在更前的位置。
类目预测是基于物品的类目信息改善搜索效果的算法功能,类目预测根据用户的查询词来预测用户想要查询哪个类目的结果,结合排序表达式,可以使得更符合搜索意图的结果排序更靠前。
例如,用户搜索“华为”:
大部分人意图其实是想获得“华为手机”,但因为销量大小、价格高低、店铺等级等各种原因,存在“华为手表”等配件商品排在“华为手机”更前面。
当我们训练“类目预测模型”,模型就会表达出一个信息,根据行为数据统计发现点击“手机”类目要比点击“配件”类目的人多很多,那么模型会给出这样的预测结果。
对于“华为”这个query来说,“手机”类目与“华为”的相关度,比“配件”类目与“华为”的相关度高,所以在计算每个物品的排序分的过程中,“手机”类目下的物品所获得的得分要比“配件”类目下的物品得分高,从而“手机”类目下的物品会排在更前面。
这样的排序结果才是一个比较符合用户预期的结果,用户才更有可能点进去了解详情,从而提升搜索的业务价值,提升CVR的业务指标。
3. 排序算法优化
可以使用表达式实时调整排序结果,紧跟业务需求。
1)粗排
从命中的文档集合里海选出相关文档,详细机制看下图:
2)精排
对粗排的结果做更精细筛选,支持任意复杂的表达式和语法,详细机制看下图:
3)相关性算分策略
取召回的rank_size(目前是100万)个文档按照粗排表达式的定义进行算分;取粗排分最高的N个结果(百级别)按照精排表达式进行算分,并排序;然后根据start与hit的设置取相应结果返回给用户。
如果用户获取的结果超过了精排结果数N,则后续按照粗排分数排序结果继续展现。
4)引用智能排序人气模型
离线计算的模型,淘宝搜索最基础的排序算法模型。
人气模型会计算量化出每个商品的静态质量及受欢迎的程度的值,不断训练统计形成人气分,构建更精细化的排序模型,精准命中搜索需求,将人气模型involve成为排序的一个因子,搜索结果的转化率还会有质的飞跃。
每个特征从以上4个维度中各取一到两个进行组合,再从历史数据中统计该组合特征最终的特征值。
比如,商品(实体)最近1天(时间)的曝光(行为)量(统计指标)、商品所在店铺(实体)最近30天(时间)的销量(行为类型+统计维度)等等。
由以上方法产生的特征数量级,相当于4个维度的笛卡尔积。
4. 聚合打散子句-distinct:
平衡“优质商品”和“新发布商品”的展示机会。
打散子句可以在一定程度上保证展示结果的多样性,以提升用户体验。
如一次查询可以查出很多的文档,但是如果某个用户的多个文档分值都比较高,则都排在了前面,导致一页中所展示的结果几乎都属于同一用户,这样既不利于结果展示也不利于用户体验。
对此,打散子句可以对每个用户的文档进行抽取,使得每个用户都有展示文档的机会。
以上就是今天我要和大家分享如何快速高效解决电商搜索相关问题的解决方案,希望对大家有所帮助~
预告:下一期,会针对【搜索引导】上下两篇内容和大家聊一聊搜索相关功能的解决方案。
作者:KKai,B端产品运营
本文由 @KKai 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自 Pexels,基于 CC0 协议
本文由 @KKai 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
图片缺失的问题,我在知乎找到一篇一模一样的文章 ,大家可以点这个链接查看 https://zhuanlan.zhihu.com/p/203177908
好多图片看不到,好像是 阿里内部的资源服务器地址,需要用域账号或者工作账号登录才能看到
机制的流程图都没有了呢,有没有什么地方能更新下呀
谢谢作者
高手