淘宝搜索排序的目的是帮助用户快速的找到需要的商品。从技术上来说,是在用户输入关键词匹配到的商品中,把符合用户需求的商品排到第一位,其它的依次排在后续相应的位置。为了更好的实现这个目标,算法排序系统基本按三个方面来推进:
  一、算法模型
  当用户输入关键词进行搜索的时候,系统依据算法模型来给匹配到的每个商品进行实时的计算,并按照分数的大小对商品进行排序。
  对于好的算法模型,首先需要考虑我们能够有哪些特征因子可以应用。比如在网页搜索中,算法模型基本是按网页的重要性和相关性给网页计算一个分数,然后进行排序。这里的相关性,和重要性是网页排序模型中两个重要的因子。具体来说相关性因子是指搜索关键字在文档中出现的度数,当这个度数越高时,则认为该文档的相关程度越高。重要度因子比如Google的Pagerank,可以理解为一个网页入口超级链接的数目:一个网页被其他网页引用得越多,则该网页越有价值。特别地,一个网页被越重要的网页所引用,则该网页的重要程度也越高。
  考虑淘宝搜索的时候,有些特征因子是很容易能想到的,比如:
  A、文本的相关性:关键词和商品的匹配,匹配的程度,是否重要词的匹配,匹配词之间的距离等,都可能影响相关性。比如搜索“小鸭子洗衣机”的时候,一个商品的中心词是洗衣机的要比卖洗衣机配件商品的相关性高,小鸭子连在一起的相关性要比“小”和“鸭子”分开时候的相关性高等。文本相关性基本的计算方式可以参考BM25等。
  B、类目热点:淘宝数据的一个重要特质是每个商品都挂靠在类目属性体系下面,每个商品都做了一个很好的分类。在搜索过程中,同一搜索词的大量用户行为数据很容易聚焦到相应的热点类目,比如“手机”的搜索行为会集中到手机类目,而不是配件类目。
  C、图片质量:图片是电子商务网站非常重要的一个数据,图片是否精美吸引人,图片上是否有各种各样的“牛皮癣”,和商品匹配度等都很大程度上影响着用户的点击和购买决策。
  D、商品质量:每个商品都有不同的质量,商品的描述真实性,是否物美价廉,受人欢迎的程度等。
  E、作弊因子:类似于全网搜索有关键词堆砌,link spam,网页重复等等作弊的问题,电子商务搜索也面临同样的问题,比如商品关键词堆砌,重复铺货,重复开店,广告商品引流等等,也有商品特有的问题如价格作弊,交易作弊等,需要利用统计分析或者机器学习来做异常行为,异常规律的发现和识别并运用到排序中。
  F、公平因子:淘宝的商品很丰富,每个搜索词下都有足够多的商品在竞争,需要在相似质量的情况下让更多的商品和卖家有展示的机会,而不是像网页搜索一样是一个基本静态的排序,照成商品点击和展示的马太效应。
  类似的商品,卖家,买家,搜索词等方面的特征因子有很多,一个排序模型是把各种各样不同的特征因子组合起来,给出一个终的关键词到商品的相关性分数。只用其中的一到两个特征因子,已经可以对商品做一些基本的排序。如果有更多的特征参与到排序,我们可能得到一个更好的排序算法。组合的方法可以有简单的人工配置到复杂的类似Learning to Rank等的学习模型。
  那么如何衡量不同算法之间的优劣呢?