搜索功能对于电商类产品而言尤为重要,当用户带着明确的目的去搜索自己需要的产品时,却没有得到他想要的结果,这在很大程度上直接影响了用户对于产品的体验。本文作者结合自己的经验,来探讨关于电商类产品搜索功能应如何优化。
在讲主题之前想跟大家分享一下前些时间听到梁宁产品30讲里对用户画像的描述,里面有提到一组经典的用户画像大明、笨笨和小闲:大明呢对应的是对自己需求有明确认知的用户,脑子很清楚自己想要的是什么;笨笨则是对自己的需求只有模糊大概的方向,不清晰;至于小闲,想必大家也能猜得出来,主要是闲来无事就是想打发时间的用户类型。
B端采购产品面对的用户显而易见都是大明,他们都是带着明确的目标进行采购的,正是因为目标明确。所以在三种用户类型中,大明最依赖于搜索,他们的需求也是最简单的——快速找到自己想要的东西,价格实惠。因此搜索好不好直接影响到产品能否满足用户的需求。
一、面对的问题
第三方api接口质量差
因为是小公司的缘故,一开始搭建采购平台时接入的是某电商采购,但对方所提供的搜索接口质量太差、分词不准、召回率低或者召回数据量过大等等。打个比方:让你叫个周杰伦回来,要么周杰、杰伦、周杰伦都回来了,要么没人回,要么叫回的无关人员多的你都应付不过来了,简而言之就是问题多过对策。
自建搜索缺人缺资源
第三方的搜索接口太差,公司就已经做出了自己的搜索功能,但是人力物力有限,没有过剩的资源,再加上公司业务战线太长只能顾着拼命往前线赶,都无法顾忌这个路上的大坑,结果做了个烂尾的搜索。
虽然分词词库基于ik开源词库搭建,分词有了稍许改善,召回率也有了保障,但是分词结果依旧不精准,无法实现语义识别,根本不能满足大明用户的基本需求。
还是拿周杰伦举例:不仅来了周杰、杰伦和周杰伦,甚至还来了同名的阿猫阿狗。
二、老板的期望
不管做任何行业任何职业,老板都是一个躲不开绕不过的存在。做产品更是如此,因为很多小公司的老板就基本干着产品的活儿,所以跟你产品意见不合那就是家常便饭。
对于公司产品搜索功能,我们老板的期望还是比较谦虚的,仅次于国内知名电商平台的搜索体验就好了,不要100分,99分就行了。我的天,这真的是让我咬牙切齿了。
就我个人的体验来说,公司采购的搜索功能基本也就是个40、50分不及格的样子,加上公司没有专业做过搜索的产品,而我也是个新人,技术资源支持也不足,所以就算有心杀贼也无力回天。
问题总是接二连三的,骂人也是要骂的,但是事儿总得去做,毕竟总得跟老板表个态,就算面对不可能完成的任务,也必须抱着不破楼兰终不还的决心。
冷静思考一下:自己面对的问题主要集中在几个方面:搜索接口、分词、语义识别这三个方面。
基于这几点,通过几次产品技术的讨论会议,也算是确定了现阶段可以实施的优化方案如下:
三、优化的方案
1. 优化ik分词词库
大部分电商平台都是通过分词来提高商品的召回率以及相关度的排序,而分词词库则是保证分词准确的关键。上文里周杰伦的例子,正式因为分词词库里存在周杰、杰伦这些无效词,才使得会召回他们。
而ik词库分为基础词库、扩展词库和stopword,分词是根据基础词库里的词来分,扩展词库则是对基础词库的补充,而stopword里的词就是被过滤掉的词,因此优化ik词库采用三步走战略。
- 首先是清洗基础词库的无效字词,以非名词和相关度过低的字词为主;
- 其次是补充扩展词库,毕竟ik词库是只是个词库,没办法自动更新,与时俱进,它有周杰伦不一定有蔡徐坤,所以需要我们自己去新增;
- 最后就是增加stopword,这个网上搜索一下就有了,ik自带的stopword量很少,通过补充,可以有效地过滤掉一些不必的分词结果。
2. 关键词绑定类目来辅助语义识别
语义识别就是,让系统去召回周杰伦,系统知道周杰伦是男明星,而不会给你召回同名的其他人。而目前我们公司的能力,是无法从技术层面去实现搜索的语义识别,只会去全部召回匹配到标题名称里包含搜索关键词的商品。
为此只能通过人工的方式去将关键词和类目进行关联,相当于给关键词打了标签,找周杰伦只会在男明星的类目下去召回,保证了搜索结果的相关度。
小结
搜索功能的优化除了这些还有索引、排序等等,以上的优化方案都是基于我们公司的实际情况来说,也是为了满足大明用户的基本需求(可以搜到想要的东西)为出发点,虽然这些举措对搜索功能的优化起到一定的作用,但是最好的解决办法还是找到一个靠谱的接口或者是一个靠谱的分词词库。