如何做出优雅的搜索功能?

2 评论 16422 浏览 99 收藏 10 分钟

搜索从宏观上来看有两种,一种是搜索引擎,另一种是垂直搜索。搜索引擎有 Google、Bing、百度、搜狗等等,而垂直搜索则是在大多数产品内置的对内容的检索功能。此处仅讨论垂直搜索。

一、搜索的核心

搜索的核心:

  • 根据提供的已知信息,给用户提供符合各方利益诉求的内容。利益诉求包括:用户的利益诉求(如优质的内容)与产品的利益诉求(如搜索引擎广告)
  • 性能:快速的提供内容
  • 展示结果时,考虑用户体验

比如 Airbnb 算法中考虑的内容有:

  • 搜索主体的历史偏好
  • 搜索结果的质量
  • 整体的平衡(新房源的适当倾斜)

二、搜索的几个主体

  • 搜索的用户
  • 输入的内容(关键词/图片/语音/二维码)
  • 搜索结果(屏蔽部分结果)
  • 搜索结果的排序方式。

2.1 搜索的用户

一个简易的搜索功能,可能有关键词+搜索结果就可以。但是一个完善的搜索功能,却要通过对搜索主体偏好的猜测,对输入内容的语义分析,对搜索结果的质量评估分析,对搜索结果的排序方式机器/人工调整为用户呈现适当的结果。

谈到搜索的主体,时常关联的词汇是『大数据』,通过分析用户的行为来对用户建立起立体的用户画像,从而为用户推送合适的内容。譬如搜索引擎中广告的,会根据用户的过往搜索与浏览历史进行不同的展示。

大多数搜索并不需要考虑到搜索主体(鉴于收集用户信息分析用户偏好的成本非常高),需要考虑到搜索主体的,要不是提供内容,要不就是是提供商品。

2.2 输入的内容

这里一共要谈两个部分,一是输入的内容,即关键词(或其他形式的输入),二是对输入内容的分析。

输入的内容主要有以下几种类型,文字(如 Google 和百度)、图片(百度、Google 、淘宝的图片搜索)、语音(Siri 和出门问问)、二维码等。

665477-6aeec8888b95d7c1

淘宝的图片搜索

狭义的搜索输入的内容主要是文字形式的关键字。并通过关键字匹配来寻找搜索结果。

另外,这里有很重要的一项会影响到搜索结果质量的功能,那就是对输入内容的分析(通常情况下是两种,一是语义分析,二是图片识别)。

搜索的核心在于通过用户的输入判断用户的需求,从而给出搜索结果。这里对于用户输入内容分析的能力就直接影响到搜索功能的质量。劣质的搜索功能无法分析语义自动分词,只能给出完全匹配的结果。譬如,用户输入『大连衣裙』,劣质的搜索功能就有可能给出这样的结果『大连』『连衣』或者根本无法显示匹配结果。

语音搜索的分析也是通过语音识别将其转化为文字,然后进行搜索。因此不提。

2.3 搜索结果

搜索引擎的结果有各式各样的结果,而在应用内的垂直搜索也有可能有多种类型的结果。而大多数产品的做法是将搜索结果按照类型分为几种,用户可以点选 tab 按钮切换。

665477-137a0471fab18937

网易云音乐的搜索结果

2.4 筛选/排序方式

对搜索结果的排序分为默认排序和选择排序。

产品内的默认排序通常是多种方式下的排序。例如百度,搜索结果下的默认排序可能考虑了网页的质量、相关程度、广告、发布时间、是否为百度的自家产品等。

但大多数产品会提供一种自定义的筛选和排序。例如淘宝,各种产品的数据高度结构化,可以通过不同维度进行筛选和排序。

665477-d5e543dcdf31a253

手淘的排序

665477-fbdc5ef67fe28233

手淘的筛选

在理想情况下,搜索结果的默认排序应该有算法完全决定,越少的人工参与越好。但事实上大多数产品其实并不拥有那么强大的搜索算法,大多数产品也并不需要那样强大的搜索功能,这时适度的人工干预就很重要了,不仅可以保证搜索结果的质量,还可以根据盈利方面的考虑对搜索结果进行调整。

三、其他的搜索

搜索不一定是一个独立的功能,相信细心的你也曾发现过内嵌在其他功能的搜索。

你想到了什么呢?

不知道你想到的和我想到的是不是一样,那就是『微博』

微博和 Twitter 在发布的时候有一个特别的小功能,@(提及某人)和#(带上话题)。这个操作虽然有一定的学习成本,却是一个非常有巧思的设计。

665477-6e4214e34d149a8d

Twitter中的@功能

665477-d6b84ac5eb6f4205

Twitter 中的#功能

四、如何设计一个『优雅』的搜索功能

以上说了那么多,似乎都没有涉及如何设计搜索功能。

我认为设计搜索功能,甚至任何一个新的 feature 都应该首先考虑的问题是:为什么要增加这个功能,这个功能要解决什么问题,解决这个问题对于产品有多重要。

在理想情况下,我们都想做出一个比百度更好的搜索引擎,即使是在应用内。但是实际进行过程中我们会遇到各种各样的限制,这包括了有限的工期,有限的技术资源,有限的技术能力等等。除此之外,还有一个更现实的问题是,我们需要那么强大的搜索功能吗?

任何的投入都要讲求性价比,投入不仅包括金钱,还包括时间,尤其对于互联网企业来说,早期的时间都是非常珍贵的,必须要用到投入产出比最高的功能上。如果你是一个小的电商网站,SKU 不过几千,数据也不够结构化,那一个强大如淘宝搜索的功能很大程度上是浪费的。任何时候都要寻找当前阶段下的 MVP(最小化可行产品)。

以上是起步前要了解的第一个问题:搜索功能的范围控制

第二个问题是,搜索的算法。

算法是在搜索功能设计过程中最头疼的部分,如何确定算法呢?

由于算法直接决定了开发的工期,所以需要根据考虑实际的资源情况,数据的结构化情况和产品的实际需求。

  • 最简化版:根据与关键词的匹配程度显示
  • 简化版:加入搜索结果的权重(可以人工,也可以用算法赋值)
  • 中间版:加入人工调整位置
  • 复杂版:无限制,加入各项考虑,如用户的个人偏好,相似用户的偏好,产品的整体政策等。

算法这里,我也是门外汉。没有参与过非常大的搜索引擎项目,所以只说到这里~并不是偷懒哦,只是能力所限。

第三步是,搜索的交互

同搜索的算法不同,搜索的交互可以给用户直接的观感。『交互』比『算法』的改进更能带给用户明显的感受。

交互的设计通常有以下几个方面

  • 搜索页面
  • 内容输入过程
  • 搜索结果的展示
  • 搜索结果的筛选与排序

详细的内容可能需要展开另外一篇文章来描述,此处就不细讲了

 

作者:张小四儿,微信公众号:xiaosierzhang

原文链接:http://www.jianshu.com/p/da29924184de

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 我感觉更像是一篇知识普及,最关键的部分都带过了。。不过瘾那

    来自北京 回复
  2. 谢谢

    来自广东 回复