明明有印象却找不到,APP内搜索为什么这么难用?
赶上了互联网浪潮的当代人,每当有任何困扰,第一反应都是打开搜索引擎。
什么叫做“硬核相亲”,什么是“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内搜索为什么这么难用?的更多相关文章
- 35.app后端搜索入门
现在人们的网络生活已经离不开搜索了,遇到不懂的问题,想知道的事情,搜索一下,就知道答案. 在app中,最常见的搜索情景就是搜索用户.只有几百,几千的用户量时,可以直接用用like这样的模糊查询,但是, ...
- app后端搜索入门
现在人们的网络生活已经离不开搜索了,遇到不懂的问题,想知道的事情,搜索一下,就知道答案. 在app中,最常见的搜索情景就是搜索用户.只有几百,几千的用户量时,可以直接用用like这样的模糊查询,但是, ...
- iOS多语言(国际化)开发(尾随系统 + APP内手动设置)
一:尾随系统切换语言 1>创建好项目project后, 新建一个多语言文件: 2>加入要设置的语言类型: 3>加入成功 细心的朋友可能会发如今English后面写的是3 Files ...
- iOS6:在你的App内使用Passbook
前言 这是一篇翻译,感谢Jonathan Tang. 原文地址:iOS 6 Tutorial: Integrating Passbook into Your Applications 另外,看到另一篇 ...
- Android app内语言环境切换
逻辑很简单: 1 app内所有activity继承自BaseActivity或BaseActivity派生出来的子类,BaseActivity中维护了一个静态的 app Activity访问栈,在创 ...
- Android原生APP内分享
Android原生APP内分享,可实现数据分享以及assets文件夹分享及私有文件分享 项目地址:https://github.com/json-pu/AndroidAppShare.git
- App内切换语言
前几天客户提需求,对App增加一个功能,这个功能目前市面上已经很常见,那就是应用内切换语言.啥意思,就是 英.中.法.德.日...语言随意切换. (本案例采用Data-Bingding模式,麻麻再也不 ...
- 用vue做app内嵌页遇到的坑
公司要求用vue做一个微信端的网站,其中还包含一些app的内嵌页.开始的时候没想那么多,就直接用vue-cli搭了一个单页的vue项目,可随着项目越做越大,页面越来越多,问题就开始暴露出来了. 众所周 ...
- iOS APP内购
看到网上文章一大把,看了这个觉得挺不错的,谢谢 iOS大全 公众平台; 原文:http://mp.weixin.qq.com/s?__biz=MzAxMzE2Mjc2Ng==&mid=2652 ...
随机推荐
- HDLM命令dlnkmgr详解之五_set
set命令用来设置HDLM的操作环境及参数. set操作设置的大部分是dlnkmgr view -sys命令中显示的参数值 命令格式 dlnkmgr set { -lb on [ -lbtype { ...
- CentOS6.5 释放SWAP
虚拟内存的释放一般都是伴随着关闭应用程式来说的 可以通过命令刷新swap还原到初始状态: swapoff -a swapon -a 例如: [root@wjlcn1026 vm]# f ...
- python爬虫(2)--Urllib库的高级用法
1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 拆分这些请求,我们只 ...
- ubuntu 12.04 下 eclipse关联 source code
一.JDK source code 命令行中: sudo apt-get install openjdk-7-source 下好的jdk源码在 Linux 在目录 usr/lib/jvm/openjd ...
- NULL、0、nullptr
C的NULL 在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码: int *i = NULL;foo_t *f = NULL; 实际上在C语言中,NULL通常被定义为如下: #defi ...
- SQl Server 表链接查询
之前漏下了,这里补一偏 select * from student,score ——笛卡尔积 可以想想成c#里面的多维函数的样子,打印时每一张表的每一条数据都会连带着第二张表的所有数据 两个表的连接: ...
- loj2395 [JOISC 2017 Day 2]火车旅行
传送门 分析 我们知道无论往左走还是往右走一定都是往不低于这个点的地方走 于是我们可以考虑用倍增来维护一个点向左和向右走$2^i$最远分别能走到哪里 我们可以先用单调栈求出直走一步的情况,之后再处理倍 ...
- Luogu 3302 [SDOI2013]森林
BZOJ 3123 丑陋的常数,BZOJ 19968ms 卡过. 感觉几个思想都挺经典但是挺套路的. 先考虑不连边的情况怎么做,区间第$k$小,想到主席树,每一个结点维护它到根的前缀和,这样子每一次查 ...
- java全栈day08--面向对象
今日内容介绍1.面向对象思想2.类与对象的二者关系3.局部变量和成员变量之间的关系4.封装的思想5.private,this关键字的用途6.案例 01面向对象和面向过程的思想 * A: 面向过程与面向 ...
- 《Effective Java》第3章 对于所有对象都通用的方法
第8条:覆盖equals时请遵守通用约定 覆盖equals方法看起来似乎很简单,但是有许多覆盖方式会导致错误,并且后果非常严重.最容易避免这类问题的办法就是不覆盖equals方法,在这种情况下,类的每 ...