AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

云搜索服务在 APP 搜索场景的应用

  • 2020-04-01
  • 本文字数:1379 字

    阅读完需:约 5 分钟

云搜索服务在APP搜索场景的应用

搜索无处不在,尤其是在移动互联的今天。无论是社交,电商,还是视频等 APP 中,搜索都已经在其中扮演了重要的角色。作为信息的入口,搜索能帮用户从海量信息中找到想要的信息。在 APP 搜索的典型场景如下:


  • 查找用户:根据输入匹配用户昵称,依据用户属性对搜索结果进行排序;

  • 搜索话题:根据用户输入匹配话题,依据话题属性对搜索结果排序;

  • 搜索帖子:根据用户输入匹配帖子内容,依据内容属性对搜索结果排序;

  • 按照地理位置搜索或推荐:根据用户输入地址信息,转换为经纬度,在一定距离范围内匹配话题、内容中的地址信息,依据它们的属性对搜索结果排序。



事实上,尽管搜索的概念深入人心,但做好一个体验绝佳的搜索服务并不是一件容易的事。在性能和搜索精度等细节上,都存在不可忽略的难点,而这些往往又是提升搜索体验的关键。客户难点如下:


  • 基于数据库的性能问题:

  • 数据一般都是分库分表存储在 MySql 数据库中,搜索时存在关联操作,查询效率很低;

  • 数据库的查询性能很难做到毫秒级,用户搜索体验十分不好。

  • 基于数据库的匹配问题:

  • 数据库中,无法做到综合考虑查询条件的属性后排序;

  • 数据库中无法过滤一些特殊字符,搜索过程中如果用户昵称中有特殊字符,就会不准确。

  • 基于开源搜索引擎 Elasticsearch 的问题:

  • 默认的 BM25 相关性打分排序无法确保搜索结果的合理性;

  • 简单的分词器对特殊字符处理不当。


举个例子:搜索用户“大海”时为什么大 V 用户“kkw 眼中 de 星辰大海”排在了“寻找那片大海”后面?



对于想要搭建 APP 搜索的客户来讲,从技术层面出发,实现方案如下。云搜索服务是基于 Elasticsearch,能够在毫秒级完成 TB 级检索任务并返回结果,能够很好解决传统数据库的性能问题。


整体实现方案



在云搜索服务中,我们针对客户的搜索痛点,做了如下优化,帮助客户增强用户体验,提升效率,快速实现业务增长。


云搜索服务中搜索方案优化:


  • 支持自定义词库,用户在词库中添加热搜词、关键词、网络常用词等来提高搜索输入的匹配精度;

  • 支持自定义权重,用户可以根据业务定义不同查询条件的权重,来决定最终结果的排序;

  • 支持越搜越准(规划),云搜索服务根据对搜索结果的点击行为,自动更新属性权重,达到最终结果排序更精准的效果。



在云搜索服务中,我们额外提供关于分词和词库的解决方案,帮助客户解决搜索精准度等问题。


云搜索服务分词、词库方案:


  • 因为用户昵称和内容、话题表达的含义不同,针对不同字段可以采取不同的分词器,以便于提升匹配精准度。具体作用见下表所示:



  • 采取使用简繁体分词器,还可以支持所有可搜索字段都能处理繁体字;

  • 对于热搜词、关键词、网络常用词,经常随时间变化,因此,我们采取用户自定义词库的方式更新,来提高搜索精准度。



总体而言,云搜索服务在互联网 APP 的搜索场景有如下的优势:


  • 一键化操作,无忧运维

  • 所有主要操作都是一键可达,专业团队贴身运维,快速实现搭建搜索功能模块;

  • 灵活弹性

  • 按需申请,在线扩容,轻松满足业务增长需求;

  • 灵活词库管理

  • 支持自定义词库与拼音分词,支持词库热更新,无需重启,配置即生效,对最终用户无影响;

  • 灵活分词、灵活权重

  • 不同字段使用不同的分词方式,提高搜索准确率。不同条件设置不同权重,提高搜索精准度;

  • 高效实时检索

  • 毫秒级检索结果返回,新数据入库后,即刻能被检索到,提供良好的用户体验。


本文转载自 华为云产品与解决方案 公众号。


原文链接:https://mp.weixin.qq.com/s/X8R9Y5uCck_N5xEPh___kQ


2020-04-01 14:551205

评论

发布
暂无评论
发现更多内容

程序员面试的时候突然遇到答不上的问题怎么办?

Java架构师迁哥

《迅雷链精品课》第七课:以太坊数据存储分析

迅雷链

区块链

区块链医疗应用场景有哪些?区块链医疗解决方案

13530558032

mongodb 源码实现系列 - command命令处理模块源码实现一

杨亚洲(专注MongoDB及高性能中间件)

MySQL mongodb 高性能 源码剖析 分布式数据库mongodb

数字经济发展势头强劲

CECBC

数字经济

智慧园区管理平台app系统开发,智慧楼宇系统搭建

13530558032

有奖话题 | 如果程序员和产品经理都会凡尔赛文学,将如何对话?

YourBatman

话题讨论 凡尔赛文学

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十七)运行测试-在构建工具中运行测试

编程道与术

Java 编程 TDD 单元测试 JUnit

大厂都是怎么用Java8代替SimpleDateFormat?

Java架构师迁哥

性能测试界“网红”云性能测试服务,了解一下?

华为云开发者联盟

CloudTest 沙箱实验 云性能测试

《华为数据之道》读书笔记:第 3章 差异化的企业数据分类管理框架

方志

数据中台 数据仓库 数据治理 元数据

Alibaba最新《Java架构核心宝典》限时开放下载,互联网主流技术详解总结,提升技术能力的必备宝典!

Java架构之路

Java 程序员 架构 面试 编程语言

数字人民币快来了,但多数人可能会有四大误解

CECBC

数字人民币

容器化时代到来!跳转机分配问题终于“有救”了

华为云开发者联盟

容器 镜像 网络

架构师训练营 1 期 -- 第十周总结

曾彪彪

极客大学架构师训练营

原创 | 使用JPA实现DDD持久化-只要O,忘记R & Maven配置

编程道与术

Java hibernate 编程 mybatis jpa

为什么程序员不做外包

Java架构师迁哥

IPFS四币连发系统开发技术(四币循环模式)

薇電13242772558

区块链 数字货币

理解三值逻辑与NULL,你离SQL高手更近了一步

华为云开发者联盟

sql null 逻辑

论“万剑归宗”思想对开发设计的一点“肤浅”作用

八苦-瞿昙

随笔杂谈 设计实践

纷享销客罗旭:拐点下的中国SaaS

ToB行业头条

SaaS

打工人、打工魂、高效MES助力打工者都是人上人

Marilyn

敏捷开发 快速开发 MES系统

架构师训练营第 1 期-week10

习习

什么是堡垒机?为什么需要堡垒机?

xcbeyond

运维

原创 | 使用JPA实现DDD持久化-数据库连接配置:persistence.xml

编程道与术

Java hibernate 编程 mybatis jpa

三分钟带你搞懂分布式链路追踪系统原理

Java架构师迁哥

接口请求(get、post、head等)详解

测试人生路

HTTP

都是“算法”惹的祸,字节三面处处坑,我的offer要凉了?

Java~~~

字节跳动 面试 编程语言 算法和数据结构

区块链、AI与大数据加持,电子合同更安全、效率更高

CECBC

区块链 大数据

区块链防伪溯源平台搭建,助力企业品牌安全体系升级

13530558032

JVM-技术专题-垃圾回收策略

码界西柚

云搜索服务在APP搜索场景的应用_服务革新_华为云产品与解决方案_InfoQ精选文章