admin 管理员组

文章数量: 887021


腾讯云搜网址:http://yunsou.qq/

1.    技术,开放才能拉手向前!

腾讯云搜,继承了SOSO在搜索引擎领域多年的技术财富,在搜索架构、海量数据存储和计算、智能排序、用户意图识别、搜索质量运营等方面有很深的技术沉淀。因此从2013年底,云搜为公司内大量业务提供了搜索能力支撑,包括手机QQ、腾讯视频、QQ音乐、应用宝、腾讯地图、QQ空间、微信朋友圈等。

为满足各垂直业务的需求,逐步承载了大量个性化搜索能力。搜索团队对个性化搜索需求不断的提炼与抽象,将需求能力化、组件化、平台化。最终形成了对各垂直业务成熟的搜索开放能力。2014年底对外搭建了一站式搜索托管服务平台腾讯云搜。

 

2.    搜索是个啥?

要做一个开放搜索技术的网站,得先了解搜索是个啥?能吃能喝还是能用?

 

2.1.  从一次搜索说起

一个搜索框,点一下就出结果,这就是搜索?

YES,用户看到的搜索就该是这样。

但“台上一分钟,台下十年功”。一次点击,一个搜索结果页在后台承载了多少的技术,我们来说道说道。

用户检索视图

 

二狗子想在腾讯视频看电影了,在搜索框输了“XXXXXX”,然后留着口水等着电影。

腾讯视频搜索框

 

腾讯视频君二话不说,将搜索请求给到腾讯云搜的大管家RBU(根代理服务器模块),并将这件事情交由大管家全权负责。

大管家何许人也,是搞管理的人才。马上向“检索串处理模块”,英文名“QRW”的分析师下达命令:“马上给我分析下这个检索串,搞完了,我要给探索者找合适的视频内容”。

检索串处理相关模块

 

分析师不敢怠慢,立即开动马达,其手段了得,我给大家剖析一二:

²  招式1:分析用户搜检索串的意图,如地域、时新性等

²  招式2:看检索串是否有无意义的词如“的”、“了”等,有就给去除掉

²  招式3:找同义词及近义词,如搜红薯,给地瓜的结果也是可以的

²  招式4:检索串扩展

    ......

    同时分析师求助了纠错模块,看检索串有没有错误的地方要纠正

²  如将“liudehua”纠正为“刘德华”。“植物大战僵师”纠正为“植物大战僵尸”

.....此处省略一千字,分析师终于分析完啦。

分析师将检索串拆成了一个个的词(这个在云搜后台可以控制分词的方式),并给每个词赋予了wordid,然后给到了大管家

 

这边刚完事,大管家立即将任务丢给了探索者“在线检索系统”。探索者很高兴,立即将wordid拿去从视频列表中找含有这些词的视频。

在线检索系统处理模块

 

视频列表拿出来了,还是一堆杂乱的了,这时探索者对文档做了求交,先把重复的给去了,然后根据被搜索的视频与检索串的相关性做了排序。

探索者本来想休息了,可是还得按照以下两种方式对文档再排个序,因为这个是视频君要求的:

²  按照视频君的配置的文档权重排序

²  按照视频君定义的排序表达式排序(这两个请亲自去腾讯云搜体验吧!)

结果终于排好了,探索者将结果列表给了大管家。

大管家乐了,立即给到了应用君做前端展现。

二狗子看着推荐的电影列表,一拍大腿,这就是我想要的,擦掉口水,点了第一个视频看起来了!

据说,整个过程不会超过100毫秒

2.2.  还没完,矿从那里来?

看完上面的东西,以为搜索已经hold住啦?还没完了,探索者挖掘的矿(文本)从哪里来?用户检索前,网站不需要做啥准备吗,临时上菜?细心的看客已经发现了。

在线检索系统处理模块

在用户搜索前,网站是需要做大量的数据准备的,离线索引模块就隐居幕后,默默的做着准备。

离线索引的主要功能是:根据业务的配置,对业务数据进行初级排序,预处理以及索引处理。

离线处理流程

具体为对文档进行分词,索引选取,计算词的wordidposition信息,并且建立从文档的docid到词的wordid的顺排关系,然后将顺排关系推送给探索者加载。其中核心步骤是索引选取,即建立docidwordid list之间的映射关系。

探索者然后根据离线索引模块生成好的顺排数据,生成从wordiddocid list的倒排索引,以准备好用户的检索

 

    至此,看官对搜索服务应该大致理解了吧,纯属个人总结,有错误的地方你提出来,我改。

 

3.    给你一个轻盈灵活的小龙女

腾讯云搜作为一套通用的搜索托管服务平台,不可避免的很多环节是需要应用开发者自己去配置,才能生效的。但作为一个纯技术型网站,用户的学习成本比较大,如何给用户一个绝世美女,让用户愿意接了?

云搜需要更轻量,除必须的功能外,其他功能全部剥离到主流程外。这样减少用户对搜索服务的理解成本;

云搜需要更灵活,满足不同业务的个性化配置需求,这样满足高端用户对搜索质量的苛求;

必须更集中,以往纠错等服务需要单独申请,在腾讯云搜中必须集成对应功能,并能一键实现。

 

6:开发者接入视图

 

 

3.1.  轻量化

   从图6可以看出,为减轻用户接入成本,腾讯云搜将大量的搜索功能组件化抽取到了主流程之外。用户必须操作的只有新建应用+API推送数据。

分词方式、Smartbox、按域检索、高级纠错、排序定制等搜索能力全部抽取为组件,仅给有需求有意愿学习的人使用。

现阶段在定义应用结构和上传数据的模块还不够轻量化,这个你有什么好点子,快快来提吧!

 

3.2.  灵活性

 

搜索服务中相当多的通用能力是可以拿出来的,如分词方式,不同的分词方式对应的结果集和质量是不同的, 用户在产品的不同阶段根据内容量需要选择不同的方式,如内容少时,采用单字分词可以获得更多的结果,但质量低。

这样的功能,为了轻量化,隐藏在后台,由系统默认一种分词方式也无可厚非,但是为了满足用户的灵活性需求,在默认最优方式的基础上,我们将这样的功能剥离了出来,给用户自由配置的空间。以下功能也可自由配置:

²  智能联想(Smartbox

    允许用户根据业务,选定合适的字段,在用户输入检索串的过程中,帮助补齐检索串的额内容,以提高用户体验。

²  按域检索

允许用户根据搜索框的场景,将搜索的文本范围限制在合适的范围内,如搜索视频,大家都搜索演员和电影名,那么开发者可以限制搜索框仅在这两者中检索,具体可以自由配置。如以下就是在三个不同的域中检索后组合起来的。

²  高级纠错

除通用的将拼音纠成汉字,如“ldh”纠正为“刘德华”之外,允许开发者根据业务场景,对检索串自定义纠错。如用户输入“武林Q传”,在视频中会纠正为“武林外传”,应用宝中会纠正为“武侠Q传”,一切以网站的内容为准,当然业务可以强制将一个词纠正为另一个词,如敏感词。黄片纠正为伦理啊,之类的可以看的。

²  排序定制

用户可以选定数据范围,并设定排序方式,对数据进行定制化的排序。

3.3.  集中化

 

相关的服务,必须集中起来,之前的纠错服务,是单独的服务,需要用户单独申请,单独传数据。腾讯云搜上,业务只需要勾选需要纠错的字段即可完成定制纠错。当然用户可以上传数据,强制将某一检索串纠正为其他检索串。

 


关注云搜公众号,了解更多


本文标签: 都在 腾讯 网站