编者按:搜索体系由哪些元素组成?有哪些常见的功能模块?如何建立和优化搜索体系?这篇超全面的总结让你系统认识搜索体系。
看完本文你会学到
- 搜索体系的组成。
- 搜索功能常见的模块。
- 优化的意义及思考。
写在前面的话
一般来说,搜索功能按顺序分三个阶段:点击搜索——跳转搜索页——搜索结果页。
接下来,我们按照流程顺序一个个来说吧。
搜索前
我们在使用搜索功能前,首先要找到他的入口在哪,所以设计一个明确,高效的入口是「登月第一步」。常见的移动端搜索入口会放在顶部或底部,有些资讯、博客、工具类app也会出现悬浮按钮式的搜索入口。
搜索中
点击跳转到搜索页后,就可以进行输入了。搜索系统现分为「文本」、「图片(扫码)」、「音频(识曲)」三种载体分别应对不用场景下的搜索需求。页面中会出现哪些模块呢?
1. 热词搜索
简称热搜,玩过微博的小伙伴们应该对此非常了解,许许多多的流量「爆款」就产生在这里,这小小的方寸之间几乎是大天朝舆论的风向标。
2. 关键词联想
当我们输入某个词或词组时,搜索系统往往会联想出词串组,帮助用户节省输入成本。当然,有时候出现的可能是相关内容的热搜或是广告投放。
3. 搜索历史
这个非常好理解,就是用户曾经搜索过的内容。通常来说10条的展示量基本可以满足用户的使用需求,京东最多可以展示20条的搜索历史。不过也有少的,微博只有区区两条的展示量,估计是不想与下面热搜入口的主要视觉区域对冲,稀释流量吧。
4. 运营区
这个模块的名称比较难定义,暂时叫运营区吧。此类模块经常出现在社交,泛娱乐类型的app中,搜索入口流量大,用户操作密集,建立运营模块/个性化定制模块既能生产流量,又能导流。
5. 个性化内容定制
简单来说就是「猜你喜欢」,根据用户平时产生的行为进行个性化的推荐。「千人千面」就是说这样的功能。
6. 分类
通常会出现内容载体/功能形式划分比较清晰,统一的app中,类似于资讯类,阅读类。有些app的分类是独立的模块或是一级导航,有些则会并入搜索中。
搜索结果
看到这里,我们来到了搜索过程的最后一步。在这个页面上,我们通常可以看到大量的内容按照特定的逻辑顺序排列,有的顺序用户可以在筛选器中设置,比如电商app中的,按价格高低排序,销量多少排序等等,有的则是根据业务原因排序,用户不能改变,总体来说每个app都有自己特定的逻辑顺序。在这个阶段的搜索栏,通常的交互方式为上滑隐藏。当搜索关键词与搜索结果高度吻合的时候,会出现命定词高显模块,来看下面的图例吧。
当搜索结果出现异常的时候?会怎么样呢?(不考虑404)
- 搜索结果零匹配,会出现一些相关词组选项,这些词组通常是你给出的搜索内容的分词。
- 当你打错字的时候,结果页优先显示正确词组的匹配内容。但有个前提是,其他字或词要与相关内容匹配度非常高,这样才能被计算出来。
优化思路
很多情况下用户使用搜索功能的目的并不明确
随着互联网的高速发展,手机变得越来越「好玩」,功能很多时候就不再是简单的功能本身了。长期刷微博的小伙伴们会发现,「热搜」模块内容的变更简直代表了时代的变化。从鹿晗关晓彤公开恋情,到pg one李小璐夜宿绯闻,到space x发射成功,热搜就像是时代的风向标,每个人都害怕错过热点,仿佛会被这个世界淘汰。在这种现象的背后,究竟是用户「精神消费」过剩?还是搜索机制的升级?我们习惯于把某个功能固定于在某个意义层面上而难以跳脱,设计搜索时,我们假定用户为「进行带有强烈目的性搜索行为」。但很多情况下,懵懵的,不晓得干什么的用户数量也非常庞大。热搜是一种非常棒的分流手段,我们也可以递进式拓展相关的模块。比如,搜索栏下可以放置「经常访问博主/up/头条号/专栏…」入口。往大胆了想,在电商app中,针对于经常购买,浏览固定商家的用户,则可以在搜索过程中变更某个固定模块为「推送固定商家」、「类似在售商品」的信息,根据用户的行为特点,让「内容定制化」上升为「模块定制化」,打破app模块分配固定、难调配的局面。
搜索将会越来越智能,算法首当其冲
首先介绍一下搜索的物理逻辑:用户输入信息,系统根据输入的信息匹配相对应的内容,再按照特有的rank逻辑进行排序展示。这个表述只是简单的介绍,如果想要知道具体的原理,还需要深入到搜索词库的建立。每个搜索系统都有一个词库和一个索引库,他们之间是可以进行快速的关联匹配的,词库就好比一本书,索引库就好比目录,当你心里有具体想翻阅的某个内容时,就可以根据目录找到页码,匹配到相关内容。实际上「查书」这样的动作就已经构成一个简单的搜索过程了。那么,机器检索复杂在哪里?这边要介绍一个新的概念:分词。
给大家看个幽默图片轻松一下,这位老母亲也是为自己的崽崽操碎了心。在图片中,用户输入检索内容时,你会发现,这个文本结构非常的口语化,「女儿高高胖胖穿什么好看」这更像是一个问句,很明显用户对于内容没有明确的预期。如果用这样口语化的描述性文本在淘宝中进行搜索,会出现什么样的结果呢?结果将会是没有匹配。
既然这样搜不到,那我们换个思路来吧,「女儿高高胖胖穿什么好看」,是不是可以换成「高个的女孩穿显瘦服装」这样的文本进行检索呢?我们来试试看。
咦,还是没有,那我们干脆再简化字段扩大搜索范围吧,换成「高个女显瘦」来搜索呢?
结果匹配到了很多漂亮时尚的衣服,搜索完成。
回头再梳理一遍过程,我们从「女儿高高胖胖穿什么好看」这样的非结构化文本到「高个的女孩穿显瘦服装」再到「高个女显瘦」的简化过程,就是一次人工分词操作。如果在足够智能的搜索引擎上,这些都可以自动完成。分词,简单表述为:拆分滤用字符串。例如,三国的军事家司马懿。可以拆分为「三国」、「的」、「军事家」、「司马懿」这些词组。那在分词系统中,「的」、「是」、「在」是常见的停用词,通常会被直接pass掉,词组进一步拆分为「三国」、「军事家」、「司马懿」。经过这样的处理,非结构化的内容就会转化成结构化的,可匹配度高的词库,可以轻易的匹配到想了解的内容。说了 这么多搜索原理,那优化思路在哪呢?这里说两点自己的看法。
词条归一
这是针对词库的优化,说到这个,得介绍一下搜索系统匹配关键词的规则「TF-IDF算法」。假如用户在百度上搜索「苹果」,那苹果有很多相关的信息文档,怎么才能准确匹配呢?系统需要提取这些信息文档的关键词,感兴趣的小伙伴可以百度公式。系统计算出文档里每个词的TF-IDF值后,然后按降序排列,取排在最前面的几个词与搜索词匹配就可以得到准确的匹配结果,不会出现我搜的是苹果,出来的是青苹果乐园。进一步的还有Lucene的打分系统,让好的,召回率高的内容优先展示。说了这么多,词条归一到底是什么?其实就是将同一词义的词组归为同一个词,比如苹果的别称有「蔷薇科苹果属果实」、「柰」、「滔婆」、「apple」、「りんごちゃん」等等,这些词组说的都是同一个意思,所以词条归一就是将这些词组归为同一类别,扩大匹配范围,提高关键词召回率。
更符合业务目标的rank逻辑
我们在搜索完成后,会看到搜索结果会按照特定的顺序排序,再进行展示。有些产品中,展示的顺序是否能够切合业务目标,会直接影响到产品的收益。所以,制定展示逻辑的算法要高度理解业务内容,实时回归业务进行规则的更新。
欢迎关注作者的微信公众号:「 深知与灼见」