明明有印象却找不到,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 ...
随机推荐
- c#学习之路---壁咚漏洞搜索
每次出漏洞都会用JAVA去写,不过JAVA你懂得,写GUI每次画图很吃力. 于是左右学习了下c#,期间也得到表哥storm7kb的帮助,要不然这个表格与数据绑定不知道c#怎么弄. 上一下图吧: --- ...
- _tprintf(), printf(),wprintf() 与控制字符 %s 和 %S(Unicoe与GB2312))
_tprintf() 是 printf() 和 wprintf() 的通用类型:如果定义了 _unicode,那么 _tprintf() 就会转换为 wprintf(),否则为 printf() . ...
- 系统监控磁盘分区 homework
作业一: 1) 开启Linux系统前添加一块大小为15G的SCSI硬盘 2) 开启系统,右击桌面,打开终端 3) 为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分 ...
- java 多线程系列基础篇(七)之线程休眠
1. sleep()介绍 sleep() 定义在Thread.java中.sleep() 的作用是让当前线程休眠,即当前线程会从“运行状态”进入到“休眠(阻塞)状态”.sleep()会指定休眠时间,线 ...
- VUE简单入门
Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使 ...
- 使用Eclipse的常见问题整理
我在Eclipse里新建一个android工程的时候附带着产生了一个名字为appcompat_v7的工程,这个工程是干什么用的啊?为何我新建的工程都出错了,错误信息提示为: error: Error ...
- Hibernate和JPA
ORM(Object/Relational Mapping : 对象关系映射)就是利用描述对象和数据库之间映射的元数据,自动(且透明)的将java应用程序中的对象持久化到关系数据库的表中.HIbern ...
- Angular18 RXJS
1 RX 全称是 Reactive Extensions,它是微软开发并维护的基于 Reactive Programming 范式实现的一套工具库集合:RX结合了观察者模式.迭代器模式.函数式编程来管 ...
- webfrom 做项目的注意事项
1.展示细节 如男女显示问题 不能显示true false 时间转换成中文 民族显示汉字 不能直接显示代码2.用户名重复验证 从数据库中查询验证4.日期判断 判断年份有点问题 var y ...
- 在Ubuntu里安装Mysql5.7.23
准备在Linux里安装Mysql,安装过程中遇到很多问题,这里记录下我成功安装的过程. 操作系统:Ubuntu 18.04 数据库:Mysql 5.7.23 安装步骤: 1.下载一个apt,下载mys ...