2009年2月14日星期六

【转】Web搜索引擎原理和技术

主要的三个功能模块:网页搜集、预处理、查询服务

基本要求:在一个可以接受的时间内返回一个和该用户查询匹配的网页信息列表,列表的每一条目至少包含三个元素--标题、网址链接、摘要

网页搜集
网页搜集的两种方式:定期搜集,增量搜集

一种搜集方式是将Web上的网页集合看成是一个有向图,搜集过程从给定起始URL集合S开始,沿着网页中的链接,按照先深、先宽或者某种别的策略遍历,不停的从S中移除URL,下载相应的网页,解析出网页中的超链接URL,看是否已经被访问过,将未访问过的那些URL加入集合S
整个过程可以形象地想象为一个蜘蛛spider在蜘蛛网Web上爬行crawl

另一种可能的方式是在第一次全面网页搜集后,系统维护相应的URL集合S,往后的搜集直接基于这个集合。没搜到一个网页,如果它发生变化并含有新的URL,则将它们对应的网页也抓回来,并将这些新URL也放到集合S中;如果S中某个URL对应的网页不存在了,则将它从S中删除

还有一种方式是让网站拥有者主动向搜索引擎提交它们的网址,系统在一定时间内定向向那些网站派出“蜘蛛”程序,扫描该网站的所有网页并将有关信息存入数据库中

预处理
1,关键词的提取
作为预处理阶段的一个基本任务就是提取出网页源文件的内容部分所含的关键词
对于中文来说,就是要根据一个词典E,用一个所谓的“切词软件”,从网页文字中切出E所含的词语来
这样,一个网页主要就由一组词来近似代表了,p={t1,t2,...,tn}
要去掉诸如“的”,“在”等没有内容指示意义的词,称为“停用词”stop word
一篇网页有效的词语数量大约在200个左右

2,重复或转载网页的消除
网页的重复率平均大约为4

3,链接分析
词频TF、文档频率DF之类的统计量能在一定程度上指示词语在一篇文档中的相对重要性
h1可能比h4的内容重要
还可以利用链接信息来提取关键词

4,网页重要程度的计算
被引用多的就是重要的,引用这个概念恰好可以通过HTML超链在网页之间体现得非常好,Google创立核心技术的PageRank就是这种思路的成功体现

查询服务
1,查询方式和匹配
根据查询的短语分词q{t1,t2,...tm},然后按各词查询结果取交集

2,结果排序
词频越大则该文档排在越前面
文档频率越大,则该词用于文档排序的作用越小

另一个指标就是文档重要性PageRank

3,文档摘要
两个问题:
1)网页的写作通常不规范,文字比较随意,因此从语言理解的角度难以做好
2)复杂的语言理解算法耗时太多,不适应搜索引擎要高效处理海量网页信息的需求

搜索引擎生产摘要的简便方式:
1)静态方式,独立于查询,按照某种规则,事先在预处理阶段从网页内容提取出一些文字,如截取网页正文开头512字节(对应256个汉字)
2)动态摘要,在响应查询的时候,根据查询词在文档中的位置,提取出周围的文字来,在显示时将查询词标亮。这是目前大多数搜索引擎采用的方式。为了保证查询的效率,需要在预处理阶段分词的时候记住每个关键词在文档中出现的位置

搜索引擎体系结构:


转自:http://hideto.javaeye.com/blog/288742

没有评论: