来交代下近况:来了**煮工作一年多了,在经历了半年app迭代功能规划工作之后我终于迎来了第一个高级功能——搜索优化。
(不是说其他功能不高级,只是搜索是对我来说全新的领域,跟以往负责的工作大不相同,所以称之为高级)
01 背景
我所负责的是APP的内容线的工作,核心工作围绕留存率展开。
在进行数据分析后发现留存率与用户收藏次数有关,收藏越多,留存率越高。因此提高留存,就要提高收藏。
明确了留存的关键行为后,就该去探索用户发生关键行为的核心漏斗。
通过app的流量分析可以知道,大部分流量进入食谱详情页的路径是通过搜索,所以优化“搜索 → 浏览 → 收藏”这个路径,预测会得到最大的转化率。(实际上也是的)
02 过程
首先需要确定搜索的流程,大致确定为三步:
搜索前:热搜词、历史搜索等
搜索时:关键词联想、自动纠错等
搜索后:无结果的推荐、有结果时的排序等
这次挑搜索后的搜索结果排序来详细说说。
第一步:制定排序策略
排序其实就是比大小,所以方法是给排序结果计算分值,根据不同的关键词,搜出来的结果都有自己的分值,只要比较大小就可以算出排序列表。
接下来就是如何计算的问题,也就是哪些因素会影响排序分值,请往下看:
第二步:找参数
搜索结果排序这个东西,我在做的时候查阅了很多资料,但大多数资料都比较偏向底层的技术细节,比如说关键词匹配规则。
好在市面上有比较成熟的解决方案来解决底层的搜索逻辑,我们产品只需要决定关键词匹配哪些内容,以及赋多少权重即可。
更为重要的是除了相关度这个因素之外,搜索结果的排序还受到哪些因素的影响,以及他们是如何影响排序的。
前文有说到,收藏行为是用户留存的关键行为,所以食谱的优质标准中最重要的指标也是收藏率(收藏次数/浏览次数),因此收藏率会是搜索结果排序公式中的一项参数。
但是,如果只看收藏率也会有问题,比如当分子分母都非常小的时候,假如浏览次数是2,收藏次数是1,那收藏率就会有50%,这种极端情况出现。
为了减少这种极端,会加入另外一个参数,就是收藏次数。
于是到现在已经找好了三个参数:相关度、收藏次数、收藏率。
第三步:归一化
定好了参数后,由于这些参数几乎不在一个数量级,无法直接放进公式计算,因此需要先明确他们的范围:相关度数量级大约在100以内;收藏次数非常大,约为好几万,且不可控;收藏率范围在0~1之间。
因此我们需要把三个参数归一,便于计算。
由于数学一般,当时能想到的方法有两个:一种是对数,一种是分数。
我来说下我的理解:拿“收藏次数”这个参数来看,如果用对数的话,可以有一个变量,log2^A,A是收藏次数,如果用这个公式来计算的话,2个收藏跟2000个收藏差别不大,但还是无法避免前文所说“收藏和浏览次数都很小,但收藏率极高”的问题,且范围只是在一定范围内可控,仍然不知道如何跟“收藏率”放在一起计算。
于是模仿了“收藏率”公式:收藏次数/浏览次数,收藏次数也按照这样归一:分子是当前食谱的收藏次数,分母是当前搜索结果中的最大收藏次数。
这样这个参数就有两个变量,当收藏次数极低时,这个参数很小,收藏率对整个公式的影响不会是致命的。
于是仿照这个公式得出“相关度”的归一,得出最终计算排序分值的公式:A*当前相关度/最大相关度+B*当前收藏次数/最大收藏次数+C*当前收藏次数/当前浏览次数。
这样保证三个参数的取值范围都是0~1,后续只要根据不同关键词,调整A、B、C三个值,使收藏率高的食谱排在考前的位置即可。
03 结果和复盘
结果可想而知啦,通过搜索路径产生的收藏转化,提高了30%+。
当然这并不是高枕无忧的解决方案,由于我们的排序公式对所有词的搜索结果计算是一视同仁的,但是分析了关键词搜索趋势后发现,搜索词是可以聚类的,并不是没有规律,尤其是像食谱搜索这样的垂直领域,用户对每个(或者说每类)关键词搜出的结果有不同的预期。
比如说:用户会搜索食谱类目名称,如“下午茶”、“家常菜”、“创意菜”等,或者按照食材来搜索,如“鸡胸肉”、“三文鱼”等。
单看这两种类型的搜索词可以猜测出用户的搜索场景:搜索类目词的用户手上还没买食材,纯粹是来找灵感的,所以对新鲜感的要求比较高,两天来看到同样的东西就会失去热情,所以优化的方向应该是加入一个时间参数,越新的食谱排在越前面。
搜索食材词的用户大多已经拿买好了食材,这个时候找到食谱就行,对新鲜感的需求不如类目词,而是需要发掘长尾的食谱。所以此时优化的方向不会加入时间参数,而是在原来的公式上调整权重,让“相关度”的权重更大。
当然这还只是短期的策略,再往后如果资源允许的情况下,会加入协同过滤的算法,是将相似喜好的用户分组对待,更场景化。
比如与“我”喜好相似的用户搜索“家常菜”后点击或收藏的食谱,会排在“我”的搜索结果里更靠前的位置。
另外,由于食谱有时令性,用户在夏天搜索“家常菜”和在冬天搜索“家常菜”的诉求也会是不一样的,比如在夏天搜索“家常菜”我可能更想吃“凉菜”,此时如果搜出了很多羊肉汤也是很不合时宜的,因此在排序公式中,参数前面加上“近期该搜索词的**量”作为权重公式,我觉得会更有效率。
但是,在优化了搜索带来了一大波转化后也还是立刻达到瓶颈,原因是用户在进入详情页后,流量就死了,所以下一步我们紧接着就上了“食谱相关推荐”以增加详情页流量,这是另一个有趣的话题,有时间再来写~
(以上)