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

作者: 张小四儿 | 来源:发表于2016-08-23 09:39 被阅读564次

    前言

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

    一、搜索的核心

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

    比如 Airbnb 算法中考虑的内容有:
    - 搜索主体的历史偏好
    - 搜索结果的质量
    - 整体的平衡(新房源的适当倾斜)

    二、搜索的几个主体

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

    2.1 搜索的用户

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

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

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

    2.2 输入的内容

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

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

    淘宝的图片搜索

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

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

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

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

    2.3 搜索结果

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

    网易云音乐的搜索结果

    2.4 筛选/排序方式

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

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

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

    手淘的排序 手淘的筛选

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

    三、其他的搜索

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

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

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

    Twitter中的@功能 Twitter 中的#功能

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

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

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

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

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

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

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

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

    由于算法直接决定了开发的工期,所以需要根据考虑实际的资源情况,数据的结构化情况和产品的实际需求。
    - 最简化版:根据与关键词的匹配程度显示
    - 简化版:加入搜索结果的权重(可以人工,也可以用算法赋值)
    - 中间版:加入人工调整位置
    - 复杂版:无限制,加入各项考虑,如用户的个人偏好,相似用户的偏好,产品的整体政策等。

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

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

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

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


    你都拉到底了还不来关注我的公众号可还行?

    张小四儿的产品笔记

    相关文章

      网友评论

      • 51344b645c49:搜索和推荐是应该结合到一起的, 用户通过搜索来获取目标,而应用通过搜索进行推荐揣摩意向,说的对不对呀。哈哈
        51344b645c49:@张小四儿 额额额, 我随口一说的。。。。
        张小四儿:@Mr丶d 对呀对呀,金主说的都对!
      • 天天向上卡索:从我个人的理解来说,搜索只有在用到的时候才会加,既然加上搜索就要考虑要解决的问题,解决问题了功能就没问题了,接下来再考虑如何设计用户交互,使用垂直式的搜索风格还是使用筛选型的要根据自己产品的类型和风格来决定
        天天向上卡索:@张小四儿 哦哦,嗯,我理解错了。。。
        张小四儿:@天天向上卡索 恩恩~我都赞同。但此处我对垂直的定义和你不同,我的定义是产品内的搜索为垂直,而跨产品的搜索如百度则不是
      • AOXI:谢谢科普!
        张小四儿:@扈城 不客气~欢迎指教

      本文标题:如何做出优雅的搜索功能?

      本文链接:https://www.haomeiwen.com/subject/lqfmsttx.html