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

前言

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

一、搜索的核心

搜索的核心:

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

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

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

二、搜索的几个主体

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

2.1 搜索的用户

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

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

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

2.2 输入的内容

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

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

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

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

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

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

2.3 搜索结果

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

2.4 筛选/排序方式

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

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

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

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

三、其他的搜索

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

你想到了什么呢?不知道你想到的和我想到的是不是一样,那就是『微博』

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

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

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

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

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

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

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

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

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

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

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

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

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

交互的设计通常有以下几个方面: - 搜索页面 - 内容输入过程 - 搜索结果的展示 - 搜索结果的筛选与排序

详细的内容可能需要展开另外一篇文章来描述,此处就不细讲了,如果以后还有机会就再写一篇文章分析搜索功能的的交互设计(如果还有的话Hhhhhh)。

原文发布于微信公众号 - 交互设计前端开发与后端程序设计(interaction_Designer)

原文发表时间:2017-02-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网高可用架构

史上最全的架构师图谱

2354
来自专栏PPV课数据科学社区

为什么说你的数据不是大数据?

言必称大数据的时代,让我们多少有些“审美疲劳”。但如果严格按照大数据的定义来判断,相信大多数公司是根本不存在大数据问题的。你也许有很多数据,但那并不意味着就是大...

3469
来自专栏PPV课数据科学社区

学习Python:做数据科学还是网站开发?

本文的英文原文地址是:Python for Data Science vs Python for Web Development,发布时间是10月29日。译者一...

2624
来自专栏数据科学与人工智能

【Python环境】学习Python:做数据科学还是网站开发?

本文的英文原文地址是:Python for Data Science vs Python for Web Development,发布时间是10月29日。译者一...

3388
来自专栏CDA数据分析师

7大板块 组成数据分析师的完整知识结构

作为数据分析师,无论最初的职业定位方向是技术还是业务,最终发到一定阶段后都会承担数据管理的角色。因此,一个具有较高层次的数据分析师需要具备完整的知识结构。 1....

2087
来自专栏Java架构师学习

Java架构师最关键三个思维转变方式

很久没有写思维的文章,特别是在写完思维的逻辑和思维的框架后,对于理论层面的自己也不太想写,但是对于实际案例层面的写起来又比较花时间,而且案例基本在IT专业领域不...

3315
来自专栏web前端教室

【差别】3-6K和10-15K的前端要求有啥区别?怎么达到?

先上图片, (1)首先是3-6K要求的, ? (2)然后是10-15K要求的, ? 差别: (1)、3-6K要求三年要求,10-15K的要求五年要求; 这个并...

4098
来自专栏小樱的经验随笔

密码学经典之生日悖论与生日攻击【详解】

生日悖论 在算法导论书上看到个比较有意思的概率算法,在这里加上自己的理解分享下: 上次刚看同学发的朋友圈说道:“两个人同一间宿舍,而且同年同月同日生,这个缘分真...

59112
来自专栏大数据挖掘DT机器学习

学习Python:做数据科学还是网站开发?

本文的英文原文地址是:Python for Data Science vs Python for Web Development 译者:EarlGrey@co...

41015
来自专栏程序员互动联盟

老外总结的编程技巧

最近看了一些国外的技术网站,发现还是有一些好东西的,下面给大家分享一下: 1.学习一门新的编程语言(Learn a new programming langua...

3888

扫码关注云+社区

领取腾讯云代金券