这就是搜索引擎核心技术详解@学习笔记


对应文章的下载地址:

http://download.csdn.net/detail/yijiyong100/6356227



背  景

关于本篇学习笔记,只是把书中的一些概念进行了归纳,同时把个人的一些认知和看法写了下来,方便日后个人翻阅。本篇文章中作者提到了一个概念:强调原理不纠结细节,本人非常赞同,如果是在计算机相关领域达到了一定时间的技术知识、框架等广度和深度的积累,在探寻新的领域时,原理比技术实现似乎更为重要。所以本文中没有算法具体实现之类,只是一些更多原理相关的知识总结。具体想了解更多详细原理信息,可以购买作者的图书《这就是搜索引擎核心技术详解》,这里不是广告啊。如果你是技术流,建议不要购买。如果是在校的学生,可以看看图书馆是否有此本书,一定不要浪费图书馆这个好的资源。
总  结
看完整本书,在搜索引擎中的各个体系和原理思想中,很多地方都运用了三个思想:
1、分治法:海量网页、任务、索引分析、存储等等,都需要把大的任务、大的存储、大的处理,划分为小的维度,这样方便处理。
2、迭代法:典型就是搜索引擎中分布式 map/reduce模型,一些分析和查询、智能学习等任务都可以用到这种模型。
3、二八原则:20%的任务、查询、网站等等占整个互联网体系的80%的权重,搜索引擎中也会很多的用到这个原则。比如爬虫网站大站优先,PageRank大站优先、查询体系中缓存体系、索引解压和压缩算法 PForDelta 算法等等。

同时处理模型设计也是非常重要的,特别是匹配与排序,在体系的设计中排序算法、匹配算法需要考虑很多维度,比如网页的排名、语意相关度、匹配度、搜索情景、搜索用户分类维度、搜索词容错、搜索词建议等诸多维度,针对各种维度引入了很多处理模型,比如比较出名检索模型:okapi BM25 。
展  望
未来的搜索必将是:移动搜索的天下,把握移动搜索入口,塑造移动搜索的使用习惯必将是趋势,并且将对PC搜索带来巨大的影响。
安全搜索:搜索的信息内容的过滤的安全保障是未来一个趋势,搜索引擎除了不仅需要提供搜索信息以外,还需要对搜索到的信息做过滤保障。提高用户搜索体验。
整合搜索:搜索的信息不仅只是对返回结果页面,更多的需要在首页直接把整合的结果集反馈给用户,特别是查询度较高的热点搜索整合、知识搜索整合等。
开放搜索:信息渠道多样性,必须和更多行业内网站合作,提供开放数据渠道,减少暗网抓取,需要更多的开发平台,比如百度的开发平台和轻应用。

附加搜索服务生态圈,生态圈的入口为:浏览器(PC\PAD\PHONE)、导航网站、搜索引擎,提供的搜索服务的为个人服务和群体服务,个人服务为:衣食住行、娱乐办公、医疗卫生等。群体之间的服务为:通信类(IM)、电商类服务等。
建立强有力的生态入口:
浏览器(PC\PAD\PHONE)、导航网站、搜索引擎
围绕个人服务和群体服务:建立整个互联网的森林。
1    学习笔记
1.1    第一章:搜索引擎及其技术架构
互联网的搜索引擎的发展的早期,通过分类网站方法,比如:yahoo通过人工编辑导航目录,将互联网中优质网站分类整理,满足查找重要网站的基本需求,获得很大的成功。
搜索引擎的技术发展史:
1.1 分类目录,也就是导航类。
1.2 文本检索。通过查询词来进行匹配。
1.3 链接分析。对链接进行排名,最出名就是google的pageRank。
1.4 以用户为中心的搜索。以用户为中心,分析用户行为,理解用户需求。分析用户年龄范围、爱好等属性。对不同的词做出不同的响应。比如:苹果,对于年轻人可能是苹果电子产品,对于农民,可能是真的苹果。
所有引擎的目标:
更全、更快、更准

影响搜索引擎目标中重要元素体系:
查询索引、索引压缩、排序、链接分析、反作弊、用户研究、云存储、爬虫、网页去重、缓存。

个人认为在这个体系最基础的基础体系为:爬虫、索引、排序、链接分析、云存储。其他的体系都是在优化整个体系,使之在准确度、用户体验上有更多的提升,也非常重要。关于云存储不是搜索引擎特有,所以后面章节不会做太多的描述。只针对个人认为的基础体系作总结的说明。
1.2    第二章:网络爬虫
1.2.1    通用爬虫框架
1、通用的爬虫框架基本元素:种子URL、DNS解析器(解析成服务器可下载的网络地址)、已下载的网页队列、未下载的网页队列等。
爬虫按照具体的应用和流程等特性初步划分为:
1.1、批量性爬虫:指定 搜索网页范围、数量或搜索时长等。
1.2、增量型爬虫:持续不断,定期检查是否有更新的进行抓取。
1.3、垂直型爬虫:抓取特定类型的网站(一般都是行业性的)。
1.2.2    优秀爬虫的特性
高性能(下载传输快)、可扩展(分布式)、健壮性(容错抓取记录)、友好性(遵循爬虫禁爬协议)。
1.2.3    抓取策略
1、宽度优先
网页按照目录和内容分布,会分为多个层级,按照层级的优先顺序来进行抓取,一层级抓取完成后,抓取下一次层级。典型分层级的网页比如:门户网站、行业网站等。
2、非完全PageRank策略
网页pageRank分析赋值,进行出链和入链的分值递归传递,按照网页的分值大小来进行优先抓取的策略。
3、OPIC策略(Online Page Importance Computation)
在线页面重要性:是一种改进的PageRank算法,不对网页进行pageRank分析赋值,而是平均分配数值,进行出链和入链,进行分值进行传递,但是不递归,按照得数的大小进行抓取。
4、大站优先    
大的网站的网页质量内容会好一些。
1.2.4    更新策略
1、历史参考:记录网站的更新周期记录来进行更新。
2、用户体验:把用户搜索频次高的、关注度高的策略进行优先更新等。
3、聚类抽样:网页具有一些属性,可以预测其更新周期,具有相似属性的周期也可以是相似的。
1.2.5    暗网抓取
比如:ctrip、中华英才等网站中信息,需要进行搜索词查询的结果进行抓取,一般此类网站都会有查询组合列表,搜索引擎一般根据需要手动形成搜索模板来进行数据数据查询,重点抓取返回查询结果多的数据,形成一个全集。
1.2.6    分布式爬虫
分布式爬虫可以分为若干个分布式层级,不同的应用可能由其中部分层级构成,基本主要构成的3个层级:分布式数据中心、分布式抓取服务器以及分布式爬虫程序。
分布式爬虫分为两类:
1、主从分布式分布式爬虫:slave和master,mater主要获取url队列,然后分配给slave爬虫。
2、对等式爬虫,数据中心、服务器、抓取范围按照 某种规则平均分配,每个爬虫都负责自己全部的工作。
实际的部署和实现中,两者会结合起来用。




1.3    第三章:搜索引擎索引
1.3.1    索引基础
1.3.1.1    单词-文档矩阵
单词--文档矩阵式表达两者之间的关系的概念模型,表示词汇是否在文档中出现过。
1.3.1.2    倒排索引基本概念
文档:Document,网页、xml、PDF、WORD、Email、短信、微博等。
文档集合:上述文档的组合。比如邮件集合。
文档编号:DOCID。
单词编号:WORDID。
倒排索引:实现单词--文档矩阵的存储形式。主要有单词词典和倒排文件组成。
单词词典:搜索引擎的索引单位是单词,单词词典是由文档集合中的所有单词的字符串集合。记录单词本身的信息和倒排列表信息的指针。
倒排列表:记录某个单词在文档集合中出现过的文档信息,以及在文档中的位置信息,每条记录称为一个倒排项。根据倒排列表,即可知道哪些文档包含哪个单词。
倒排文件:所有单词的倒排列表往往顺序的存储在磁盘的某个文件里,这个文件被称为倒排文件,即为倒排索引的物理文件。
1.3.1.3    倒排索引简单实例
中文和引文等语言不同,单词之间没有明确的分隔符号,所以需要用分词系统将文档自动分成单词序列 组合。
倒排序索引是针对一系列文集建立的,假设有5篇文档。
某一个单词A的倒排序列的存储样例结构为:
单词ID    单词    文档频率    倒排列表<DOCID;TF;<POS>> 文档ID,词频
位置信息
1    中国    5(表示在5篇文中都出现过)    (1:1;<1>),(3:2;<1;6>)
含义为:第一组 第一篇文中出现过一次,出现的位置为第一个单词。
第二组 第三篇文中出现过两次,出现的位置为第一个和第六个单词。
倒排序列索引结构的维度和内容可能比上述要更加复杂,但是上面的结构已经包括倒排索引的主要内容。
1.3.2    单词词典
对于一个规模很大的文档集合来说,可能包含的单词数量巨大,所以需要一个高效的词典存储系统。
1.3.2.1    hash加上链表
类似传统的hash链表结构,有一个hash算法,把众多单词进行hash计算得到一个hash值,然后将单词索引结构信息用索引串接起来。
1.3.2.2    树形结构
B树,或者是B+树,平衡二叉树,节点上存储单词索引结构信息。实际的应用场景中可以是平衡二叉树和hash链表联合进行使用。
1.3.3    倒排列表
单词    DF(每个单词在文档集中出现的频率)    <DocID,TF,<pos1,pso2>>    <DocID,TF,<pos1,pso2>>    <DocID,TF,<pos1,pso2>>

pos1-posN 之间有时为了节约空间,存储的是两个位置的差值。
1.3.4    索引建立
构建上述的倒排序索引结构,常见的有三种。
1.3.4.1    两遍文档遍历法
第一遍,收集信息:包含文档集合个数N,文中集合内不同的单词个数M,每个单词在多少个文档中出现过的信息DF。
第二遍,根据文档集合内不同的单词,再次遍历文档集合,建立上述的代拍徐索引结果。
1.3.4.2    排序法
大致就是对文档集合进行一次遍历,遍历发现单词没有建立,则新建立一个单词ID,插入数组尾部,并将单词的索引信息,进行追加,这些过程都在内存中完成。
1.3.4.3    归并法
主要思想是,可以将不同文档生成的相同单词倒排序信息进行合并(可以链表追加的模式)。合并的动作可以是文件级的合并,既做到读取一次,合并异步的目的,会大大提升索引建立的效率。
1.3.5    动态索引
如果索引建立完成后,往往会有新的文档加入或者有新的文档被删除掉,为了响应文档的集合,不可能实时的去重新建立索引。
动态索引的关键结构:倒排索引、临时索引和已删除文档列表。
查询时,通过查找 倒排索引、临时索引获得结果集,然后可以通过已删除文档列表来进行过滤结果集信息。
1.3.6    索引更新策略
1.3.6.1    完全重建
当新增文档达到一定数量后,将新增和原先的文档组成新的文档集合,完全新建。
1.3.6.2    再合并策略
新增文档进入搜索时,在内存中维护临时倒排序索引记录,当内存满了或者到达一定时间后,将信息和正式索引结构进行合并。
1.3.6.3    原地更新策略
在建立索引时对词的索引空间末尾预留空间,当有新增文档时,新增的词典的倒排序索引信息,直接追加到文档末尾即可。有一个问题需要找到足够大的连续存储区,查找和存储的成本很高。
1.3.6.4    混合策略
实际应用中会根据单词的热度、更新的频率、索引的数量等等属性,找到其何时的策略进行处理,充分节省空间、提高读写效率。
1.3.7    查询处理
建立好的索引结构,目的是为了更快速的提取和用户查询相关的信息。利用倒排序索引响应用户的查询的机制:一次一文档的方式,另外一种是一次一单词的方式,还有跳跃指针的查询优化过程。
1.3.7.1    一次一文档
一般查询的单词会有多个:
遍历索引时,把这两个单词的索引信息的文档都进行同时遍历,计算出某一个文档的得分,最终根据得分来进行排序。
1.3.7.2    一次一单词
一般查询的单词会有多个:
遍历索引时,每次只遍历一篇文章,得到每篇文章的得分。因为单词有多个,可能会有重复的文章,将有重复的文章的分数相加,然后对总文章进行排序,这样会得到最终的查询结果。
1.3.7.3    跳跃指针
跳跃指针主要是存储其中单词在文档中是否存在的一种结构信息,将索引结构按照文档数量L的平方根分为一组。(组的大小可以平方根,可以是其他,经过验证平方根较为合适)。分组前按照DOCID进行排序,这样就能迅速查找到某个文档中是否包含某个单词了。因为查询DOCID,可以快速的找到他的段,然后再段内查找信息,同时对于索引解压缩而言,也不用全部解压。只需要部分解压即可。
1.3.8    多字段索引
在实际搜索中,需要应用到多个组合索引,比如邮件的正文、标题、收发件人等,网页文章中的标题、作者、摘要等
1.3.8.1    多索引方式
比如把某个单词分类(标题类、摘要类、正文类)分别建立倒排序索引,这样查询时,每个单词都去各自的列表中进行查询,最终对结果进行加工得到最终的结果集。
这样对于查询来说比较耗时,存储也分开了,不方便遍历。
1.3.8.2    倒排列表式
正常的索引项都是:
<DocID,TF,<pos1,pso2>>
扩展为:
【<DocID,TF,<pos1,pso2>,标题>,<DocID,TF,<pos1,pso2>,摘要>,<DocID,TF,<pos1,pso2>,正文>】
每一个层级匹配上后的评分是有差异的。
1.3.8.3    扩展排列表式
正常的索引项都是:
<DocID,TF,<pos1,pso2>>
扩展为原始信息保持不变:
<DocID,TF,<pos1,pso2>
如果此单词在摘要和标题中出现,单独存储其标题的 索引项信息,以链表的方式进行指向。

每一个层级匹配上后的评分是有差异的。

1.3.9    短语查询
短语是很常见的查询词语,比如你懂的,懂你的 差别很大。搜索引擎支持短语查询,本质问题是如何在索引中维护单词之间的顺序关系或者位置信息。较常见的支持短语查询的技术方法包括:位置信息索引、双词索引集短语索引这三类,为了能够有效的利用存储和计算资源,可以将三者结合使用。
1.3.9.1    位置索引
两个单词的 A、B,位置索引信息连续,而且两个单词出现在同一篇文章中,即DOCID一致,则可以作为返回结果。虽然这样做可以,但是需要把多个索引词的索引项加载到内存中,这样会很消耗内存空间和计算空间,比如我的团长我的团。
1.3.9.2    双词索引
特别是短语中带有“的”等停用词时,需要将词语进行拆分,比如我的父亲,拆分为“我的”和“的父亲”,这样去搜搜匹配结果会更OK一些。
1.3.9.3    短语索引
将一些短语单独建立倒排序索引,当然不可能所有的都建立,只是根据搜索日志挖掘热门的搜索词来进行建立索引即可。
1.3.9.4    混合方法
针对不同的短语根据其某种特性来采取不同的方法。
1.3.10    分布式索引
搜索引擎的文档量和词汇量是数以亿计的,单台计算机和存储不可能装下所有的信息,所以索引存储需要在多台服务器上,这样便有了分布式索引:分布式索引方案包括两种:按照文档对索引划分,按照单词对索引进行划分。
1.3.10.1    按照文档划分
将整个文档集合划分为若干个子文档集合,而每台机器负责对某个文档子集合进行建立索引,并响应合并查询请求排序后,返回给查询用户。
1.3.10.2    按照单词划分
不对文档集合进行分割,而是对单词进行分割,不同的单词词典集合的索引存储在不同的服务器上。查询时,需要将多个机器上的索引内容,合并查询得分后,返回给用户。
1.3.10.3    两种方法的比较
1、可扩展性:搜索引擎的集合往往是不断变动的,如果是按照文档划分分布式索引,则只需要支持新增文档服务器即可,对其他影响较小。而按照单词划分,则需要更新维护每台单词索引服务器的内容。
2、负载均衡:
按照单词划分索引服务均衡不好做,因为有些单词出现的词频特别高,索引大大小可能达到几十兆甚至上G,如果按照文档那个划分,则这些存储会均匀的分布在不同的机器上。
3、容错性,如果按照单词划分,有一些索引服务器故障,则某些查询则无法响应。
4、支持查询处理方式:
按照单词划分,只能支持一次一单词的查询处理方式。按照文档模式就可以不受此限制。
总体上:在实际应用中更多的是采用按照文档集合划分的方式来进行分布式索引的存储。
1.4    第四章:索引压缩
倒排序索引主要包括两个构成部分:单词词典和单词对应的倒排列表,所以针对词典的压缩和针对倒排列表的压缩。有损压缩(完全恢复)和无损压缩(牺牲部分非重要信息提高压缩比率)。
1.4.1    词典压缩
词典压缩:不同单词的长度不一样,如果词典为每个单词划分固定长度,会很浪费空间,所以可以把不同的单词存放在连续的空间里。
将词典连续的多个单词进行分组,同时对于倒排序索引需要执行词典区的指针公用一个,这样能节约空间。
上述的手段可以将词典占用的内存空间减少了60%。
1.4.2    倒排列表压缩算法
单词对应的倒排列表一般记载的3类信息:文档编号、词频信息以及单词位置序列信息,因为文档编号以及单词位置序列是一次递增的,所以通常的做法是存储其差值,把数值变成小整形,节约空间。
1.4.2.1    评价索引压缩算法的指标
主要三个指标:压缩率、压缩速度和解压速度
1.4.2.2    一元编码与二进制编码
一元编码(Unary Code) 和 二进制编码(Binary Code) 是所有倒排序列表压缩算法的基本构成元素,不论压缩算法内部逻辑思路是怎样,都需要使用这两种编码方式来处理。
一元编码(Unary Code) 是非常简单的数据表示方式,对于整数X来说,使用X-1个二进制数据1和末尾数字0,来表示这个整数,对于小整数非常合适。
二进制表示方式是计算机内部的标准数据的存储方式,即由二进制数字0和1进行组合来进行实际的数据存储。
比如1:01  2:10  30:11110
1.4.2.3    Elias Gamma算法和Elias Delta算法
数字x = 2的e次幂+d,
存储信息只使用二进制e和d的信息,使用冒号组合起来。
Elias Delta 算法是 将上面的e 再一次使用 Elias Gamma 算法,得到两个引子,一起存储三个因子。
1.4.2.4    Golomb算法和Rice算法
对于待压缩数值X,Golomb和Rice都采用如下引子:
因子1=(X-1)/B
因子2=(X-2)mod /B 取余
对于Golomb 算法 b=0.69 * avg。
而对于Rice等于 0.69 * avg 最接近的2的整数此幂的数字。
1.4.2.5    变长字节算法(Varibale Byte)
变长字节算法以字节(即比特宽度为8)为一个基本存储单位,而之前的压缩算法都是变长比特算法,都是以比特位作为基本存储单位。
一个字节包含8个比特位,因为变长字节数算法,需要确认边界,则第一个为0,则表示后面8个比特为此编码的边界,反之不是。
举例:第一排为:压缩编码    第二排为:压缩前的数字
0    0100010    1    0000001    0    0100010    0    1110001
34    162    113
1.4.2.6    Simple X 系列算法
最常见就是simple9。
simple9是一个字对齐算法,最常用的是利用32个比特位(即4个字节),作为压缩单位来存储多个待压缩的数字。
其中32比特位的前四个比特,表示字节对齐类型,剩下的28位才是真正存储压缩数字的。存储数据为的大小是相当的,其中大小可以为:1 2 3 4 5 7 9 14 28,对于不能整除的数字需要,把最末尾的存储区废弃掉。
simple16做了一些改进,新加了一些存储模式,对于数据存储区可以不是等宽的。
1.4.2.7    PForDelta算法
目前是解压速度最快的一种倒排序文件的压缩算法,其基本出发点就是一次性压缩和解压多个数值。
将数据均为两个区域:90%的小数值区域 和 10%的大数字区域,小数字区域按照其最大数字的宽度进行等长的二进制压缩存储,大数字区域不进行压缩,但是小数字区域和大数字区域通过一个异常数字链表,从链表尾部开始顺序指向异常的大数字。
假定有这样一个doc序列:23, 41, 8, 12, 30, 68, 18, 45(这是一个已经求过差分后的序列)。通过pfordelta方法的构造得到如下压缩结构:
 
多项试验表明上述的算法性能最优,其中主要是因为一次能解压多个连续数据,其中除了异常链表的判断可以做一个计算判断,不需要做其他的判断,所以在解压的时候是最快的。
1.4.3    文档编号重排序
文档编号重排序的提高压缩比率的触发点是,将文档分类,含有相同或者类似的文章的DOCID相近,这样在进行倒排序索引文件存储DOCID差值时会更小,会更节约空间。
1.4.4    静态索引裁剪
静态索引裁剪的触发点是基于如下考虑:对于用户查询来说,搜索系统往往只需要返回相关性最高的K个网页,不需要将所有相关的网页都呈现给用户。急眼如此,对于词典中某个单词,其对应的倒排序表中索引不不重要的部分进行抛弃。这样的压缩是有损压缩。
其中有两种方式一个是以单词为中心的索引裁剪(通过某种得分计算去掉得分较低的索引项),一个是以文档为中心(通过某种计算去掉一些得分不高的索引词,特别是频率较高停用词 和 文章中心不相关的词语)。
1.5    第五章:检索模型于搜索排序
搜索结果排序你是搜索引擎最核心的构成部分,很大程度上决定了搜索引擎的质量的好坏以及用户接受与否。
目前常见的检索模型为:布尔模型、向量空间模型、概率模型、语言模型以及最近几年兴起的机器学习排序算法。
检索模型可以看做是:在用户需求已经明确的有查询词表征的情况下,如何找出内容相关的文档。
1.5.1    布尔模型
布尔模型就是单词文档矩阵YES OR NO,查询词响应时也是 AND 或者 OR。
1.5.2    向量空间模型
个人没有完全理解其中的意思,引用百度百科的解释:
向量空间模型
向量空间模型(VSM:Vector Space Model)由Salton等人于20世纪70年代提出,并成功地应用于著名的SMART文本检索系统。
VSM概念简单,把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂。当文档被表示为文档空间的向量,就可以通过计算向量之间的相似性来度量文档间的相似性。文本处理中最常用的相似性度量方式是余弦距离。
M个无序特征项ti,词根/词/短语/其他每个文档dj可以用特征项向量来表示(a1j,a2j,…,aMj)权重计算,N个训练文档AM*N= (aij) 文档相似度比较1)Cosine计算,余弦计算的好处是,正好是一个介于0到1的数,如果向量一致就是1,如果正交就是0,符合相似度百分比的特性,余弦的计算方法为,向量内积/各个向量的模的乘积.2)内积计算,直接计算内积,计算强度低,但是误差大.
向量空间模型 (或词组向量模型) 是一个应用于信息过滤,信息撷取,索引 以及评估相关性的代数模型。SMART是首个使用这个模型的信息检索系统。
文件(语料)被视为索引词(关键词)形成的多次元向量空间, 索引词的集合通常为文件中至少出现过一次的词组。
搜寻时,输入的检索词也被转换成类似于文件的向量,这个模型假设,文件和搜寻词的相关程度,可以经由比较每个文件(向量)和检索词(向量)的夹角偏差程度而得知。
实际上,计算夹角向量之间的余弦比直接计算夹角容易:
余弦为零表示检索词向量垂直于文件向量,即没有符合,也就是说该文件不含此检索词。
通过上述的向量空间模型,文本数据就转换成了计算机可以处理的结构化数据,两个文档之间的相似性问题转变成了两个向量之间的相似性问题。
1.5.3    概率检索模型
1.5.3.1    介绍
概率检索模型是目前效果最好的模型之一,在TREC评测中证明了一点,其中okapi BM25 这一经典概率模型计算公式在商业搜索引擎中被广泛的应用。
概率排序模型的基本思想是:给定一个用户查询,如果搜索系统能够在搜索结果排序时按照文档和用户需求的相关性由高到低排序,那么搜索系统的准确性是最优的。
1.5.3.2    BM25模型
具体二元独立模型、BM25模型、BM25F模型,内容个人没有看懂:
其中BM25F 相比BM25增加了网页的标题、Meta描述信息、页面内容,不同域的权重体系,比BM25的检索体系更优。
其中BM25 网上搜索CSDN的结果内容:
1.       BM25算法
BM25是二元独立模型的扩展,其得分函数有很多形式,最普通的形式如下:
 
∑  
其中,k1,k2,K均为经验设置的参数,fi是词项在文档中的频率,qfi是词项在查询中的频率。
K1通常为1.2,通常为0-1000
K的形式较为复杂
K=
上式中,dl表示文档的长度,avdl表示文档的平均长度,b通常取0.75
 
2.       BM25具体实现
由于在典型的情况下,没有相关信息,即r和R都是0,而通常的查询中,不会有某个词项出现的次数大于1。因此打分的公式score变为
 

3.0
BM25算法,通常用来作搜索相关性平分。一句话概况其主要思想:对Query进行语素解析,生成语素qi;然后,对于每个搜索结果D,计算每个语素qi与D的相关性得分,最后,将qi相对于D的相关性得分进行加权求和,从而得到Query与D的相关性得分。
BM25算法的一般性公式如下:
 
其中,Q表示Query,qi表示Q解析之后的一个语素(对中文而言,我们可以把对Query的分词作为语素分析,每个词看成语素qi。);d表示一个搜索结果文档;Wi表示语素qi的权重;R(qi,d)表示语素qi与文档d的相关性得分。
下面我们来看如何定义Wi。判断一个词与一个文档的相关性的权重,方法有多种,较常用的是IDF。这里以IDF为例,公式如下:
 
其中,N为索引中的全部文档数,n(qi)为包含了qi的文档数。
根据IDF的定义可以看出,对于给定的文档集合,包含了qi的文档数越多,qi的权重则越低。也就是说,当很多文档都包含了qi时,qi的区分度就不高,因此使用qi来判断相关性时的重要度就较低。
我们再来看语素qi与文档d的相关性得分R(qi,d)。首先来看BM25中相关性得分的一般形式:
 
其中,k1,k2,b为调节因子,通常根据经验设置,一般k1=2,b=0.75;fi为qi在d中的出现频率,qfi为qi在Query中的出现 频率。dl为文档d的长度,avgdl为所有文档的平均长度。由于绝大部分情况下,qi在Query中只会出现一次,即qfi=1,因此公式可以简化为:
 
从K的定义中可以看到,参数b的作用是调整文档长度对相关性影响的大小。b越大,文档长度的对相关性得分的影响越大,反之越小。而文档的相对长度越 长,K值将越大,则相关性得分会越小。这可以理解为,当文档较长时,包含qi的机会越大,因此,同等fi的情况下,长文档与qi的相关性应该比短文档与 qi的相关性弱。
综上,BM25算法的相关性得分公式可总结为:
 
从BM25的公式可以看到,通过使用不同的语素分析方法、语素权重判定方法,以及语素与文档的相关性判定方法,我们可以衍生出不同的搜索相关性得分计算方法,这就为我们设计算法提供了较大的灵活性。

1.5.4    语言模型
上面的模型建模都是都查询到文档,而语言模型恰好相反,是由文档到查询这个方向,即由每个文档建立不同的语言模型,判断由文档生成用户查询的可能性有多大,然后按照这种生成的概率由高到低排序,作为搜索结果。
语言检索学习方法从形式上看与向量空间模型和概率模型有很大的差异,通过理论推导,语言检索方法的排序公式符合概率模型的概率排序原理,可以概率模型的一种。另外,通过一些公式的变形推导,可以将公式转化为向量空间模型TF*IDF的形式,这说明了几种模型在利用计算因子方面的一致性。
1.5.5    机器学习排序
前面查询排序的因素并不多,主要是词频、逆文档频率、和文档长度这几个因子来人工拟合排序公式。因为考虑的因素不多,由人工进行公式拟合是完全可行的。
机器学习来挖掘更多的因子,比如网页的pageRank、URL长度等。google网页因子考虑率200多种因子。此时机器学习的作用即可发挥了。其中可以把用户的点击记录作为机器学习的训练数据,假设点击其中的数据和查询时相关的。
1.5.5.1    机器学习的基本思路
机器学习的内容可以展开作为搜索引擎中匹配质量的一个非常核心的元素。搜索引擎公司为此会提供专门岗位,
个人理解机器学习的基本思路是通过用户的一些点击实例,来对搜索引擎概率检索模型+一些pageRank、URL等各种维度的信息,得到一些参数和用户点击日志的最佳值,来达到机器定义的维度系数尽量和真是保持一致。
1.5.5.2    机器学习的互联网摘录
互联网摘录:
互联网搜索、在线广告、机器翻译、手写识别、垃圾邮件过滤等等都是以机器学习为核心技术的。
微软亚洲研究院互联网搜索与挖掘组高级研究员李航博士介绍说,机器学习是关于计算机基于数据构建模型并运用模型来模拟人类智能活动的一门学科。机器学习实际上体现了计算机向智能化发展的必然趋势。现在当人们提到机器学习时,通常是指统计机器学习或统计学习。实践表明,统计机器学习是实现计算机智能化这一目标的最有效手段。
机器学习最大的优点是它具有泛化能力,也就是可以举一反三。无论是在什么样的图片中,甚至是在抽象画中,人们能够轻而易举地找出其中的人脸,这种能力就是泛化能力。
当然,统计学习的预测准确率不能保证100%。
李航说,机器学习是“乡下人”的办法。有个笑话。一个乡下人进城,到餐馆吃饭,不知如何在餐馆用餐,就模仿旁边的人。别人做什么,他也就学着做什么。邻桌的一位故意戏弄他,将桌上的蜡烛卷在饼里,趁乡下人不注意时把蜡烛扔到地上,然后咬了一口卷着的饼。乡下人也跟着学,大咬了一口自己的饼。机器学习只是根据观测,“模仿”人的智能行为,有时能够显得非常智能化。但如果观测不到关键的特征,它就会去“咬卷着蜡烛的饼”。

据调查,60%的互联网用户每天至少使用一次搜索引擎,90%的互联网用户每周至少使用一次搜索引擎。搜索引擎大大提高了人们工作、学习以及生活的质量。而互联网搜索的基本技术中,机器学习占据着重要的位置。

在李航看来,互联网搜索有两大挑战和一大优势。挑战包括规模挑战与人工智能挑战;优势主要是规模优势。

规模挑战:比如,搜索引擎能看到万亿量级的网址,每天有几亿、几十亿的用户查询,需要成千上万台的机器抓取、处理、索引网页,为用户提供服务。这需要系统、软件、硬件等多方面的技术研发与创新。

人工智能挑战:搜索最终是人工智能问题。搜索系统需要帮助用户尽快、尽准、尽全地找到信息。这从本质上需要对用户需求如查询语句,以及互联网上的文本、图像、视频等多种数据进行“理解”。现在的搜索引擎通过关键词匹配以及其他“信号”,能够在很大程度上帮助用户找到信息。但是,还是远远不够的。

规模优势:互联网上有大量的内容数据,搜索引擎记录了大量的用户行为数据。这些数据能够帮助我们找到看似很难找到的信息。比如,“纽约市的人口是多少”,“春风又绿江南岸作者是谁”。另一方面,低频率的搜索行为对人工智能的挑战就更显著。

李航说,现在的互联网搜索在一定程度上能够满足用户信息访问的一些基本需求,也是因为机器学习在一定程度上能够利用规模优势去应对人工智能挑战。但距离 “有问必答,准、快、全、好”这一理想还是有一定距离的,这就需要开发出更多更好的机器学习技术解决人工智能的挑战。
1.5.6    检索质量评价标准
精确率和召回率,P@10指标,MAP指标。
召回率和准确率是搜索引擎(或其它检索系统)的设计中很重要的两个概念和指标。
召回率:Recall,又称“查全率”;
准确率:Precision,又称“精度”、“正确率”。
在一个大规模数据集合中检索文档时,可把集合中的所有文档分成四类:
     相关    不相关
检索到    A    B
未检索到    C    D
 
 
 

A:检索到的,相关的                   (搜到的也想要的)
B:检索到的,但是不相关的           (搜到的但没用的)
C:未检索到的,但却是相关的        (没搜到,然而实际上想要的)
D:未检索到的,也不相关的          (没搜到也没用的)
通常我们希望:数据库中相关的文档,被检索到的越多越好,这是追求“查全率”,即A/(A+C),越大越好。
同时我们还希望:检索到的文档中,相关的越多越好,不相关的越少越好,这是追求“准确率”,即A/(A+B),越大越好。
归纳如下:
召回率:检索到的相关文档 比 库中所有的相关文档
准确率:检索到的相关文档 比 所有被检索到的文档
“召回率”与“准确率”虽然没有必然的关系(从上面公式中可以看到),然而在大规模数据集合中,这两个指标却是相互制约的。
由于“检索策略”并不完美,希望更多相关的文档被检索到时,放宽“检索策略”时,往往也会伴随出现一些不相关的结果,从而使准确率受到影响。
而希望去除检索结果中的不相关文档时,务必要将“检索策略”定的更加严格,这样也会使有一些相关的文档不再能被检索到,从而使召回率受到影响。
凡是设计到大规模数据集合的检索和选取,都涉及到“召回率”和“准确率”这两个指标。而由于两个指标相互制约,我们通常也会根据需要为“检索策略”选择一个合适的度,不能太严格也不能太松,寻求在召回率和准确率中间的一个平衡点。这个平衡点由具体需求决定。
其实,准确率(precision,精度)比较好理解。往往难以迅速反应的是“召回率”。我想这与字面意思也有关系,从“召回”的字面意思不能直接看到其意义。
我觉得“召回率”这个词翻译的不够好。“召回”在中文的意思是:把xx调回来。比如sony电池有问题,厂家召回。
既然说翻译的不好,我们回头看“召回率”对应的英文“recall”,recall除了有上面说到的“order sth to return”的意思之外,还有“remember”的意思。
Recall:the ability to remember sth. that you have learned or sth. that has happened in the past.
这里,recall应该是这个意思,这样就更容易理解“召回率”的意思了。
当我们问检索系统某一件事的所有细节时(输入检索query),Recall就是指:检索系统能“回忆”起那些事的多少细节,通俗来讲就是“回忆的能力”。能回忆起来的细节数 除以 系统知道这件事的所有细节,就是“记忆率”,也就是recall——召回率。  

1.6    第六章:链接分析
搜索引擎在查找能够满足用户请求的网页时,主要考虑两方面的因素:一方面是用户发出的查询与网页内容相似性得分,即上一章节中的概率检索模型,比如BM25,另一方面就是通过链接分析方法来获得得分,即网页的重要性,两者融合共同拟出相似性评分函数,来对搜索结果进行排序。本章主要介绍一些著名的链接分析方法。
1.6.1    web图
互联网包含了海量的网页,而网页和一般文本的一个重要的区别就是页面内容中包含相互引用的链接Link,如果讲一个网页抽象成一个节点,而将网页之间的链接理解为一条有向图,则可以把整个互联网抽象为一个包含页面节点和节点之间的联系变的有向图,称之为Web图。网页内部往往包含出链(指向别的页面)和入链(指向本页面)。
锚文字也是网页中常见且重要的信息,是某个页面出链附近的一些描述文字。对目标网页内容的概括性描述。
1.6.2    两个概念模型以及算法之间的关系
1.6.2.1    随机游走模型
就是互联网中页面A有N个出链,则把页面游走的概率数值平均传递给N个出链,在一个有向图中,可以通过递归的循环传递,达到一个均衡的值。
1.6.2.2    子集传播模型
基本思想是在做算法设计时,把互联网网页按照一定规则来划分,分为两个甚至多个子集合。其中某个子集合具有特殊性质,很多算法往往从这个具有特殊性质的子集合出发,给予子集合网页初始权值。
1.6.2.3    链接分析算法之间的关系
pageRank基于随机游走模型(衍生模型:主题敏感、智能游走模型、偏执游走模型)
hilltop算法和HITS算法基于子集传播模型。
SALSA算法是 pageRank 和 HITS算法 融合。并依此进一步衍生除了BFS算法。
1.6.3    PageRank算法
Google创始人提出的算法,很多重要的链接分析算法都是在pgaeRank算法基础上衍生出来的。
1.6.3.1    从入链数量到PageRank
有一个假设:入链数量越多,则此网页就越重要。PageRank除了考虑入链数量还考虑了网页的质量。两者相结合。
1.6.3.2    PageRank计算
网页关系构建起来了Web,初始每个网页有相同的pageRank值,按照数量和质量假设。其每个页面的pageRank按照出链的多少进行传递其他网页,循环递归,整个图中所有的节点pageRank值会达到一个相对稳定的值。
1.6.3.3    链接陷阱和远程跳转
互联网页面之间的链接结构关系实际上很复杂,链接构成中会有死循环的链接结构,需要特殊处理,同时对于远程调转也需要做特殊的处理,一些少量的权值需要分配给远程的页面。
1.6.4    HITS算法(Hypertext Induced Topic Selection)
HITS算法是非常重要的算法,目前已经被Teoma搜索引擎作为链接分析算法在实际中使用。
1.6.4.1    Hub页面和Authority页面
Authority页面:是指在某个领域或者某个话题相关的高质量网页,比如搜索引擎领域,google和百度是高质量网页;比如视频领域,优酷和土豆首页即该领域的高质量网页。所谓Hub页面,是指的包含了很多高质量Authority网页链接的网页,比如hao123等。
HITS算法的主要目的就是通过一定的技术手段,在海量网页中找到与用户查询主题相关的高质量Authority页面和Hub页面,尤其是Authority页面,因为这些页面满足了用户查询高质量内容。
1.6.4.2    相互增强关系
基本假设1:一个好的Authority页面会被很多好的Hub页面指向。
基本假设2:一个好的Hub页面会指向很多好的Authority页面。
1.6.4.3    HITS算法
HITS算法与PageRank算法一个显著的差异是:HITS算法与用户输入的查询请求密切相关,而PageRank算法是与查询无关的全局算法。
HITS算法接受到用户请求,把排名靠前的一组结果叫做根集,对根集进行扩展,凡是与根集内有直接连接指向关系(包括入链和出链)的网页都被扩充进来。扩展页面的赋给相同的Hub值和Authority权值,并按照入链出链进行传递,递归达到一个相对均衡稳定的值。
1.6.4.4    HITS算法存在的问题
1、主题漂移:因为扩展页面里包含部分与查询主题无关的页面,而且这些页面之间有较多的相互连接指向,那么使用HITS算法很可能给予这些无关网页很高的排名,导致搜索结果发生主题偏移。
2、结构不稳定,如果网页个别的增加删除、或者改变入链和出链的数量,则HITS算法的排名结果就会有非常大的改变。
3、易被作弊者操作结果。作弊网页执行高质量的hub和authority页面就会得到相应较高的得分。
1.6.4.5    HITS算法与PageRank算法比较
HITS算法和PageRank 算法可以说是搜索引擎链接分析的两个最基础且最重要的算法。从以上对两个算法的介绍可以看出,两者无论是在基本概念模型,还是计算思路及技术实现细节都有很大的不同,下面对两者之间的差异进行逐一说明。
HITS 算法是与用户输入的查询请求密切相关的,而PageRank 与查询请求无关。所以,HITS 算法可以单独作为相似性计算评价标准,而PageRank 必须结合内容相似性计算才可以用来对网页相关性进行评价。
HITS 算法因为与用户查询密切相关,所以必须在接收到用户查询后进行实时计算,计算效率较低;而PageRank 则可以在爬虫抓取完成后离线计算,在线直接使用计算结果,计算效率较高。

HITS 算法的计算对象数量较少,只需计算扩展集合内网页之间的链接关系;而PageRank 是全局性算法,对所有互联网页面节点进行处理。

从两者的计算效率和处理对象集合大小来比较,PageRank 更适合部署在服务器端,而HITS 算法更适合部署在客户端。

HITS 算法存在主题泛化问题,所以更适合处理具体的用户查询;而PageRank 算法在处理宽泛的用户查询时更有优势。

HITS 算法在计算时,对于每个页面需要计算两个分值,而PageRank 算法只需计算一个分值即可;在搜索引擎领域,更重视HITS 算法计算出的Authority 权值,但是在很多应用HITS 算法的其他领域,Hub 分值也有很重要的作用。

从链接反作弊的角度来说,PageRank 从机制上优于HITS 算法,而HITS 算法更易遭受链接作弊的影响。

HITS 算法结构不稳定,当对扩展网页集合内链接关系做出很小改变,则对最终排名有很大影响;而PageRank 算法相对HITS 而言表现稳定,其根本原因在于PageRank 计算时的远程跳转。
1.6.5    SALSA算法
HITS和PageRank算法优缺点,SALSA结合了两者的优缺点。SALSA算法搜索效果都优于前两个算法,是目前效果最好的链接分析算法之一。从整体计算流程来说,可以分为两个阶段:首先是确定计算对象集合的阶段,这一阶段与HITS算法是相同;第二个阶段是链接关系传播模型过程,在这一阶段则采纳了随机游走模型。
1.6.5.1    确定计算对象集合
PageRank 的计算对象是互联网所有网页,SALSA 算法与此不同,在本阶段,其与HITS算法思路大致相同,也是先得到扩展网页集合,之后将网页关系转换为方向二分图形式。

扩展网页集合

SALSA 算法在接收到用户查询请求后,利用现有搜索引擎或者检索系统,获得一批与用户查询在内容上高度相关的网页,以此作为根集。并在此基础上,将与根集内网页有直接链接关系的网页纳入,形成扩展网页集合。之后会在扩展网页集合内根据一定的链接分析方法获得最终搜索结果排名。转换为无向二分图,在获得了扩展网页集合之后,SALSA 根据集合内的网页链接关系,将网页集合转换为一个二分图。即将网页划分到两个子集合中,一个子集合是Hub 集合,另一个子集合是Authority 集合。划分网页节点属于哪个集合,则根据如下规则。

如果一个网页包含出链,这些出链指向扩展网页集合内其他节点,则这个网页可被归入Hub 集合。

如果一个网页包含扩展网页集合内其他节点指向的入链,则可被归入Authority集合。
1.6.5.2    链接传播关系
SALSA 的上述权值传播模型与HITS 模型关注重点不同,HITS 模型关注的是Hub 和Authority 之间的节点相互增强关系,而SALSA 实际上关注的是Hub-Hub 及Authority-Authority 之间的节点关系,而另一个子集合节点只是充当中转桥梁的作用。所以,上述权值传播模型可以转化为两个相似的子模型,即Hub 节点关系图和Authority 节点关系图。
1.6.5.3    Authority权值计算
整个Authority 子集合所有节点形成一个完整的连通图,那么在计算Authority 权值的过程中,对于任意两个节点,4 个因子中除了节点入链个数外,其他3 个因子总是相同的,即只有入链个数起作用,此时,SALSA 算法退化为根据节点入链个数决定排序顺序的算法。

从SALSA 计算Authority 得分过程中可看出,SALSA 算法不需要像HITS 算法一样进行不断的迭代计算,所以从计算效率角度看要快于HITS 算法。另外,SALSA 算法解决了HITS 算法的计算结果主题漂移问题,所以搜索质量也优于HITS 算法。SALSA 算法是目前效果最好的链接算法之一。
1.6.6    主题敏感PageRank(Topic Senstive PageRank)
将网页集合分为N(16)个大类,每个大类的网页集合单独使用PageRank算法得到,属于每个类别的PageRank算法权值。
1.6.7    Hilltop算法
Hilltop 算法是Torono 大学研发的链接分析算法,在2003 年被Google 公司收购,而Google 在之后的排序算法大改版中引入了Hilltop 算法。
Hilltop 算法融合了HITS 和PageRank 两个算法的基本思想。一方面,Hilltop 是与用户查询请求相关的链接分析算法,吸收了HITS 算法根据用户查询获得高质量相关网页子集的思想,符合子集传播模型,是该模型的一个具体实例;同时,在权值传播过程中,Hilltop 算法也采纳了PageRank 的基本指导思想,即通过页面入链的数量和质量来确定搜索结果的排序权重。
1.6.7.1    HillTop算法的一些基本定义
非从属组织页面(Non-affiliated Pages)是Hilltop 算法的一个很重要的定义。要了解什么是非从属组织页面,先要搞明白什么是从属组织网站,所谓的从属组织网站,即不同的网站属于同一机构或者其拥有者有密切关联。具体而言,满足如下任意一条判断规则的网站会被认为是从属网站。

条件1:主机IP 地址的前3 个子网段相同,比如:IP 地址分别为159.226.138.127和159.226.138.234 的两个网站会被认为是从属网站。

条件2:如果网站域名中的主域名相同,比如www.ibm.com 和www.ibm.com.cn会被认为是从属组织网站。

专家页面(Export Sources)是Hilltop 算法的另外一个重要定义。所谓专家页面,即与某个主题相关的高质量页面,同时需要满足以下要求:这些页面的链接所指向的页面相互之间都是非从属组织页面,且这些被指向的页面大多数是与专家页面主题相近的。

专家页面会提高子页面的分值。
1.6.7.2    HillTop算法
步骤一:专家页面搜索

Hilltop 算法从1 亿4 千万网页中,通过计算筛选出250 万规模的互联网页面作为专家页面集合。专家页面的选择标准相对宽松,同时满足以下两个条件的页面即可进入专家页面集合。

条件1:页面至少包含k 个出链,这里的数量k 可人为指定。

条件2:k 个出链指向的所有页面相互之间的关系都符合非从属组织页面的要求。

步骤二:目标页面排序

Hilltop 算法包含一个基本假设,即认为一个目标页面如果是满足用户查询的高质量搜索结果,其充分必要条件是该目标页面有高质量专家页面链接指向。然而,这个假设并不总是成立,比如有的专家页面的链接所指向的目标页面可能与用户查询并非密切相关。所以,Hilltop 算法在这个阶段需要对专家页面的出链仔细进行甄别,以保证选出那些和查询密切相关的目标页面。

Hilltop 在本阶段是基于专家页面和目标页面之间的链接关系来进行的,在此基础上,将专家页面的得分传递给有链接关系的目标页面。传递分值之前,首先需要对链接关系进行整理,能够获得专家页面分值的目标页面需要满足以下两点要求:

条件1:至少需要两个专家页面有链接指向目标页面,而且这两个专家页面不能是从属组织页面,即不能来自同一网站或相关网站。如果是从属组织页面,则只能保留一个链接,抛弃权值低的那个链接。

条件2:专家页面和所指向的目标页面也需要符合一定要求,即这两个页面也不能是从属组织页面。

在步骤一,给定用户查询,Hilltop 算法已经获得相关的专家页面及其与查询的相关度得分,在此基础上,如何对目标页面的相关性打分?上面列出的条件1 指出,能够获得传递分值的目标页面一定有多个专家页面链接指向,所以目标页面所获得的总传播分值是每个有链接指向的专家页面所传递分值之和。而计算其中某个专家页面传递给目标页面权值的时候是这么计算的:

a. 找到专家页面中那些能够支配目标页面的关键片段集合S。

b. 统计S 中包含用户查询词的关键片段个数T,T 越大传递的权值越大。

c. 专家页面传递给目标页面的分值为:E×T,E 为专家页面本身在第一阶段计算得到的相关得分,T 为b 步骤计算的分值。

Hilltop 算法存在与HITS 算法类似的计算效率问题,因为根据查询主题从专家页面集合中选取主题相关的页面子集也是在线运行的,这与前面提到的HITS 算法一样会影响查询响应时间。随着专家页面集合的增大,算法的可扩展性存在不足之处。
1.6.8    其他改进算法
1.6.8.1    智能游走模型(Intelligent Surfer Model)
智能游走模型是对PageRank 算法的改进,算法提出者认为PageRank 所遵循的随机游走模型不符合真实情况,浏览者在浏览一个页面并选择下一步点击对象时,并非随机的,而是会对链接进行甄别,如果某个链接的网页内容能够表达浏览者向搜索引擎发出的查询词主题,则用户选择点击这个链接的概率会更大。智能游走模型即是对这种情况建立模型,会判断网页包含的链接所指向的网页内容和用户查询的相关性,以此来改善链接分析效果。
智能游走模型考虑到了网页内容和用户输入查询词的相关性,所以是查询相关的链接分析算法。但是需要在线计算某个查询和网页内容的相关性,所以计算速度较慢是其重要缺陷。
1.6.8.2    偏置游走模型(Biased Surfer Model)
偏置游走模型也是针对PageRank 的随机游走模型的改进,其基本思路和智能游走模型很接近,不同点在于:智能游走模型考虑的是网页内容和用户查询的相关性,而偏置游走模型考虑的是链接指向的网页内容和当前浏览网页内容之间的相似性,即认为如果链接指向网页内容和当前浏览网页内容越相似,则用户越可能点击这个链接。
偏置游走模型由于没有考虑查询,而只需要计算网页内容之间的相似性,可以离线进行计算,并在线使用,所以计算速度要优于智能游走模型。
1.6.8.3    PHITS 算法(Probability Analogy of HITS)
PHITS 算法是对HITS 算法的直接改进。HITS 算法在通过链接进行权值传递时,会将Hub 或者Authority 节点的权值全部传递给所有相连链接,而PHITS 算法认为不同链接其传递权值的能力应该是不同的,这是其基本思想。基于此,PHITS 需要计算两个页面S 和T之间链接的连接强度。
PHITS 算法在页面S 和页面T 之间引入主题隐变量,而两个页面之间链接的强度取决于两个页面和这个隐变量的主题耦合关系,所以可以将这个算法看做PLSI 算法的链接分析版本。虽然看上去复杂,但是PHITS 算法的本质思想和偏置游走模型是一样的,即考虑的其实是页面S 和页面T 之间的内容相似性,内容越相似其链接强度越强,传递权值的能力越强。PHITS 算法和直接计算页面内容相似性的区别,仅仅是加入一个隐藏主题层,通过网页和隐藏层的关系来计算相似性。
1.6.8.4    BFS 算法(Backward Forward Step)
BFS 算法作为SALSA 算法的改进提出,而其本质既是对SALSA 算法的扩展,也是对HITS 算法的限制。SALSA 算法在计算网页的Authority 分值时,仅仅考虑了通过Hub 节点能够直接建立联系的网页之间的关系,而HITS 算法考虑的是链接图的整个结构,任意两个网页S 和T,如果网页S 能够通过中间节点链接到网页T,则网页S 就对网页T 有影响,而影响的大小取决于从S 到T 的不同路径走法的个数,与S 到T 的距离远近没有关系。
BFS 则是对两者的一个折中考虑,解除了SALSA 算法只允许直接相邻网页才能有影响的限制,只要网页S 可以通达T,即可对网页T 施加影响,但是又对HITS 的网页影响方式做了限制,如果网页S 距离网页T 距离越远,那么网页S 的影响就随着距离增大而呈指数衰减,即距离越远,影响越小。通过这种折中,来实现对SALSA 算法的扩充和对HITS算法的限制。
1.7    第七章:云存储和云计算
对于搜索引擎而言,每天处理的数据都数以亿计,大部分的数据都是结构化或者半结构化的,云计费存储和云计算就是为了解决上述问题的技术方案。
其中Google的云相关的三架马车,是目前最成功的云计算和云存储平台体系之一。
1、GFS:谷歌分布式文件系统。
2、Mapreduce:分布式调度和处理的云计算平台。
3、BigTable:分布式的列存储数据库。
其中还有开源组织apache的 hadoop项目是Google的三架马车的开源实现,分别是 HFS(hadoop分布式文件系统) 、Mapreduce、Hbase(hadoop分布式的列存储数据库)。相关的信息在互联网上能找到很多,不再赘述。
1.8    第八章:网页反作弊
道高一尺、魔高一丈,因为利益的存在,互联网上存在很多网站利用搜索引擎的自身规律,制造需要内容进行作弊。比较常见的作弊的手段:内容作弊、链接作弊、隐藏作弊、博客作弊、点评作弊、网页标签作弊、SNS作弊、微博作弊等。
反作弊的思路分别是分为三种:信任传播模型、不信任传播模型、异常传播模型。总之利用pageRank的高分值和低分值建立信任和非信任传播模型,总结作弊网站的特点建立发现模型。
总之,为了更好的优化和更好的搜索体验来进行网页反作弊的体系。
比如百度、360推出的搜索保障计划等。都是在网页反作弊上做足了文章,也是未来搜索引擎的一个发展方向。
1.9    第九章:用户查询意图分析
搜索意图按照人工分类:
导航类:导航网站URL或名称等。
信息类:直接型(百科知识)、间接型(信息相关比如李娜相关信息)、建议型(百度知道)等。
资源类:下载(比如:文档、服务、信息)、娱乐、交互类(比如天气)等。
同时根据用户的搜索日志和搜索会话进行信息挖掘得到一些优化查询结果,同时给出建议的相关搜索和智能的查询纠错建议都是提高用户体验的方面和工作。
1.10    第十章:网页去重
建立标识网页重复内容的关键内容识别模型,一般是文章内核心权重词组合起来相似,则可以标识为重复网页。比如:百度新闻中的相似网页。
1.11    第十一章:搜索引擎缓存机制
更快更好的响应查询热门查询,将搜索的词的返回结果和热门搜索词的索引内容放在内存中,同时根据查询词的特点,动态的换入和换出缓存内容,其设计体系的思想和CPU的多级缓存的设计体系相似。
1.12    第十二章:搜索引擎个性化发展趋势
1、个性化搜索:把用户属性分类来返回搜索结果。(用户的年龄、职业、爱好等信息)。
2、社会化搜索:facebook等。简单说就是让用户相同类别感兴趣的信息返回给用户。
3、实时搜索:twitter、微博等。但是也需要建立实时搜索抓取、索引建立、更新的体系。
4、地理位置感知搜索:通过地理位置提供感兴趣和相关的信息,比如在某个著名景点旅游,提供这个景点的说明和介绍等。
5、移动搜索:PC、智能终端等,屏幕小,展现内容少等,搜索引擎需要针对上述内容进行优化。
6、多语言搜索,这是国际搜索引擎需要考虑的。
7、多媒体搜索:图片、视频等相关关联信息搜索。
8、情景搜索:此时、此刻、此地的建立模型,优化查询结果。比如在苹果手机商店附近搜索苹果,可能是为了找苹果手机店。

1.13    附录

如果您对如上的文档 ,有什么意见和看法也欢迎发送Email到yijiyong100@163.com 和我进行交流。




对应文章的下载地址:

http://download.csdn.net/detail/yijiyong100/6356227




  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值