APP搜索如何又快又准?
摘要:搜索的概念深入人心,但做好一个体验绝佳的搜索服务并不是一件容易的事。
本文分享自华为云社区《云搜索服务在APP搜索场景的应用》,作者:写代码的贺大师
搜索无处不在,尤其是在移动互联的今天。无论是社交,电商,还是视频等APP中,搜索都已经在其中扮演了重要的角色。作为信息的入口,搜索能帮用户从海量信息中找到想要的信息。在APP搜索的典型场景如下:
- 查找用户:根据输入匹配用户昵称,依据用户属性对搜索结果进行排序;
- 搜索话题:根据用户输入匹配话题,依据话题属性对搜索结果排序;
- 搜索帖子:根据用户输入匹配帖子内容,依据内容属性对搜索结果排序;
- 按照地理位置搜索或推荐:根据用户输入地址信息,转换为经纬度,在一定距离范围内匹配话题、内容中的地址信息,依据它们的属性对搜索结果排序。
事实上,尽管搜索的概念深入人心,但做好一个体验绝佳的搜索服务并不是一件容易的事。在性能和搜索精度等细节上,都存在不可忽略的难点,而这些往往又是提升搜索体验的关键。客户难点如下:
● 基于数据库的性能问题:
• 数据一般都是分库分表存储在MySql数据库中,搜索时存在关联操作,查询效率很低;
• 数据库的查询性能很难做到毫秒级,用户搜索体验十分不好。
●基于数据库的匹配问题:
•数据库中,无法做到综合考虑查询条件的属性后排序;
• 数据库中无法过滤一些特殊字符,搜索过程中如果用户昵称中有特殊字符,就会不准确。
● 基于开源搜索引擎Elasticsearch的问题:
• 默认的BM25相关性打分排序无法确保搜索结果的合理性;
• 简单的分词器对特殊字符处理不当。
举个例子:搜索用户“大海”时为什么大V用户“kkw眼中de星辰大海”排在了“寻找那片大海”后面?
对于想要搭建APP搜索的客户来讲,从技术层面出发,实现方案如下。华为云搜索服务是基于Elasticsearch,能够在毫秒级完成TB级检索任务并返回结果,能够很好解决传统数据库的性能问题。
▽ 整体实现方案
在云搜索服务中,我们针对客户的搜索痛点,做了如下优化,帮助客户增强用户体验,提升效率,快速实现业务增长。
华为云搜索服务中搜索方案优化:
● 支持自定义词库,用户在词库中添加热搜词、关键词、网络常用词等来提高搜索输入的匹配精度;
● 支持自定义权重,用户可以根据业务定义不同查询条件的权重,来决定最终结果的排序;
● 支持越搜越准(规划),云搜索服务根据对搜索结果的点击行为,自动更新属性权重,达到最终结果排序更精准的效果。
在云搜索服务中,我们额外提供关于分词和词库的解决方案,帮助客户解决搜索精准度等问题。
云搜索服务分词、词库方案:
● 因为用户昵称和内容、话题表达的含义不同,针对不同字段可以采取不同的分词器,以便于提升匹配精准度。具体作用见下表所示:
● 采取使用简繁体分词器,还可以支持所有可搜索字段都能处理繁体字;
● 对于热搜词、关键词、网络常用词,经常随时间变化,因此,我们采取用户自定义词库的方式更新,来提高搜索精准度。
总体而言,云搜索服务在互联网APP的搜索场景有如下的优势:
● 一键化操作,无忧运维
所有主要操作都是一键可达,专业团队贴身运维,快速实现搭建搜索功能模块;
● 灵活弹性
按需申请,在线扩容,轻松满足业务增长需求;
● 灵活词库管理
支持自定义词库与拼音分词,支持词库热更新,无需重启,配置即生效,对最终用户无影响;
● 灵活分词、灵活权重
不同字段使用不同的分词方式,提高搜索准确率。不同条件设置不同权重,提高搜索精准度;
● 高效实时检索
毫秒级检索结果返回,新数据入库后,即刻能被检索到,提供良好的用户体验。
大数据普惠创新包年75折起,MapReduce、数据仓库、云搜索、数据湖探索、数据可视化、数据湖治理中心助力企业释放千行百业数据价值!参与活动,注册即有红包领取!更有机会参与抽奖赢好礼!
APP搜索如何又快又准?的更多相关文章
- 云搜索服务在APP搜索场景的应用
搜索无处不在,尤其是在移动互联的今天.无论是社交,电商,还是视频等APP中,搜索都已经在其中扮演了重要的角色.作为信息的入口,搜索能帮用户从海量信息中找到想要的信息.在APP搜索的典型场景如下: ● ...
- 【转】 FineBI:自助式BI工具打造业务分析的“快与准”
如今的企业经营方式,业务对于数据分析有极大的需求,但却苦于没有数据以及工具的有效支持,业务分析仍就依赖于IT报表制作.而IT方不断地按业务需求去调研.确认业务逻辑,然后取数做报表,其中还要忍受业务的需 ...
- 网页搜索之后的APP搜索
搜索技术是互联网最核心的技术之一.但是移动互联网迅猛发展的今天,互联网产生的数据已经不是简单的网页搜索所能涵盖的了.比如微信公众号,产生了许多优质的内容,如果这些公众号仅仅将这些内容发布到微信平台,那 ...
- 将代码设置的剪切板内容通过输入法软件粘贴入app搜索框
#进入app搜索框位置--双击#等待输入法软件弹出#将代码设置的剪切板内容通过输入法软件粘贴入app搜索框#搜索 import win32apiimport timeimport win32clipb ...
- 开发手机APP过程,不同使用场景APP搜索框的样式及区别
搜索框是 app 内最常见的控件之一,可以帮助用户快速又精准找到期望的内容与功能.不同的使用场景下,根据页面中搜索的重要程度,搜索框也有着不同的样式. 下面就常州开发APP公司和大家聊聊常见的四种样式 ...
- 【转】简单几步让App Store软件下载快如迅雷 -- 不错!!!
原文网址:http://pad.zol.com.cn/237/2376160_all.html 下载速度慢的原因 1)国内用户从苹果软件商店下载软件速度很慢这是大家都知道的事实,究其原因就是苹 ...
- RxJava(七) 使用debounce操作符 优化app搜索功能
欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/51555203 本文出自:[余志强的博客] 一.抛出问题 现在几乎所有 ...
- 异构智联Wi-Fi+蓝牙模组,连接快、准、稳!
下班回家打开门,电灯.电视.空调.音响.电动窗帘.扫地机器人--一呼百应,有序开工,原本冰冷的房子立刻变成了温暖港湾.可以说,舒适便捷的智能设备已经完全融入了我们的生活中. 从单一场景.单一设备,到现 ...
- Python小工具:据说这是搜索文件最快的工具!没有之一!一起感受下......
电脑自带的搜索文件功能相信大家都体验过,那是真的慢,等它找到文件,我都打完一把游戏了! 那必须不能忍,于是我自己做了一个文件搜索工具,犄角旮旯的文件都能一秒钟搜索出来的那种! 保证能把你们男(女)朋友 ...
- Vue2.5开发去哪儿网App 搜索功能完成
效果展示: Search.vue: <div class="search-content" ref="search" v-show="keywo ...
随机推荐
- Android_Camera2_ImageReader_onImageAvailable拍照秒退的解决办法
public void onImageAvailable(ImageReader reader) { try{ Image image = reader.acquireLatestImage();// ...
- Isito 入门(九):安全认证
本教程已加入 Istio 系列:https://istio.whuanle.cn 目录 7,认证 Peer Authentication PeerAuthentication 的定义 实验 Reque ...
- ubuntu20.04不定时卡死,鼠标和键盘都不可用,且tty无效
事情的经过: 已经在ubuntu上安装了好多东西,配置了好多环境,最近突然莫名卡死.我遇到的问题是: 1.如果开机之后只是打开终端,打开编辑器之类的操作,系统不会卡死. 2.一旦打开firefox火狐 ...
- Lazyload 延迟加载效果(转)
http://www.cnblogs.com/cloudgamer/archive/2010/02/01/LazyLoad.html Lazyload是通过延迟加载来实现按需加载,达到节省资源,加快浏 ...
- 教你使用逻辑公式和恒等式等价改写SQL
今天同事给我一条2秒的SQL看看能不能优化. 原始SQL: SELECT pk_dept FROM aaaa WHERE 1 = 1 AND ((pk_group = '0001A1100000000 ...
- 自定义Graph Component:1-开发指南
可以使用自定义NLU组件和策略扩展Rasa,本文提供了如何开发自己的自定义Graph Component指南. Rasa提供各种开箱即用的NLU组件和策略.可以使用自定义Graph Compo ...
- MySQL-防止误删除的方案就是删除,看不见岂不就是删除了吗,所以就是把它隐藏起来。
版权声明:原创作品,谢绝转载!否则将追究法律责任. ----- 作者:kirin 伪删除: 用update替代delete 1.添加状态列 ALTER TABLE student2 ADD state ...
- 01 MyBatis第一个应用程序
1.MyBatis是什么? mybatis是一个基于java的持久层框架. 2.什么是持久化 数据由瞬态状态变为持久状态. 3.持久层: 完成持久化工作的代码块. -- DAO层,将数据存到数据库 4 ...
- UI自动化测试框架:数据驱动
一.UI自动化框架介绍 测试框架使用了Po设计模式(Page Object),每一个页面用一个类来对应,这个类里面要实现所有核心页面元素的获取方法,类里面提供操作页面元素的所有方法. 这个框架实现几点 ...
- JS对后端响应的long类型数据处理精度丢失问题
1.数据库的数据 2.前端拿到的数据 前端帮我们进行四舍五入了,这并不是我想要的 3.解决办法 把后端响应的数据long类型转成string类型,可以使用Stream流的方式或者for循环的方式,对响 ...