IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

天猫导航的内部机制揭秘

阿里技术沙龙 2013-08-12 13:35:58 累计浏览 2,156 次
本机暂存

作者:务达 (一淘及搜索事业部-搜索技术-算法技术-主搜索与商城)

   网购已经成为我们的习惯,当我们想买一样商品的时候,往往会先去网购的网站上输入Query进行搜索,搜索返回的页面一般会分成两部分,上面的是导航区,下面的SRP(Search Result Page)搜索结果页。分两种情形:

    1. 如果用户知道自己想要买的商品的详细信息,他可以输入针对性较强的Query,直接从SRP页面找到自己想要的结果;

   2. 如果用户并不清楚自己想要买怎么样的商品,他就只能输入较简单的Query, 此时返回的SRP页里很可能没有他想要买的,于是他就可能点击导航区推荐的一些类目和属性进行下一步的选择,从而找到自己想要的商品。我们的导航往往在第二种情况下起到作用。

   在我接手天猫导航的工作之前,一直以为导航区的类目和属性都是存储在某一个数据库的表里,是固定不变的, 根据Query里的关键字确定展现哪些类目和属性,如果Query包含的关键字一样,则展现的类目和属性也一样。其实天猫的导航展现是以智能的方式展现的,每个Query展现的导航都是与其类目和属性相关的,并且按照一定的算法进行排序。本篇文章以此为出发点,重点分析整个天猫导航的内部架构和排序算法,适合想对天猫导航的原理进行了解的新手读者。

   

   天猫导航从功能上分成类目导航和属性导航两类,从展现的方式上分可以分成qp推荐和引擎推荐两类。在排序的时候qp推荐的会排在引擎推荐的之前,引擎推荐的以补充为主,如果没有qp推荐的或者qp推荐的很少,才会在前端展示出来,否则则放在“更多”中。引擎补足的就是简单的按照线上商品数进行排序,具体点就是通过b2c merger加载宝贝,在search服务中建索引,再在 detail服务中存放详细的宝贝信息,ranker中对Query的宝贝数进行排序。而我们算法能产生作用的仅仅是qp推荐的部分。

   

   算法会离线产出一张[(Query , 搜索类目), 排好序的推荐id列表]的hash词表,由QP的导航模块加载后在线上提供服务,每一个Query在前端输入后,由前端调用QP服务来获得该Query和搜索类目下面的类目id或属性id推荐列表, 再调用forest来获取每个id对应的类目名称或属性名称,从而再前端展现出来。具体的工作原理图1所示:

  原图已失效

   

   QP类目导航的展现方式又分为:

   1.平铺

   2.直达

   3.父子类目展示

   4.属性推第一个类目的平铺展示

   具体跟推荐的类目列表中的类目权重相关。具体的类目推荐的流程如图2所示。

   原图已失效

   QP的属性推荐也是类似的,具体的底层数据处理和产出逻辑跟类目推荐类似,也是按照(Query,搜索类目)的点击,成交和商品数进行线性加权来排序。属性推荐分成了:

   1.根类目下属性

   2.公共类目下属性

   3.叶子类目下属性推荐三种

   如果在属性列表中只有一个属性值或者该属性值的分数占比超过阈值,则为属性预选,也叫做属性直达。具体如图3所示。

 原图已失效

   现在整个天猫导航区的展现pv每天达到3000万左右, 天猫智能导航承载着整个天猫search的导购重任。在全面理解当前智能导航的工作原理的基础上,对我们进行深入的导航优化将起到促进作用。

   

提示:本文同步发布于微信号{alibabatech}敬请关注。

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 15个最好的免费开源电子商务平台 (累计阅读 12,539)
  2. 好的API设计 (累计阅读 12,394)
  3. Twitter/微博客的学习摘要 (累计阅读 12,258)
  4. 面试题 – 为什么我的朋友圈不见了? (累计阅读 11,951)
  5. Facebook 网站架构 (累计阅读 11,109)
  6. 腾讯-1亿个数据取前1万大的整数-题解答 (累计阅读 10,071)
  7. Feed架构-我们做错了什么 (累计阅读 8,730)
  8. 搜索引擎的特殊用法 (累计阅读 8,119)
  9. 百度日本-四面楚歌 (累计阅读 8,003)
  10. 架构师给程序员的一封信 (累计阅读 7,986)