狠狠撸

狠狠撸Share a Scribd company logo
FAST ESP 搜索系统 技术中心 2009 年 9 月
系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast  esp 讨论内容
系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast  esp 讨论内容 系统结构 相关术语
系统结构 Administration Services 内容聚合 web DB file 文档处理 内容 文档 索引系统 搜索系统 查询和 结果处理 用户
Content— 内容。 比如: html 页面、 db 表、 word 文档等等原始数据 Document 和 Document Element - 文档和文档元素。 Index profile collection Search Profile— 由多个 collection Row 、 Column 相关术语
系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast  esp 讨论内容 获取内容概述 Collections Document Model Web 内容 ---Crawler File 、 xml 内容 ---File Traverser DB 内容 ---JDBC Connection
获取内容( feeding content ) 获取内容的方式 Enterprise Web Crawler File Traverser Jdbc database connectors 第三方 connectors Content Api Connectors ContentApi crawler File traverser Jdbc connectors 文 档 处 理 器 Fast esp 集成的 Fast 软件包 web DB file
Collections 获取的内容都会进入 collections 一个 collection 是可搜索文档的一个逻辑组 Collection 属性 名称 属于单一的 search cluster 每个 collection 对应单个文档处理 pipeline 一个 collection 可以对应多个数据源。但是同一种数据源只能对应一个 pipeline web DB file crawler jdbc File Trav Collection : Documents
内容会被处理为 document 。 重要的 Document 元素 url Docid= 初始为 url Contentid=docid Internalid=md5(docid)+”_”+collectionName Data—default element Xml---default element  在通过其他处理器时, Contendid 和 internalid 保持不变 Document Model
支持分布式的抓取 支持增量抓取和更新 支持通过 crawler store 重新获取内容 Request rate : 站外: 60s ;站内: 30s Refresh interval : 1440s 针对传统网页抓取设计 可以抓取 rss Web 内容 ---Crawler
File Traverser 其他文件 PDF 文件 XML 文件 File Traverser Document Processing DB collection collection collection
可以转换远程文件服务器中的文件 支持 PDF 、 ppt 、 word 、 txt 等文件的转换 批量发送文件到 content api 可以独立运行 File Traverser
JDBC Connector JDBC  Connector Document Processing DB Result Set sql 内 容 分 发 每行 1 个 文档 collection collection collection
系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast  esp 讨论内容 文档处理系统 内容流 Document 、 Collection 、 Pipeline 、  Stage 文档处理 stage Entity Extraction
文档处理系统 Document Processing  Engine 内 容 API 内 容 分 发 Search index index QR SFE collection collection collection
文档处理系统 包括 Content Distributors 内容分发 Content API 提交文档到内容分发器 内容分发器分发文档到文档处理器 Document Processing Engine 文档处理引擎 提交处理的文档 发送文档到 indexer
内容流 Document Processing  Engin Collection 1 内 容 API 内 容 分 发 index searchApi SFE Collection n Collection 2 API 客户扩展的处理器
Document 、 Collection 、 Pipeline 、 Stage Document 可以被搜索的实体 属性集,属性值 在获取内容时被设置 在文档处理时被计算 属性可以 map 到 index 中的 field Document Processing Attributes Content Api Document elements Index Document fields Index profile
Document 、 Collection 、 Pipeline 、 Stage Collection Collection A Collection B
Document 、 Collection 、 Pipeline 、 Stage Pipeline 由 stage 组成 一个 collection 对应一个 pipeline 一个 pipeline 可以对应多个集合 Content Doc init Doc Retri eval … Gen fixml Send To Indexer Indexing
Document 、 Collection 、 Pipeline 、 Stage Stage 读取属性值 分析计算 修改或设置属性值 可以扩展
Entity Extraction 从源属性取出感兴趣的实体把结果保存在目地属性 方法 基于字典 正则表达式 Python code 电影 电视剧 动漫 动作 喜剧 剧情 刘德华 周星 Title :天若有情 - 主演:刘德华 Title :电视剧 - 李小龙传奇 Title : Tag: 刘德华 Title : Tag: 电视剧
系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast  esp 讨论内容 概述 文档处理相关 搜索处理系统 Query 和结果处理相关
为搜索的 cluster 定义的 index 的“ schema” 包含 fields 配置文档处理属性( tokenization 、 lemmatization ) 配置 search 相关属性(那些 field 可以被搜索、怎样搜索) 配置 result 处理相关属性( navigation 和 result view 、 sort 、 ranking ) 每个 cluster 只能对应一个 XML 格式的配置文件 概述
<index-profile name=“default”> <field-list></field-list> <geo-secification></geo-secification> <scope-field-list></ scope-field-list> <composite-field></composite-field> <rank-profile></rank-profile> <result-secification></result-secification> </index-profile> 概述
Fields Field 的属性 Linguistics Searching Sorting Result display Type:string/int32/uint32/geo/float/double/datetime 例子 <field name=“title” fullsort=“yes” tokenize=“auto|delimiters” lemmatize=“yes”> <vectorize default=“10:0”> </field> <field name=“size”type=“int32”fullsort=“yes”/> 文档处理相关
Scope field 对应结构化的 xml 文档。等级结构 . Type:text 例子 Input: <book> <chapter> <id type=“int32”>1</id> <heading>act 1</heading> <sentence>sen1</sentence> <sentence>sen2</sentence> </chapter> </book> 文档处理器 map 到 xml field : xml: book : (string) chapter:(string) id:1(type=int32) heading:”act1”(string) sentence:”sen1”(string) sentence:”sen2”(string) 文档处理相关
搜索处理系统 index 搜索 引擎 SFE Search Api Query and Result Server query 结果 Query& 参数 Query& 参数 HTTP client Text/xml 结果 Enhanced 结果 API client 结果处理 pipeline query 处理 pipeline
Field 的相关属性 Index Max-index-size Boundary-match Separator Wildcard : prefix|full substring Query 和结果处理相关 Prefix : fas* Full:fas*/*ash/f?st Substring=6 Query:summer D:midsummer
Composite Field <composite-field name=&quot;content&quot; default=&quot;yes&quot; query-tokenize=&quot;auto&quot; lemmas=&quot;yes&quot;> <field-ref name=&quot;title&quot; level=&quot;4&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;body&quot; level=&quot;1&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;description&quot; level=&quot;2&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;urlkeywords&quot; level=&quot;3&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;keywords&quot; level=&quot;3&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;anchortext&quot; type=&quot;external&quot; level=&quot;5&quot; field-separation-length=&quot;256&quot;/> </composite-field> Query 和结果处理相关
Sort 属性 Sort : yes |no. 前 4 个字符 Fullsort:yes| no |latent ranking Result view Result Filters-- 移除重复记录 Query 和结果处理相关
Composite Field <composite-field name=&quot;content&quot; default=&quot;yes&quot; query-tokenize=&quot;auto&quot; lemmas=&quot;yes&quot;> <field-ref name=&quot;title&quot; level=&quot;4&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;body&quot; level=&quot;1&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;description&quot; level=&quot;2&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;urlkeywords&quot; level=&quot;3&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;keywords&quot; level=&quot;3&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;anchortext&quot; type=&quot;external&quot; level=&quot;5&quot; field-separation-length=&quot;256&quot;/> </composite-field> Sort 和 ranking Result view Navigator String Navigator Numeric Naviator Query 和结果处理相关
系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast  esp 讨论内容 Rank Profile 相关术语 相关 算法
Rank Profile <rank-profile name=&quot;default&quot; rank-model=&quot;default&quot; default=&quot;no&quot;  stop-word-threshold=&quot;2E6&quot;  position-stop-word-threshold=&quot;2E7&quot;>  <quality weight=&quot;500&quot; field-ref=&quot;uuseedocquality&quot; />  <authority weight=&quot;80&quot; field-ref=&quot;anchortext&quot;/>  <freshness weight=&quot;0&quot; field-ref=&quot;uuseeupdatedate&quot; auto=&quot;yes&quot;/> <composite-rank composite-field-ref=&quot;content&quot;>  <proximity weight=&quot;50&quot; />  <context weight=&quot;50&quot;>  <field-weight field-ref=&quot;body&quot; value=&quot;5&quot;/>  <field-weight field-ref=&quot;description&quot; value=&quot;30&quot;/> <field-weight field-ref=&quot;urlkeywords&quot; value=&quot;40&quot;/>  <field-weight field-ref=&quot;keywords&quot; value=&quot;50&quot;/>  <field-weight field-ref=&quot;title&quot; value=&quot;60&quot;/>  </context>  </composite-rank>  </rank-profile>
相关术语 ( Relevancy Terminology ) For muli-term queries:the shorter the distance between query terms in a document,the higher the document’s rank value Proximity Importance of matching a query in a given document field Context Importance of geographical distance between a document’s associated latitude/longitude and a target location specified in a query Geo Assigned importance of a document , independent of the query Quality Importance of a document determined by the links to it from other documents Authority Age of a document compared to the time when the query is issued Freshness 描述 术语
相关术语 ( Relevancy Terminology ) 计算 context 和 proximity 时额外用到的统计数据。 The greater the number of query terms present in the same field of a matching document, the highter the document’s rank value Completeness The more frequent a query term occurs in the document(term frequency or TF)relative to the term’s frequency in the index(inverse document frequency or IDF),the higher the document’s rank value Frequency The earlier a query term occurs in a field,the highter the document’s rank value Position 描述 术语
相关算法 ( Relevancy Formula ) R(d,q)=S(d)+F(d,T)+D(d,q) R=query q  在 document d 中的 rank 值 S=document d 的静态 rank 值,与 query 无关 F=freshness of document d at time t D=dynamic rank
相关算法 ( Relevancy Formula ) R(d,q)=S(d)+F(d,T)+D(d,q) (boost_coefficient*w_quality/100)*static_rank_field(d) boost_coefficient 默认为 2 w_quality quality 的权重 static_rank_field 默认值 索引文档时指定 通过 SBC 修改
相关算法 ( Relevancy Formula ) R(d,q)=S(d)+F(d,T)+D(d,q) (w_freshness/100)*fn(time scale,document age) w_freshness freshness 的权重 Document age = current time – document time 单位:分钟
相关算法 ( Relevancy Formula ) R(d,q)=S(d)+F(d,T)+D(d,q) 单 term 的 query (Fn(FO)+fn(NO)+W_authority/100*fn(ExtNO)+single_boost*W_context/100*sum(W_fieldN/100)) /fn(num_matching_docs) Fn(FO)-- 基础是 query term 在文档中第一次出现的位置 fn(NO)-- 基础是 query term 在文档中出现的次数 W_authority—authority 的权重 fn(ExtNO)— 在 authority 相关的 field 中出现的次数 single_boost— 单 term 时的 boost 系数 W_context---context 的权重 W_fieldN---context 中 field 的权重 fn(num_matching_docs)— 在单个搜索节点, term 在 document 中出现的总数
相关算法 ( Relevancy Formula ) R(d,q)=S(d)+F(d,T)+D(d,q) Multi_term 的 query D(d,q1)+D(d,q2)+…+W_context/100*fn(common context)+fn(operator)+W_proximity/100*fn(term proximity) fn(common context)— 在相同的 context 中有几个 term 被发现 fn(operator)— 当 OR/ANY/NEAR/ONEAR 时使用 W_proximity— proximity 的权重 fn(term  proximity )
系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast  esp 讨论内容 Fast ESP 的语言学特性 CJK 语言
Fast ESP 的语言学特性 自动探测 79 种语言 高级特性支持 30 种语言,包括中文 分词 Tokenization 符号标准化。 Character normalization 移除停止词 Anti-phrasing 和 stopword 语音搜索 Phonetic search Email 、人名、地名等 Entity Extraction French Open , John Lervik Proper Name  或 phrase 识别 Car—automobile Synonyms go—goes—going—went—gone Lemmatization sarsh----search spellchecking
Fast ESP 的语言学特性 增加索引时间 增加内容处理时间 增加磁盘使用 好的用户体验 坏处 好处
Fast ESP 的语言学特性 不需要重新处理文档 需要重新处理文档 增加 QPS 省 query 时间 Proper name 和  phrase recognition 不影响 index 增加 index Anti-phrasing 、 stopword Entity extraction Spell checking Tokenization Synonym Synonym Lemmatization Lemmatization Query 时使用 内容处理时使用
CJK 语言 定义 CJK- 中文、日文、韩文 英文使用空格或标点符号作为单词之间的分隔符; 中文、日文、韩文没有明显的分词标识
CJK 语言 Character normalization (符号标准化) 全角到半角。->  Fast ESP 5.0 半角到全角。-> カギ 汉语数字到阿拉伯数字。一万五千->  15000 異體字到正體字。羣-> 群 ,  歎-> 嘆 简体繁体互换。 中國對外經濟貿易? 中国对外经济贸易 軟體 软件 金山 詞霸 词霸 After character normalization 軟體 软件 金山 詞霸 After qt_synonym 軟體 金山 詞霸 Original Query Query keywords Stage
CJK 语言 中文分词规则 人名:姓和名的第一个字被分割为一个词。 文档:李小龙  query :李小  结果:李小龙 小龙  结果: misss 助词被作为分隔符处理。比如:的 ,  们 ,  地 ,  了 , 过 文档:老師的  , 同学们 ,  簡略地  ,  生產了 取消過  .  query :同学  结果:同学们 补语被作为分隔符处理。比如:表達出來  ,  使用下去  ,  確認得了  ,  漂亮極 这些语法上特性都是默认支持的。的不需要 lemmatization stage 支持。
CJK 语言 中华人民共和国 1.substring=1 中  华  人  民  共  和  国 2.substring=2 中华  华人  人民  民共  共和  和国 Substring
系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast  esp 讨论内容 定义 多节点体系 Index Partitions 机制
Fault Tolerance 在软件或硬件故障时,提供服务的能力 几种模式 Fail safe Fail soft Fail stop 定义
factor Content volumn 系统可以处理的内容数量 Query rate QPS- 系统每秒必须处理的请求数 Content dynamics 每天新增文档数、删除文档数 Search latency 提交 query 到 QR 服务器到结果返回的时间 Index latency 文档提交到可以搜索的时间 定义
多节点体系 获取内容 文档处理子系统 索引子系统 搜索子系统 查询与结果处理 子系统 搜索用户 Admin 组件
多节点体系 - 文档处理子系统 文档处理器 文档处理器 内容分发 文档处理器 文档处理器 内容分发 多个组件可以增加可靠性、提供文档处理能力 一个内容组件同时只能连接到一个内容分发器 每个文档处理器同时仅和一个内容分发器通信 如果内容分发其 down ,动态重新配置
多节点体系 - 索引子系统 indexer indexer 内容分发 indexer 索引分发 索引发发 将文档分发到不同的 column 多个可以增加可靠性、提高处理能力 Indexer- 矩阵形式 多 column 增加文档数量和提高索引的性能 多 row 提供可靠性 indexer
多节点体系 - 索引子系统 Indexer ( master ) Indexer (  master  ) 内容分发 Indexer (  backup  ) 索引分发 Master indexer 一 column 仅有一个 master indexer Search 仅和 master indexer 通信 Backup indexer 仅存储 fixml 和 indexing 操作 Failover 请求索引的建立( fail soft ) Indexer ( backup )
多节点体系 - 索引子系统 Indexer (  master  ) 内容分发 索引分发 索引分发器提交文档操作到列的 master indexer 如果超过 indexers 失败的数操作不会执行。这个数是可配置的 Master 安排索引 仅当所有 row 报告 ready 时激活新的 index Indexer (  backup  ) Indexer (  backup  )
多节点体系 - 搜索和 QR 子系统 search R0C0 Top-level 分发 ( QR ) 矩阵 Row— 可靠性和 query 性能 Column— 文档数量。和 index 的 column 数量一样 Top-level 分发器 在 row 间负载平衡 发送 query 到某一行的每一列、合并结果 search R1C0 search R0C2 search R0C1 search R1C2 search R1C1
多节点体系 - 搜索和 QR 子系统 search R0C0 Top-level 分发 ( QR ) 多 QR 可靠性和负载均衡 search R1C0 search R0C2 search R0C1 search R1C2 search R1C1 搜索用户 负载均衡
多节点体系 -index 部署 Indexer 和 search 在同一节点 Indexer 和 search 在不同节点 indexer Master indexer backup search search search indexer indexer indexer search search search
多节点体系 -admin 子系统 Name service 和 License Manager 可以 fault tolerant 。 存在单点故障 其他组件不支持 fault tolerant CORBA Name Service License Manager Resource Service Log Transformer Log Server Config server Cache Manager Admin Server Relbench Storage service Web server
Index Partitions 机制 每个 indexer 或 search 节点使用多个 indexing 的 partitions 每个 partition 容纳了索引的文档 Partitions are mirrored to permit incremental indexing and continuous search Content 被 index 进入最小的 partition Content 被合并到比较高的 partition 根据触发条件 0 1 2 docsDistributionPst : 100 , 100 , 100  触发条件: 10000 , 1000000 2 : 6
Index Partitions 优化 尽可能保持最小的 Partition 是空的 索引新内容意味着重新索引最小 Partition 为最小 Partition 设置比较低的触发条件,最小 Partition 将要快速移动索引到比较高的 Partition 但是:移动内容到比较高的 Partition 意味着比较高的 Partition 会重建索引 在 RAM disk 上建立最小的 Partition 0 1 2
Index blacklisting Blacklisting 被用来提高移除文档的速度 Blacklisting index 仅仅包含被删除文档的 id Search :自动调整为 term and not in blacklisting
Index blacklisting 例子 Document A ( A-1 )已经被索引。位于 partition2 Document A ( A-2 )修改后重新被提交。 新版本位于 partition0 ,这时在索引中同时又 2 个 Document A 在 blacklist index 重建之前,搜索结果中将同时包含 2 个 Document A blacklist index 重建后,搜索结果中将没有 Document A ( A-1 ),但是索引中仍然有 当 Document A ( A-2 )移动到 partition2 ,  partition2 重建索引,  Document A ( A-1 )从索引中被移除。 但是在 FiXML 中仍然有 2 个版本的 Document A 。 0 1 2 DocumentA-2 DocumentA-1
系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast  esp 讨论内容 部署结构 数据源 索引字段
部署结构 RI RS Ind RS RI RI RS RS RS RS QR Ind CP DP admin QR RT RT search10 search9 search5 search4 search3 search2 search1
部署结构 Ind DP QR QR RS RS RS RS RS RS RI RI RI Ind CP DP
Youku--------(2000 万 ) Tudou--------(1400 万 ) ku6  --------(3000 万 ) sina --------(500 万 ) sohu --------(200 万 ) cctv --------( 几十万 ) 56  --------(400 万 ) 数据源
索引字段 UGC- 现有字段: 建立专辑时使用 vuploadusername  视频上传用户 uuseeupdate 刷新时间 可以根据该字段导航 vsourcesite 来源网站 可以根据该字段导航 vtags  标签 可排序 vlength 视频长度 vplayurl  视频播放页面地址 可以根据该字段导航 vcategorys  类别 vlogo  视频图片  可排序 vtitle  视频标题 vevid 原始编码 ID vvid 原始 ID vid 唯一标识 备注 索引字段 名称
索引字段 UGC- 准备扩充字段: 建立专辑 vuploaduserid 视频上传用户 ID 计算权重。可排序 vlink 引用次数 计算权重。可排序 vcomment 评论次数 计算权重。可排序 vpageview 观看次数 计算权重。可排序 Vfav 收藏次数 可以根据该字段导航 vchannel 频道 备注 索引字段 名称
索引字段 专辑 - 现有字段: plvideocount 视频数 可以根据该字段导航 plchannel 频道 Vod 还是 ugc pltype 类别 plvideotitles 视频标题 plvideoinfo 视频信息 可以根据该字段导航 plsourcesite 来源网站 可以根据该字段导航 pltags  标签 可排序 pllength 总长度 VOD 时为文件 GUID plplayurl  第 1 个视频播放地址 可以根据该字段导航 plcategorys  类型 pllogo  图片  可排序 pltitle  标题 plbaikeid 百科 ID plid 唯一标识 备注 索引字段 名称
FAST ESP 搜索系统 技术中心 2009 年 9 月

More Related Content

Fast Esp搜索系统

  • 1. FAST ESP 搜索系统 技术中心 2009 年 9 月
  • 2. 系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast esp 讨论内容
  • 3. 系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast esp 讨论内容 系统结构 相关术语
  • 4. 系统结构 Administration Services 内容聚合 web DB file 文档处理 内容 文档 索引系统 搜索系统 查询和 结果处理 用户
  • 5. Content— 内容。 比如: html 页面、 db 表、 word 文档等等原始数据 Document 和 Document Element - 文档和文档元素。 Index profile collection Search Profile— 由多个 collection Row 、 Column 相关术语
  • 6. 系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast esp 讨论内容 获取内容概述 Collections Document Model Web 内容 ---Crawler File 、 xml 内容 ---File Traverser DB 内容 ---JDBC Connection
  • 7. 获取内容( feeding content ) 获取内容的方式 Enterprise Web Crawler File Traverser Jdbc database connectors 第三方 connectors Content Api Connectors ContentApi crawler File traverser Jdbc connectors 文 档 处 理 器 Fast esp 集成的 Fast 软件包 web DB file
  • 8. Collections 获取的内容都会进入 collections 一个 collection 是可搜索文档的一个逻辑组 Collection 属性 名称 属于单一的 search cluster 每个 collection 对应单个文档处理 pipeline 一个 collection 可以对应多个数据源。但是同一种数据源只能对应一个 pipeline web DB file crawler jdbc File Trav Collection : Documents
  • 9. 内容会被处理为 document 。 重要的 Document 元素 url Docid= 初始为 url Contentid=docid Internalid=md5(docid)+”_”+collectionName Data—default element Xml---default element 在通过其他处理器时, Contendid 和 internalid 保持不变 Document Model
  • 10. 支持分布式的抓取 支持增量抓取和更新 支持通过 crawler store 重新获取内容 Request rate : 站外: 60s ;站内: 30s Refresh interval : 1440s 针对传统网页抓取设计 可以抓取 rss Web 内容 ---Crawler
  • 11. File Traverser 其他文件 PDF 文件 XML 文件 File Traverser Document Processing DB collection collection collection
  • 12. 可以转换远程文件服务器中的文件 支持 PDF 、 ppt 、 word 、 txt 等文件的转换 批量发送文件到 content api 可以独立运行 File Traverser
  • 13. JDBC Connector JDBC Connector Document Processing DB Result Set sql 内 容 分 发 每行 1 个 文档 collection collection collection
  • 14. 系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast esp 讨论内容 文档处理系统 内容流 Document 、 Collection 、 Pipeline 、 Stage 文档处理 stage Entity Extraction
  • 15. 文档处理系统 Document Processing Engine 内 容 API 内 容 分 发 Search index index QR SFE collection collection collection
  • 16. 文档处理系统 包括 Content Distributors 内容分发 Content API 提交文档到内容分发器 内容分发器分发文档到文档处理器 Document Processing Engine 文档处理引擎 提交处理的文档 发送文档到 indexer
  • 17. 内容流 Document Processing Engin Collection 1 内 容 API 内 容 分 发 index searchApi SFE Collection n Collection 2 API 客户扩展的处理器
  • 18. Document 、 Collection 、 Pipeline 、 Stage Document 可以被搜索的实体 属性集,属性值 在获取内容时被设置 在文档处理时被计算 属性可以 map 到 index 中的 field Document Processing Attributes Content Api Document elements Index Document fields Index profile
  • 19. Document 、 Collection 、 Pipeline 、 Stage Collection Collection A Collection B
  • 20. Document 、 Collection 、 Pipeline 、 Stage Pipeline 由 stage 组成 一个 collection 对应一个 pipeline 一个 pipeline 可以对应多个集合 Content Doc init Doc Retri eval … Gen fixml Send To Indexer Indexing
  • 21. Document 、 Collection 、 Pipeline 、 Stage Stage 读取属性值 分析计算 修改或设置属性值 可以扩展
  • 22. Entity Extraction 从源属性取出感兴趣的实体把结果保存在目地属性 方法 基于字典 正则表达式 Python code 电影 电视剧 动漫 动作 喜剧 剧情 刘德华 周星 Title :天若有情 - 主演:刘德华 Title :电视剧 - 李小龙传奇 Title : Tag: 刘德华 Title : Tag: 电视剧
  • 23. 系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast esp 讨论内容 概述 文档处理相关 搜索处理系统 Query 和结果处理相关
  • 24. 为搜索的 cluster 定义的 index 的“ schema” 包含 fields 配置文档处理属性( tokenization 、 lemmatization ) 配置 search 相关属性(那些 field 可以被搜索、怎样搜索) 配置 result 处理相关属性( navigation 和 result view 、 sort 、 ranking ) 每个 cluster 只能对应一个 XML 格式的配置文件 概述
  • 25. <index-profile name=“default”> <field-list></field-list> <geo-secification></geo-secification> <scope-field-list></ scope-field-list> <composite-field></composite-field> <rank-profile></rank-profile> <result-secification></result-secification> </index-profile> 概述
  • 26. Fields Field 的属性 Linguistics Searching Sorting Result display Type:string/int32/uint32/geo/float/double/datetime 例子 <field name=“title” fullsort=“yes” tokenize=“auto|delimiters” lemmatize=“yes”> <vectorize default=“10:0”> </field> <field name=“size”type=“int32”fullsort=“yes”/> 文档处理相关
  • 27. Scope field 对应结构化的 xml 文档。等级结构 . Type:text 例子 Input: <book> <chapter> <id type=“int32”>1</id> <heading>act 1</heading> <sentence>sen1</sentence> <sentence>sen2</sentence> </chapter> </book> 文档处理器 map 到 xml field : xml: book : (string) chapter:(string) id:1(type=int32) heading:”act1”(string) sentence:”sen1”(string) sentence:”sen2”(string) 文档处理相关
  • 28. 搜索处理系统 index 搜索 引擎 SFE Search Api Query and Result Server query 结果 Query& 参数 Query& 参数 HTTP client Text/xml 结果 Enhanced 结果 API client 结果处理 pipeline query 处理 pipeline
  • 29. Field 的相关属性 Index Max-index-size Boundary-match Separator Wildcard : prefix|full substring Query 和结果处理相关 Prefix : fas* Full:fas*/*ash/f?st Substring=6 Query:summer D:midsummer
  • 30. Composite Field <composite-field name=&quot;content&quot; default=&quot;yes&quot; query-tokenize=&quot;auto&quot; lemmas=&quot;yes&quot;> <field-ref name=&quot;title&quot; level=&quot;4&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;body&quot; level=&quot;1&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;description&quot; level=&quot;2&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;urlkeywords&quot; level=&quot;3&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;keywords&quot; level=&quot;3&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;anchortext&quot; type=&quot;external&quot; level=&quot;5&quot; field-separation-length=&quot;256&quot;/> </composite-field> Query 和结果处理相关
  • 31. Sort 属性 Sort : yes |no. 前 4 个字符 Fullsort:yes| no |latent ranking Result view Result Filters-- 移除重复记录 Query 和结果处理相关
  • 32. Composite Field <composite-field name=&quot;content&quot; default=&quot;yes&quot; query-tokenize=&quot;auto&quot; lemmas=&quot;yes&quot;> <field-ref name=&quot;title&quot; level=&quot;4&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;body&quot; level=&quot;1&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;description&quot; level=&quot;2&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;urlkeywords&quot; level=&quot;3&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;keywords&quot; level=&quot;3&quot; field-separation-length=&quot;256&quot;/> <field-ref name=&quot;anchortext&quot; type=&quot;external&quot; level=&quot;5&quot; field-separation-length=&quot;256&quot;/> </composite-field> Sort 和 ranking Result view Navigator String Navigator Numeric Naviator Query 和结果处理相关
  • 33. 系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast esp 讨论内容 Rank Profile 相关术语 相关 算法
  • 34. Rank Profile <rank-profile name=&quot;default&quot; rank-model=&quot;default&quot; default=&quot;no&quot; stop-word-threshold=&quot;2E6&quot; position-stop-word-threshold=&quot;2E7&quot;> <quality weight=&quot;500&quot; field-ref=&quot;uuseedocquality&quot; /> <authority weight=&quot;80&quot; field-ref=&quot;anchortext&quot;/> <freshness weight=&quot;0&quot; field-ref=&quot;uuseeupdatedate&quot; auto=&quot;yes&quot;/> <composite-rank composite-field-ref=&quot;content&quot;> <proximity weight=&quot;50&quot; /> <context weight=&quot;50&quot;> <field-weight field-ref=&quot;body&quot; value=&quot;5&quot;/> <field-weight field-ref=&quot;description&quot; value=&quot;30&quot;/> <field-weight field-ref=&quot;urlkeywords&quot; value=&quot;40&quot;/> <field-weight field-ref=&quot;keywords&quot; value=&quot;50&quot;/> <field-weight field-ref=&quot;title&quot; value=&quot;60&quot;/> </context> </composite-rank> </rank-profile>
  • 35. 相关术语 ( Relevancy Terminology ) For muli-term queries:the shorter the distance between query terms in a document,the higher the document’s rank value Proximity Importance of matching a query in a given document field Context Importance of geographical distance between a document’s associated latitude/longitude and a target location specified in a query Geo Assigned importance of a document , independent of the query Quality Importance of a document determined by the links to it from other documents Authority Age of a document compared to the time when the query is issued Freshness 描述 术语
  • 36. 相关术语 ( Relevancy Terminology ) 计算 context 和 proximity 时额外用到的统计数据。 The greater the number of query terms present in the same field of a matching document, the highter the document’s rank value Completeness The more frequent a query term occurs in the document(term frequency or TF)relative to the term’s frequency in the index(inverse document frequency or IDF),the higher the document’s rank value Frequency The earlier a query term occurs in a field,the highter the document’s rank value Position 描述 术语
  • 37. 相关算法 ( Relevancy Formula ) R(d,q)=S(d)+F(d,T)+D(d,q) R=query q 在 document d 中的 rank 值 S=document d 的静态 rank 值,与 query 无关 F=freshness of document d at time t D=dynamic rank
  • 38. 相关算法 ( Relevancy Formula ) R(d,q)=S(d)+F(d,T)+D(d,q) (boost_coefficient*w_quality/100)*static_rank_field(d) boost_coefficient 默认为 2 w_quality quality 的权重 static_rank_field 默认值 索引文档时指定 通过 SBC 修改
  • 39. 相关算法 ( Relevancy Formula ) R(d,q)=S(d)+F(d,T)+D(d,q) (w_freshness/100)*fn(time scale,document age) w_freshness freshness 的权重 Document age = current time – document time 单位:分钟
  • 40. 相关算法 ( Relevancy Formula ) R(d,q)=S(d)+F(d,T)+D(d,q) 单 term 的 query (Fn(FO)+fn(NO)+W_authority/100*fn(ExtNO)+single_boost*W_context/100*sum(W_fieldN/100)) /fn(num_matching_docs) Fn(FO)-- 基础是 query term 在文档中第一次出现的位置 fn(NO)-- 基础是 query term 在文档中出现的次数 W_authority—authority 的权重 fn(ExtNO)— 在 authority 相关的 field 中出现的次数 single_boost— 单 term 时的 boost 系数 W_context---context 的权重 W_fieldN---context 中 field 的权重 fn(num_matching_docs)— 在单个搜索节点, term 在 document 中出现的总数
  • 41. 相关算法 ( Relevancy Formula ) R(d,q)=S(d)+F(d,T)+D(d,q) Multi_term 的 query D(d,q1)+D(d,q2)+…+W_context/100*fn(common context)+fn(operator)+W_proximity/100*fn(term proximity) fn(common context)— 在相同的 context 中有几个 term 被发现 fn(operator)— 当 OR/ANY/NEAR/ONEAR 时使用 W_proximity— proximity 的权重 fn(term proximity )
  • 42. 系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast esp 讨论内容 Fast ESP 的语言学特性 CJK 语言
  • 43. Fast ESP 的语言学特性 自动探测 79 种语言 高级特性支持 30 种语言,包括中文 分词 Tokenization 符号标准化。 Character normalization 移除停止词 Anti-phrasing 和 stopword 语音搜索 Phonetic search Email 、人名、地名等 Entity Extraction French Open , John Lervik Proper Name 或 phrase 识别 Car—automobile Synonyms go—goes—going—went—gone Lemmatization sarsh----search spellchecking
  • 44. Fast ESP 的语言学特性 增加索引时间 增加内容处理时间 增加磁盘使用 好的用户体验 坏处 好处
  • 45. Fast ESP 的语言学特性 不需要重新处理文档 需要重新处理文档 增加 QPS 省 query 时间 Proper name 和 phrase recognition 不影响 index 增加 index Anti-phrasing 、 stopword Entity extraction Spell checking Tokenization Synonym Synonym Lemmatization Lemmatization Query 时使用 内容处理时使用
  • 46. CJK 语言 定义 CJK- 中文、日文、韩文 英文使用空格或标点符号作为单词之间的分隔符; 中文、日文、韩文没有明显的分词标识
  • 47. CJK 语言 Character normalization (符号标准化) 全角到半角。-> Fast ESP 5.0 半角到全角。-> カギ 汉语数字到阿拉伯数字。一万五千-> 15000 異體字到正體字。羣-> 群 , 歎-> 嘆 简体繁体互换。 中國對外經濟貿易? 中国对外经济贸易 軟體 软件 金山 詞霸 词霸 After character normalization 軟體 软件 金山 詞霸 After qt_synonym 軟體 金山 詞霸 Original Query Query keywords Stage
  • 48. CJK 语言 中文分词规则 人名:姓和名的第一个字被分割为一个词。 文档:李小龙 query :李小 结果:李小龙 小龙 结果: misss 助词被作为分隔符处理。比如:的 , 们 , 地 , 了 , 过 文档:老師的 , 同学们 , 簡略地 , 生產了 取消過 . query :同学 结果:同学们 补语被作为分隔符处理。比如:表達出來 , 使用下去 , 確認得了 , 漂亮極 这些语法上特性都是默认支持的。的不需要 lemmatization stage 支持。
  • 49. CJK 语言 中华人民共和国 1.substring=1 中 华 人 民 共 和 国 2.substring=2 中华 华人 人民 民共 共和 和国 Substring
  • 50. 系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast esp 讨论内容 定义 多节点体系 Index Partitions 机制
  • 51. Fault Tolerance 在软件或硬件故障时,提供服务的能力 几种模式 Fail safe Fail soft Fail stop 定义
  • 52. factor Content volumn 系统可以处理的内容数量 Query rate QPS- 系统每秒必须处理的请求数 Content dynamics 每天新增文档数、删除文档数 Search latency 提交 query 到 QR 服务器到结果返回的时间 Index latency 文档提交到可以搜索的时间 定义
  • 53. 多节点体系 获取内容 文档处理子系统 索引子系统 搜索子系统 查询与结果处理 子系统 搜索用户 Admin 组件
  • 54. 多节点体系 - 文档处理子系统 文档处理器 文档处理器 内容分发 文档处理器 文档处理器 内容分发 多个组件可以增加可靠性、提供文档处理能力 一个内容组件同时只能连接到一个内容分发器 每个文档处理器同时仅和一个内容分发器通信 如果内容分发其 down ,动态重新配置
  • 55. 多节点体系 - 索引子系统 indexer indexer 内容分发 indexer 索引分发 索引发发 将文档分发到不同的 column 多个可以增加可靠性、提高处理能力 Indexer- 矩阵形式 多 column 增加文档数量和提高索引的性能 多 row 提供可靠性 indexer
  • 56. 多节点体系 - 索引子系统 Indexer ( master ) Indexer ( master ) 内容分发 Indexer ( backup ) 索引分发 Master indexer 一 column 仅有一个 master indexer Search 仅和 master indexer 通信 Backup indexer 仅存储 fixml 和 indexing 操作 Failover 请求索引的建立( fail soft ) Indexer ( backup )
  • 57. 多节点体系 - 索引子系统 Indexer ( master ) 内容分发 索引分发 索引分发器提交文档操作到列的 master indexer 如果超过 indexers 失败的数操作不会执行。这个数是可配置的 Master 安排索引 仅当所有 row 报告 ready 时激活新的 index Indexer ( backup ) Indexer ( backup )
  • 58. 多节点体系 - 搜索和 QR 子系统 search R0C0 Top-level 分发 ( QR ) 矩阵 Row— 可靠性和 query 性能 Column— 文档数量。和 index 的 column 数量一样 Top-level 分发器 在 row 间负载平衡 发送 query 到某一行的每一列、合并结果 search R1C0 search R0C2 search R0C1 search R1C2 search R1C1
  • 59. 多节点体系 - 搜索和 QR 子系统 search R0C0 Top-level 分发 ( QR ) 多 QR 可靠性和负载均衡 search R1C0 search R0C2 search R0C1 search R1C2 search R1C1 搜索用户 负载均衡
  • 60. 多节点体系 -index 部署 Indexer 和 search 在同一节点 Indexer 和 search 在不同节点 indexer Master indexer backup search search search indexer indexer indexer search search search
  • 61. 多节点体系 -admin 子系统 Name service 和 License Manager 可以 fault tolerant 。 存在单点故障 其他组件不支持 fault tolerant CORBA Name Service License Manager Resource Service Log Transformer Log Server Config server Cache Manager Admin Server Relbench Storage service Web server
  • 62. Index Partitions 机制 每个 indexer 或 search 节点使用多个 indexing 的 partitions 每个 partition 容纳了索引的文档 Partitions are mirrored to permit incremental indexing and continuous search Content 被 index 进入最小的 partition Content 被合并到比较高的 partition 根据触发条件 0 1 2 docsDistributionPst : 100 , 100 , 100 触发条件: 10000 , 1000000 2 : 6
  • 63. Index Partitions 优化 尽可能保持最小的 Partition 是空的 索引新内容意味着重新索引最小 Partition 为最小 Partition 设置比较低的触发条件,最小 Partition 将要快速移动索引到比较高的 Partition 但是:移动内容到比较高的 Partition 意味着比较高的 Partition 会重建索引 在 RAM disk 上建立最小的 Partition 0 1 2
  • 64. Index blacklisting Blacklisting 被用来提高移除文档的速度 Blacklisting index 仅仅包含被删除文档的 id Search :自动调整为 term and not in blacklisting
  • 65. Index blacklisting 例子 Document A ( A-1 )已经被索引。位于 partition2 Document A ( A-2 )修改后重新被提交。 新版本位于 partition0 ,这时在索引中同时又 2 个 Document A 在 blacklist index 重建之前,搜索结果中将同时包含 2 个 Document A blacklist index 重建后,搜索结果中将没有 Document A ( A-1 ),但是索引中仍然有 当 Document A ( A-2 )移动到 partition2 , partition2 重建索引, Document A ( A-1 )从索引中被移除。 但是在 FiXML 中仍然有 2 个版本的 Document A 。 0 1 2 DocumentA-2 DocumentA-1
  • 66. 系统概述 获取内容 文档处理 Index Profile 排名机制 语言学特性 多节点体系 我们的 fast esp 讨论内容 部署结构 数据源 索引字段
  • 67. 部署结构 RI RS Ind RS RI RI RS RS RS RS QR Ind CP DP admin QR RT RT search10 search9 search5 search4 search3 search2 search1
  • 68. 部署结构 Ind DP QR QR RS RS RS RS RS RS RI RI RI Ind CP DP
  • 69. Youku--------(2000 万 ) Tudou--------(1400 万 ) ku6 --------(3000 万 ) sina --------(500 万 ) sohu --------(200 万 ) cctv --------( 几十万 ) 56 --------(400 万 ) 数据源
  • 70. 索引字段 UGC- 现有字段: 建立专辑时使用 vuploadusername 视频上传用户 uuseeupdate 刷新时间 可以根据该字段导航 vsourcesite 来源网站 可以根据该字段导航 vtags 标签 可排序 vlength 视频长度 vplayurl 视频播放页面地址 可以根据该字段导航 vcategorys 类别 vlogo 视频图片 可排序 vtitle 视频标题 vevid 原始编码 ID vvid 原始 ID vid 唯一标识 备注 索引字段 名称
  • 71. 索引字段 UGC- 准备扩充字段: 建立专辑 vuploaduserid 视频上传用户 ID 计算权重。可排序 vlink 引用次数 计算权重。可排序 vcomment 评论次数 计算权重。可排序 vpageview 观看次数 计算权重。可排序 Vfav 收藏次数 可以根据该字段导航 vchannel 频道 备注 索引字段 名称
  • 72. 索引字段 专辑 - 现有字段: plvideocount 视频数 可以根据该字段导航 plchannel 频道 Vod 还是 ugc pltype 类别 plvideotitles 视频标题 plvideoinfo 视频信息 可以根据该字段导航 plsourcesite 来源网站 可以根据该字段导航 pltags 标签 可排序 pllength 总长度 VOD 时为文件 GUID plplayurl 第 1 个视频播放地址 可以根据该字段导航 plcategorys 类型 pllogo 图片 可排序 pltitle 标题 plbaikeid 百科 ID plid 唯一标识 备注 索引字段 名称
  • 73. FAST ESP 搜索系统 技术中心 2009 年 9 月