赶上了互联网浪潮的当代人,每当有任何困扰,第一反应都是打开搜索引擎。

什么叫做“硬核相亲”,什么是“pick一下”,“达达主义”,“隐形贫困人口”——你都默默搜索过,不想被时代与话题抛弃。也许只有这样暗自努力,才能让生活与社交看起来毫不费力。

但搜索引擎无法解决一切。

信息爆炸时,“大而全”不见得是一件好事,除了纷乱的资讯与竞价广告,搜索引擎能给的真的不多。更多的有效信息散落在专业网站与各色细分App中,其内容含金量相对高,时效性强,无用信息少,是web时代那些先天不足的网页无法比拟的。如果说搜索引擎是一个巨大的杂货市场,站内搜索就像一个简洁的购物中心,可它的体验……

文献库搜索曾是许多人的心病,关键词太少搜出1000多篇论文,输入太精准,却提示“没有更多的搜索结果”。

旅行时,听到了街头艺人唱过一首歌,只依稀记得旋律,回来后绞尽脑汁想出了歌词的近义词——毫无疑问没搜到。

好不容易问出小姐姐社交软件ID,搜了发现有60多个重名。

需要的PPT模板在素材网怎么也找不到;视频网站搜个冷门资源,搜索反馈要等上半天结果往往还是“404”。

找用户,搜话题,找帖子,求推荐……在移动互联的大背景下,搜索无处不在。作为信息的入口,用户唯一要求的是:在APP的内容较多,无法完成全部展现时,又快又准找到想看的内容。

简单直接的诉求无法实现,APP内搜索难用,根本问题有3点:

1. 响应时间

基于MySQL数据库进行搜索,文档数仅仅上万条时,若没有索引,关键词查询就比较吃力了。如果一旦到企业级的数据,响应速度就会更加不可接受。

2. 分词

传统数据库并不支持分词。例如,在做中文搜索时,当搜索框输入“四川火锅”时,数据库通常只能把这四个字进行全部匹配。可是在文本中,可能会出现“推荐四川好吃的火锅”,这时就会无结果显示。

3. 相关性

在用数据库做搜索时,结果经常会出现一系列文档。可是到底什么文档是用户真正想要的呢?怎么才能把用户想看的文档放在搜索列表最前面呢?

这些问题,基于Elasticsearch的华为云搜索服务可以解决。

Elasticsearch基于倒排索引,搜索时不用再遍历整张表了,如当搜索“手机”时,Elasticsearch会立即返回文档F,G,H。这样就不用花多余的时间在其他文档上,因此检索速度得到了数量级的提升

Elasticsearch支持中文分词插件,直接解决了分词搜索问题。例如当输入“四川火锅”时,Elasticsearch会自动做下面两件事:将“四川火锅”分词成“四川”和“火锅”,而后查找包含这两个词的文档

Elasticsearch支持相关性评分。通过合理的优化,云搜索服务能够返回精准的结果,满足用户的需求。返回结果会根据分数由高到低排列。分数越高,意味着和查询语句越相关。例如,当搜索“星巴克咖啡”,带有“星巴克咖啡”的信息就要比只包含“咖啡”的信息靠前。

除此之外,云搜索服务由华为专业团队贴身运维,最短时间搭建搜索功能模块。企业使用按需付费,费用低至¥0.59/小时起,包年包月最高可省51%,切实的优质低价!

最新活动上线,试用窗口短暂开启,企业可领30天免费试用。

这一次,希望你不会缺席。

你是不是也想起心里那个还没找到答案的问题呢?

来搜一下吧!http://t.cn/RFg3nXz

明明有印象却找不到,APP内搜索为什么这么难用?的更多相关文章

  1. 35.app后端搜索入门

    现在人们的网络生活已经离不开搜索了,遇到不懂的问题,想知道的事情,搜索一下,就知道答案. 在app中,最常见的搜索情景就是搜索用户.只有几百,几千的用户量时,可以直接用用like这样的模糊查询,但是, ...

  2. app后端搜索入门

    现在人们的网络生活已经离不开搜索了,遇到不懂的问题,想知道的事情,搜索一下,就知道答案. 在app中,最常见的搜索情景就是搜索用户.只有几百,几千的用户量时,可以直接用用like这样的模糊查询,但是, ...

  3. iOS多语言(国际化)开发(尾随系统 + APP内手动设置)

    一:尾随系统切换语言 1>创建好项目project后, 新建一个多语言文件: 2>加入要设置的语言类型: 3>加入成功 细心的朋友可能会发如今English后面写的是3 Files ...

  4. iOS6:在你的App内使用Passbook

    前言 这是一篇翻译,感谢Jonathan Tang. 原文地址:iOS 6 Tutorial: Integrating Passbook into Your Applications 另外,看到另一篇 ...

  5. Android app内语言环境切换

    逻辑很简单: 1  app内所有activity继承自BaseActivity或BaseActivity派生出来的子类,BaseActivity中维护了一个静态的 app Activity访问栈,在创 ...

  6. Android原生APP内分享

    Android原生APP内分享,可实现数据分享以及assets文件夹分享及私有文件分享 项目地址:https://github.com/json-pu/AndroidAppShare.git

  7. App内切换语言

    前几天客户提需求,对App增加一个功能,这个功能目前市面上已经很常见,那就是应用内切换语言.啥意思,就是 英.中.法.德.日...语言随意切换. (本案例采用Data-Bingding模式,麻麻再也不 ...

  8. 用vue做app内嵌页遇到的坑

    公司要求用vue做一个微信端的网站,其中还包含一些app的内嵌页.开始的时候没想那么多,就直接用vue-cli搭了一个单页的vue项目,可随着项目越做越大,页面越来越多,问题就开始暴露出来了. 众所周 ...

  9. iOS APP内购

    看到网上文章一大把,看了这个觉得挺不错的,谢谢 iOS大全 公众平台; 原文:http://mp.weixin.qq.com/s?__biz=MzAxMzE2Mjc2Ng==&mid=2652 ...

随机推荐

  1. 开发环境入门 linux基础 (部分)正则表达式 grep sed

    /etc/profile /etc/bashrc  .变量添加到shell环境中,永久生效. /root/.bashrc /root/.bash_profile 正则表达式 定义:正则就是用一些具有特 ...

  2. vuex的实用知识点

    本文系统介绍vuex的全部内容 为什么用vuex 组件通信知道吧,相信很多同学,刚学的时候很难懂,实时上在实际应用中,大型项目如果使用最原始的组件通信会非常的麻烦,主要体现在多层嵌套的组件之间的通信, ...

  3. Ubuntu下设置VNCServer

    Ubuntu下设置VNCServer Virtual Network Computing(VNC)是进行远程桌面控制的一个软件.客户端的键盘输入和鼠标操作通过网络传输到远程服务器,控制服务器的操作.服 ...

  4. mysql应用基本操作语句(转)

    二.库操作 1..创建数据库 命令:create database <数据库名> 例如:建立一个名为xhkdb的数据库 mysql> create database xhkdb; 2 ...

  5. redis学习四 复制

    1,单机创建多实例 一个redis服务器安装多个redis实例,每个实例对应一个端口.默认端口是6379. 将redis.conf配置文件复制一份到另外一个文件夹下,然后修改其中的信息即可.   pi ...

  6. 部署和调优 1.1 nfs部署和优化-2

    更改共享目录文件默认的所有者和所属组 已知道客户端有个user11用户 cat /etc/passwd user11:x:501:501::/home/user11:/bin/bash 服务端打开 v ...

  7. Ubuntu安装Chrome及hosts修改

    Ubuntu16.04 1.chrome安装 获取安装包http://www.google.cn/chrome/browser/desktop/index.html 在安装包目录打开终端执行sudo  ...

  8. git pull没有指定branch的报错

    执行git pull或者git push的时,有时候会出现如下报错: $ git pull You asked me to pull without telling me which branch y ...

  9. [patl1-046]整除光棍

    解题关键:模拟除法 #include<cstdio> #include<cstring> #include<algorithm> #include<cstdl ...

  10. Ros学习service——小海龟

    rosservice 服务(services)是节点之间通讯的另一种方式.服务允许节点发送请求(request) 并获得一个响应(response) rosservice list 输出可用服务的信息 ...