『AI科技大本营』华为开发者大会HDC.Cloud技术探秘:云搜索服务技术实践


『AI科技大本营』华为开发者大会HDC.Cloud技术探秘:云搜索服务技术实践
本文插图
搜索是一个古老的技术 , 从互联网发展的第一天开始 , 搜索技术就绽放出了惊人的社会和经济价值 。 随着信息社会快速发展 , 数据呈爆炸式增长 , 搜索技术通过数据收集与处理 , 满足信息共享与快速检索的需求 。 基于搜索技术 , 更是缔造了谷歌、百度、雅虎等一批知名企业 。
搜索也是一个蓬勃发展技术 , 它串联起了问答、地图、小程序等各式各样新的应用形态 。 最近十几年间 , 也应用到了更早前并无直接关联的IT运维等领域 。 更是通过技术融合推动了AI、NoSQL、OLAP等相关技术的发展 。
日前 , 华为开发者大会HDC.Cloud DevRunLive开发者技术沙龙上 , 华为云专家做了关于“云搜索服务技术实践”的技术演讲 。 本文为大家介绍业界流行的搜索应用场景 , 开源Elasticsearch的应用 , 以及华为云搜索服务在此基础上的一些增强 。
一、什么是搜索?
『AI科技大本营』华为开发者大会HDC.Cloud技术探秘:云搜索服务技术实践
本文插图
搜索行为的基本流程
从技术上来看 , 搜索指的是:依据不同类型数据的条件组合 , 筛选出符合条件的记录(或称文档) , 并依照某种排序规则进行TopN的选择 , 最后进行呈现 。
具体的过程 , 如上图所示 。 我们在生活中遇到的各种类型数据 , 像新闻文档、电话号码、年龄、体重、地图坐标等 , 在搜索系统各种会映射成不同类型的索引 , 比如文本一类的数据被映射成倒排表索引 , 数字一类的数据被映射成KD-Tree索引 。 还有一类特殊的数据 , 像图片、视频等多媒体信息 , 他们不能直接被表达为索引 , 而是通过机器学习表达为一个个向量数据 , 然后存储为搜索系统中的向量索引 。
各种数据转换为索引后 , 我们就可以通过不同的条件描述组合来进行搜索了 。 通过索引来搜索相比一条条数据的过滤 , 通常速度会快好几个数量级 , 从而快速筛选出符合条件的数据条目 。
最后 , 当筛选出来的数据条目非常多的时候 , 人难以一次阅读过来 , 还有有一个排序的过程 , 比如按照是否最新、猜测是否最符合搜索目的等方法挑选出其中的Top N条 , 最后进行呈现 。
上述是从技术角度来阐述什么是搜索 , 从实际应用来看 , 更加容易体会搜索的形态以及价值 。
『AI科技大本营』华为开发者大会HDC.Cloud技术探秘:云搜索服务技术实践
本文插图
搜索的部分应用
从业务上来讲 , 搜索是一种灵活提取/组织企业知识的手段 , 面向客户或企业自身都有很强的应用价值 。 在泛互联网/泛政府/大中小企业都有广泛的应用 。
二、企业如何构筑自己的搜索系统?
如果从头开始构筑自己的搜索系统 , 会是一个非常耗费时间与资源的事情 , 因为搜索技术确实比较复杂 。 就比如前面说过的表达文本索引的倒排表 , 就会有FST、PForDelta、Skip List等等很多底层数据结构以及工程实践要实现 。 再加上行列存储、数值索引、向量索引、分布式等其他方面的内容 , 投入的时间和资源会是一个惊人的数字 。 对于不是以提供搜索引擎为主业的企业来说 , 最好的选择是从一个优秀的开源软件开始 , 比如Elasticsearch 。
【『AI科技大本营』华为开发者大会HDC.Cloud技术探秘:云搜索服务技术实践】
『AI科技大本营』华为开发者大会HDC.Cloud技术探秘:云搜索服务技术实践
本文插图
Elasticsearch , 简称ES
Elasticsearch拥有着强大的功能 , 从它开始搭建搜索系统能够节省大量的时间与资源 。
当然使用开源软件也不是一个一劳永逸的事情 。 如果是一个单机的Demo , 很容易 。 但是一旦上到生产系统 , 事情就变得不那么简单了 。