个性化搜索的几个阶段

在电商领域里,搜索是一种最直接的用户消费的场景。每个用户进入一个app,都有自己的一些意图,比如想买鞋子、想买衣服,而且对一些品牌以及颜色风格都有一定的要求。因此搜索对于商品的触达是非常重要的。

我这里就针对自己的理解,对个性化的搜索做一个粗略的总结。一般来说app内的搜索都会经历下面几个阶段:

  • 应用的初期:基于关键字的搜索
  • 应用的发展期:基于主副标题的全文检索
  • 应用的成熟期:针对搜索进行排名优化
  • 应用的进化期:个性化的搜索

下面就针对各个阶段描述下大概的过程。

关键字搜索

在应用最开始的阶段,应用内的内容不多,用户量也比较小,比如刚刚建立起来的电商网站和应用商店等。主要可以借助关键字进行搜索的匹配的,比如电商网站存储下面的表:

关键字 商品
耐克 001
Nike 001
阿迪达斯 002
三叶草 002
adidas 002

这样在搜索的时候可以直接基于关键字定位到商品。这种方式针对于最基本的数据库就可以实现。

全文检索

随着应用的完善,直接基于关键字的匹配难以维护。因为商品逐渐增多,用户搜索的关键字变化也越开越大,单靠业务规则来定义关键字和商品的关系就太麻烦了,因此就引入了全文检索的系统。

关于全文检索的技术,说的通俗一点,就是维护了关键字跟相关“文档”的关系。举个典型的例子——词典,我们想要在词典中快速查一个英文汉字最简单的方式,就是通过目录进行定位,然后懂啊指定的页码去查找对应的字;而不是一页一页的遍历寻找。

比如,在商品的列表中,商品的主标题有下面的内容:

  • 001doc的内容是:“2017年耐克最新款”
  • 002doc的内容是:“小明同款 黑色耐克”
  • ...

然后针对上面的文档进行分词建立倒排索引,就形成了:

关键字 文档位置
耐克 001doc,2,3 002doc,4,5
阿迪达斯 003doc,6,7 004doc,1,3

这样搜索耐克的时候,就可以直接基于后面的文档位置定位到目标的内容。

从另一方面来说,商品主要的搜索内容来源就是主标题和副标题。大家有兴趣的可以参考淘宝京东,看一下它们的商品标题的定义规则。当然商品的标题也是需要经过统一的设置培训的,不能卖一个牙膏,结果起的名字是一个身穿阿玛尼手握iphone x,带着阿玛尼开着玛莎拉蒂的b血型双子座青春美少男早晨专用的牙膏——这不是扯淡么!

试想一下,搜索阿玛尼的时候,搜出来这个牙膏,得有多崩溃。因此,app的管理员一定要做好商品维护的培训,尽可能的让商品的标题突出商品的核心竞争力、当下热门的话题、主要的属性用途等等,尽量不要放一些不相关的内容。

主副标题定义好,就可以直接基于一些全文检索系统实现检索查询了。比如Elasticsearch, es也支持各种分词的插件,也可以让用户自定义分词插件。这样主副标题会根搜索的关键词以同样的方式进行分词,分词后才能通过关键字进行搜索。

另外,要注意的是搜索要符合用户的操作习惯。比如在淘宝中,搜索关键词运动鞋就会出来匹配的商品;搜索运动鞋 男 白色,就会出现白色的男款运动鞋,而不是白色的衣服、性的洗面奶、女性的运动鞋。当然,如果没有同时满足几个条件的商品,可以提示没有xxx相关的商品,我们为您推荐下面的商品,然后就可以使用or的关系进行搜索了。

搜索排名优化

基本的全文检索已经做完了,默认来说,elasticsearch按照关键词的匹配做的分值的排序。各种app可以根据自己的业务需求,来进行排序规则的设置。比如一半的电商平台,都会又很多的卖家入驻,因此卖家之间会形成竞争的关系。比如a店铺卖阿迪的鞋子,b店铺也卖,那么搜索阿迪的时候,到底优先显示哪一家的呢?

这就涉及到排名的优化了,不同的商家信誉、客服的态度是不一样的,商品的质、销量也是不一样的。因此就可以根据商品相关的属性以及商家相关的属性进行排序。

商品的属性,有销售额、下单量、退货率、转化率、折扣、价格、上线的日期、适合的季节、pv、浏览的停留时间、库存等等

商家的属性,有pv、uv、关注数、图片的质量和数量、销量、销售额、转化率、专柜动态、退货率、客单价、复购率、im在线时间、im响应时间、发货的速度等等

根据这些属性,就可以针对搜索匹配的商品进行排序了。

个性化搜索

当应用趋于稳定、用户增长到一定层度时,就开始注重用户的体验了。比如一个男性用户搜索鞋子和女性搜索鞋子,我们期望看到的效果是不一样的,这其实就是个性化搜索。

具体大厂们的做法我们时不得而知的,知道也不敢乱说,因此只能通过网上公开的一些信息,来揣测琢磨一下,如果我们自己想要做,该怎么实现。

那么我这里有两种思路:

基于用户模型添加关键字

在用户积累到一定程度时,可以通过用户的交互行为以及购物历史,构建用户画像——刻画出这个人喜欢的品牌、分类、购买力、喜欢的风格、性别等等。那么当用户搜索鞋子的时候,一方面我们可以在搜索框下面实时的进行关键字的推荐,比如淘宝的这个场景:

这样用户在看到推荐出来的热词时,就可以直接点击下方的搜索搭配词,进行精细化的搜索,

另方面,也可以默认在后台加上这个用户的一些属性,优先进行推荐搜索。这种方式实现起来也不难,比如借助elasticsearch, 如果搜索的是鞋子,那么关键字传输到后台时,可以直接查找一下用户模型,添加性别 —— 鞋子 女进行搜索。如果用户搜索的男鞋子,经过分词后,一样可以转换成鞋子 男,此时就不需要再去查询用户模型获得性别属性了。类似的,我们还可以增加喜欢的风格、购买力等属性。

不过这种方式是在商品搜索结果很多的时候推荐使用。

基于用户画像和物品画像进行商品匹配

另一种方式没有具体想好,大概的思路就是构建用户画像和物品画像。需要注意下面的问题:

  • 选取构建的特征是,需要注意用户特征和物品特征的对应关系。比如用户这边选取的是性别、年龄、喜欢的风格;物品这边就需要选取适合的性别、适合的年龄段、风格。
  • 注意特征的构建要统一到相同的维度

大致的流程是,获取用户特征、获取搜索匹配的200个商品以及它们的特征;然后就可以基于用户特征和物品特征做相似度计算,比如夹角余弦。这样做完相似度计算后,取前50个作为搜索的结果展现即可。

如果又一些深度学习的经验,也可以尝试基于深度学习做用户和物品的word embedding,然后直接计算它们的相似度。这种想法暂时还只是设想,具体如何实现还需要根据世纪的场景来做。

未来搜索的思考

现在知识图谱很火,如果能建立商品相关的知识图谱,那么搜索又可以更智能一些了。比如搜索angleababy穿过的阿迪鞋子,就会搜索出来angleababy在录制奔跑吧兄弟时,穿过的阿迪达斯的运动鞋。是不是感觉很有意思! 哈哈哈哈哈哈哈

参考

posted @ 2017-09-18 22:06  xingoo  阅读(3341)  评论(0编辑  收藏  举报