Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

腾讯大讲堂25 企业级搜索托管平台介绍

2,595 views

Published on

Published in: Education
  • Be the first to comment

腾讯大讲堂25 企业级搜索托管平台介绍

  1. 1. 企业级搜索托管平台介绍 Smith. 2008.3.26. 搜索技术中心 .
  2. 2. 目录 <ul><li>检索算法基础 </li></ul><ul><li>搜索托管平台介绍 </li></ul><ul><li>搜索托管平台展望 </li></ul>
  3. 3. 第一部分 <ul><li>检索算法基础 </li></ul><ul><ul><li>基本概念 </li></ul></ul><ul><ul><li>基本算法 </li></ul></ul><ul><ul><li>算法难点 </li></ul></ul><ul><li>搜索托管平台介绍 </li></ul><ul><li>搜索托管平台展望 </li></ul>
  4. 4. 检索算法基础 - 基本概念 正文数据库 相关结果检索 响应 检索 格式化 DB DB DB 检索数据库 ( 倒排数据库 ) 请求
  5. 5. 检索算法基础 - 基本概念 <ul><ul><li>名词: </li></ul></ul><ul><ul><ul><li>Doc , 文档 </li></ul></ul></ul><ul><ul><ul><li>Word, 词 </li></ul></ul></ul><ul><ul><ul><li>Index Term, 索引项 </li></ul></ul></ul><ul><ul><ul><li>DocID, 文档 ID </li></ul></ul></ul><ul><ul><ul><li>WordID, 词 ID </li></ul></ul></ul><ul><ul><ul><li>Inverted Index, 倒排 </li></ul></ul></ul><ul><ul><ul><li>Forward Sort, 顺排 </li></ul></ul></ul><ul><ul><ul><li>Broker, 代理 </li></ul></ul></ul><ul><ul><ul><li>Cache, 缓存(检索结果) </li></ul></ul></ul><ul><ul><ul><li>Abstract, 摘要 </li></ul></ul></ul><ul><ul><ul><li>Query Keywords, 检索串 </li></ul></ul></ul>
  6. 6. 检索算法基础 - 基本概念 <ul><li>问题 1 :信息如何表示? </li></ul><ul><ul><li>信息的来源? </li></ul></ul><ul><ul><ul><li>Qzone.qq.com </li></ul></ul></ul><ul><ul><ul><li>SINA.COM </li></ul></ul></ul><ul><ul><ul><li>QQ Mail </li></ul></ul></ul><ul><ul><ul><li>… … </li></ul></ul></ul><ul><ul><li>如何表示? </li></ul></ul><ul><ul><ul><li>对于非结构化信息,需要进行 抽取 、整理,转换成格式化信息; </li></ul></ul></ul><ul><ul><ul><li>格式化信息还需要进行过滤,去除无用信息, 去噪 ; </li></ul></ul></ul><ul><ul><ul><li>最后表示为 格式化文档 , </li></ul></ul></ul><ul><ul><ul><li>DataSrc := { Doc } * ; </li></ul></ul></ul><ul><ul><ul><li>Doc := {DocID,{Text Field}*, {Num Field}*}* ; </li></ul></ul></ul><ul><ul><ul><li>例如: </li></ul></ul></ul><ul><ul><ul><ul><li>DocID := 46233597118 ; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Text Field := { Title: 我的博客 ,Text: 今天封闭开发开始了 , …… } ; </li></ul></ul></ul></ul><ul><ul><ul><ul><li> Num Field : = { 回复数 :108,QQ Rank: Lv3, …… }; </li></ul></ul></ul></ul>
  7. 7. 检索算法基础 - 基本概念 <ul><li>问题 2 :倒排? </li></ul>原始文档 倒排索引 倒排 (invert sorting) 文档 内容 Doc1 … . 奥运会夺日程… . Doc2 … . 2008 奥运会日程… .. Doc3 … 公司班车日程表… 。。。   索引词 索引项 (intex term) 奥运会 <doc1><doc2> 。。。 日程 <doc1><doc3> 。。。 。。。 。。。
  8. 8. 检索算法基础 - 基本概念 <ul><li>问题 3 :检索? </li></ul>奥运会 <d0,d1,d2…> 词典 倒排文件 <d0,d1…> 日程 ② ③ 奥运会日程 ① ④ ∧ 文档属性
  9. 9. 检索算法基础 - 算法的分解 <ul><li>二分查找 </li></ul><ul><li>HASH 查找 </li></ul><ul><li>快速排序 </li></ul><ul><li>窗口排序 </li></ul><ul><li>多路归并 </li></ul><ul><li>平衡树 </li></ul><ul><li>B+Tree </li></ul><ul><li>SkipList </li></ul><ul><li>… … </li></ul><ul><li>多级索引算法 </li></ul><ul><li>数值压缩 </li></ul><ul><li>Bitmap 索引 </li></ul><ul><li>路由分布算法 </li></ul><ul><li>摘要提取算法 </li></ul><ul><li>多级相关性排序算法 </li></ul><ul><li>内存倒排算法 </li></ul>针对不同应用需求,选择简单、快速的算法;
  10. 10. 检索算法基础 - 常用算法 <ul><ul><li>问题 1: 存储? </li></ul></ul><ul><ul><ul><li>GZip 压缩正文 , 减小文档大小; </li></ul></ul></ul><ul><ul><ul><li>通过路由算法进行分布式存储; </li></ul></ul></ul><ul><ul><ul><li>平滑扩容 , 通过少量数据的搬迁; </li></ul></ul></ul><ul><ul><ul><li>DOCID 索引 + 顺序文件; </li></ul></ul></ul><ul><ul><ul><li>通过定期整理完成删除; </li></ul></ul></ul><ul><ul><ul><li>通过大小库完成数据的同步; </li></ul></ul></ul>
  11. 11. 检索算法基础 - 常用算法 <ul><ul><li>问题 2: 索引? </li></ul></ul><ul><ul><ul><li>索引过程分为以下几步 </li></ul></ul></ul><ul><ul><ul><ul><li>切词 , 通过中文分词算法 , </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Doc:={word string}* ; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>建立词典 ,HASH 或 顺序,完成文本到编码的转换 ; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Dict := {WordID, String}* ; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>顺排 , 计算 Doc 内部的词的排序信息, Doc:={WordID,pos,weight}* ; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>倒排; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>WordID := {DocID,Weight,Pos}*; </li></ul></ul></ul></ul>
  12. 12. 检索算法基础 - 常用算法 <ul><ul><li>问题 3: 检索? </li></ul></ul><ul><ul><ul><li>获取用户的检索串; </li></ul></ul></ul><ul><ul><ul><li>对检索串进行分词; </li></ul></ul></ul><ul><ul><ul><li>将检索串分解为词的 and,or,not 关系的复合; </li></ul></ul></ul><ul><ul><ul><li>分别读出倒排,进行 and,or,not 的计算; </li></ul></ul></ul><ul><ul><ul><li>进行相关性排序,返回 top n 的结果给用户。 </li></ul></ul></ul>OR AND AND 下载 腾讯 腾讯 搜索
  13. 13. 检索算法基础 - 常用算法 <ul><ul><li>问题 4: CACHE ? </li></ul></ul><ul><ul><ul><li>用户检索的几个特征 </li></ul></ul></ul><ul><ul><ul><ul><li>63% 的用户只浏览检索结果第一页; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>96% 的用户只浏览检索结果前三页; </li></ul></ul></ul></ul><ul><ul><ul><li>Cache 的对象 </li></ul></ul></ul><ul><ul><ul><ul><li>Search results </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Invert files Block </li></ul></ul></ul></ul><ul><ul><ul><li>三级 cache </li></ul></ul></ul><ul><ul><ul><ul><li>Top 10000 热门查询放内存 cache; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>余下的查询按照 LRU 策略放硬盘; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>倒排 cache 策略; </li></ul></ul></ul></ul>
  14. 14. 检索算法基础 - 常用算法 <ul><ul><li>问题 5: 排序? </li></ul></ul><ul><ul><ul><li>文档的内部属性 </li></ul></ul></ul><ul><ul><ul><ul><li>词频、词性 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>位置、区域 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>格式、颜色 </li></ul></ul></ul></ul><ul><ul><ul><li>文档的外部属性 </li></ul></ul></ul><ul><ul><ul><ul><li>重要程度 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>重复度 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>引用数 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>URL </li></ul></ul></ul></ul><ul><ul><ul><ul><li>评论 </li></ul></ul></ul></ul><ul><ul><ul><li>文档的关系属性 </li></ul></ul></ul><ul><ul><ul><ul><li>Anchor Text </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Link 关系 </li></ul></ul></ul></ul><ul><ul><ul><li>文档的用户属性 </li></ul></ul></ul><ul><ul><ul><ul><li>用户 login 行为分析 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>用户检索行为特征 </li></ul></ul></ul></ul><ul><ul><ul><ul><li>用户的本地方信息特征 </li></ul></ul></ul></ul>
  15. 15. 检索算法基础 - 常用算法 <ul><ul><li>问题 6: 压缩? </li></ul></ul><ul><ul><li>压缩的基本思想 : </li></ul></ul><ul><ul><ul><ul><li>以 Bit 作为存储的单位; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>高频使用较短的位表示,低频使用较长的位表示; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>有序整数序列,记录距离; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>对于稀疏序列的压缩 ; </li></ul></ul></ul></ul>
  16. 16. 检索算法基础 - 常用算法 <ul><ul><li>问题 7: 分布式? </li></ul></ul><ul><ul><li>文档分布,分解索引量的问题; </li></ul></ul><ul><ul><li>语素分布,分解检索计算量的问题; </li></ul></ul>
  17. 17. 检索算法基础 - 常用算法 正文库 属性库 顺排库 倒排库 检索集群 Cache 代理集群 APACHE doc
  18. 18. 检索算法基础 - 算法难点 <ul><ul><li>未来的一些挑战 </li></ul></ul><ul><ul><ul><li>硬件成本过高; </li></ul></ul></ul><ul><ul><ul><li>应对数据量激增; </li></ul></ul></ul><ul><ul><ul><li>排序的难度、个性化; </li></ul></ul></ul><ul><ul><ul><li>快速与精确的权衡; </li></ul></ul></ul><ul><ul><ul><li>新介质技术的应用; </li></ul></ul></ul><ul><ul><ul><li>个性化的搜索; </li></ul></ul></ul>
  19. 19. 第二部分 <ul><li>检索算法基础 </li></ul><ul><li>搜索托管平台介绍 </li></ul><ul><ul><li>项目背景 </li></ul></ul><ul><ul><li>平台介绍 </li></ul></ul><ul><li>搜索托管平台展望 </li></ul>
  20. 20. 项目背景 <ul><li>支持 R 线如下项目 </li></ul><ul><ul><li>X.qq.com 漩涡下载搜索系统 </li></ul></ul><ul><ul><li>V.qq.com video 视频搜索 </li></ul></ul><ul><ul><li>Taotao.com 滔滔搜索 </li></ul></ul><ul><ul><li>QQ client 消息搜索 </li></ul></ul><ul><li>支持互联网线如下项目 </li></ul><ul><ul><li>QZone qzone 博文搜索 </li></ul></ul><ul><ul><li>QZone 个人档案搜索 </li></ul></ul><ul><ul><li>QQ Show 商品搜索 </li></ul></ul><ul><ul><li>QQ Photo 相册搜索 </li></ul></ul><ul><ul><li>QQ Live 节目搜索 </li></ul></ul><ul><ul><li>Paipai.com 商品检索 </li></ul></ul>
  21. 21. 项目背景-问题 问题 原因 办法 沟通成本 1. 尽可能减少沟通环节 ; 2. 站在公司的角度统一规划各种专项搜索的实施节奏; 3. 由一个团队来主要完成大部分事情,减少接口,简化协议; 1. 部门间合作流程复杂,沟通环节较多; 2.. 问题解决的成本较高; 3. 大家理解问题的角度、背景不一样,需求变化大。 1. 合并相同、类似需求,在一个系统中加载多业务数据; 2. 定期提供升级、优化的版本,提高用户体验; 3. 对 Log, 数据源特征进行挖掘,迭代优化排序效果、检索特性。 4. 对搜索相关服务质量(排序、速度、用户检索 Log 与质量)的持续跟进; 1. 技术中心同事疲与应付各种需求的变更; 2. 排序、存储、速度、优化没有空隙时间去做; 服务质量 1. 没有简单的办法能彻底避免工作量,但统一存储、计算、提供能大大缩减开发工作量; 2. 尽可能复用 OM 系统,这些小系统有很大的相似度; 3. 稳定、复用核心算法,花少部分人力解决维护、算法中相似但不相同的细节问题; 1. 数据源没有集中存储,变更不可控,带来额外工作量; 2. 系统复用度低; 3. 周边的小系统太多; 工作量 1. 针对一些搜索服务,硬件资源可以复用; 2. 周边的 OM 系统,可以搭建好平台提供给多个业务使用; 3. 从平台系统的角度对架构与资源进行优化,减少硬件资源的使用,降低 TCO 成本。 1. 一些搜索数据量、 PV 较低的业务,还有一些辅助系统占有了较多服务器; 2. 备份、容灾系统的冗余太多; 硬件成本
  22. 22. 搜索托管平台介绍 检索服务托管 数据存储托管 服务升级托管 维护、更新托管 <ul><li>提供 XML 检索协议接口; </li></ul><ul><li>直接提供 CGI 服务; </li></ul><ul><li>建立多业务可复用的运营、维护平台; </li></ul><ul><li>解决日志分析问题、内容安全等问题; </li></ul><ul><li>检索服务统一升级,提供更多实用、简单的特性; </li></ul><ul><li>提供检索 log 数据分析服务、界面; </li></ul><ul><li>提供类 XML 协议接口、 ping 协议接口; </li></ul><ul><li>提供文本数据存储、状态数据更新等接口; </li></ul>
  23. 23. 搜索托管平台介绍
  24. 24. 搜索托管平台介绍 服务控制单元 索引、加载单元 协议接口控制单元 Cache 代理单元 数据存储单元 分布式检索单元 内存检索单元 主要功能单元分析 日志分析单元 运营维护单元
  25. 25. 第三部分 <ul><li>检索算法基础 </li></ul><ul><li>搜索托管平台介绍 </li></ul><ul><li>搜索托管平台展望 </li></ul>
  26. 26. 搜索托管平台展望 - 流程 收集需求 托管支持 统一维护 排序改进
  27. 27. 搜索托管平台展望 - 流程 新需求开发 维护与支持 服务 质量改进 服务、运营质量改进 维护与支持 新需求 开发
  28. 28. 搜索托管平台展望 - 计划 <ul><ul><li>以托管的方式继续支持公司内新的专项搜索项目,群搜索, QZone 搜索 2.0, 新版 video 搜索,新版漩涡搜索。 </li></ul></ul><ul><ul><li>托管平台 1.0 设计、部分开发完成。重点是运营维护单元、数据存储单元、协议接口单元。 </li></ul></ul><ul><ul><li>托管平台运维质量控制流程、新项目开发流程、新特性升级等接口流程实践。 </li></ul></ul><ul><ul><li>团队建设:补充相应的前台开发、后台开发、日志分析、系统运维人员。 </li></ul></ul><ul><ul><li>平台 2.0 版本设计与开发 . 重点是排序优化,日志的挖掘,与应用系统接口的简化等。 </li></ul></ul><ul><ul><li>为 paipai 等关键重要业务提供健壮的搜索提供托管式检索服务。 </li></ul></ul><ul><ul><li>开始对腾讯内部重点数据进行分析、整理,为网页搜索补充腾讯内部各重点数据。 </li></ul></ul>Q1-Q2 Q3 Q4 <ul><ul><li>完成现有主要支持项目到到托管平台的迁移。 </li></ul></ul><ul><ul><li>托管平台 1.0 全部开发测试完成。包括通用的内外存索引、检索单元,排序单元。 </li></ul></ul><ul><ul><li>托管平台各项工作流程规范化。 </li></ul></ul><ul><ul><li>开始研究与采用 Login 后检索的体验 , 进行用户行为分析,包括有商业价值的数据与流量的分析。 </li></ul></ul>
  29. 29. 谢谢各位 

×