今天开始研究搜索引擎——2011_12_12,不知道能坚持到什么时候??
要研究搜索引擎,我觉得必须要简单的了解如何获取网页和最简单的网页排名算法——PageRank算法。
一、Spider程序
蜘蛛、爬虫、机器人或者其它的别的名字,这些东西是搜索引擎的基础。这些程序会在网络上巡逻,在网络中的各个网页中穿梭,将收集到的网页内容(文本、链接等等)存储到数据库中,作为搜索引擎工作的“原材料”。
我们知道,一个网页通常会包含多个外部网页的链接地址(如,你从新浪首页可以链接到淘宝的页面),而这些外部链接本身也是网页,也会包含多个外部网页的链接地址,以此循环...
一个重要的理论是:从有限个网页出发,重复上面的过程,最终会遍历网络上的大多数(99%以上)网页。
当爬虫程序开始运行时,会得到多个网站地址作为必要的种子输入(baidu、google等大型搜索引擎一般会以重要的门户网站为输入,如yahoo!)。
下面是一个爬虫程序工作原理的简述。PS:自己画的,很简洁很简洁哦
Spider程序的扩展:
1、网络爬虫程序检索网页时到底在干什么??
如果仅仅理解成“阅读”网站可能会有些不妥。
首先,爬虫程序会向web服务器站点发送请求,这跟普通用户是一样的。但是与普通用户不同爬虫程序只关心网页中的文本信息(包括大部分的HTML代码)。为什么会关心HTML源代码??这个后面会提到
2、网页本身可不可以拒绝爬虫程序的进入
Absolutely可以!
事实上,我们可能碰到的主要问题是,由于网络延时或者系统过载等原因,网页并不能及时回应爬虫程序的。如果在爬虫程序的耐性时间(假设是3秒,这堆大多数网页来说,是很宽裕的),网页没有做出正确的回应,那么爬虫程序会重定向至别的网站。
对于访问失败的网页,爬虫还是可能返回的。但是,如果多次失败,便会彻底放弃。之后,排名会下降。
这意味着什么?如果网页包含了大量的图片,加载速度本身就很慢,就需要有某种手段不让爬虫程序查看这些网站。
PS:顺便吐槽下我们学校的教务管理系统,据说是国防科大做的??这么烂??
3、爬虫程序都有哪些??
下面是一些常见的搜索引擎爬虫:
Google:Googlebot
baidu : baiduspider
MSN:MSNbot
Yahoo!:Yahoo SLURP or简称SLURP
Ask:Teoma
Alta Vista : Scooter
了解部分搜索引擎是必要的,因为除了那些正规程序的爬虫程序外,还会有一些恶意的爬虫也会进入你的网页。如果不知道这些恶意程序的名字,就不能正确及时的阻止这些恶意程序。
二、PageRank算法
一个显而易见的理由:我们知道,对于依赖关键词的搜索引擎来说,如google和baidu,通过Spider程序收集到的网页数量是一个天文数字。据google的官方文章,2002年这一数字就达到了20亿,可想而知经过网络飞速发展近10年后的今天这一数字是多么的惊人。另一个需要注意的问题是,大多数的非专业搜索用户提问由仅仅1~4个单词构成。这两者之间的矛盾让人们在很早之前就意识到了一个有效的搜索排名的重要性,好让用户得到也仅仅得到想要的答案。
而PageRank,就是最初人们想要的排名算法。
在传统情报检索理论中,引文分析方法是确定学术文献权威性的重要方法之一,即根据引文的数量与质量来确定文献的权威性。根据这一理论,被高中课本引用的热力学第一定律的权威性肯定大过本人刚才灵机一动随口说的热力学第x定律,我就是随口说的,就没人知道!!
PageRank算法借鉴了这种思想:一个网页的“权威性”与这个网页被链接的数量和质量直接相关。这样就可以利用网络自身的超链接结构给所有的网页确定一个重要性的等级数(PR值):当从网页A链接到网页B肘,就认为 网页A投了网页B一票。,增加了网页B的重要性。
下面举一个例子:
假定一个由A、B、C、D组成的网络,网页A中链接到了B、C,网页B链接到了A、C,网页C链接到了A、B、D,网页D链接到了A。
考虑A,由于A被所有网页所链接,那么PR(A ) = PR(B )+PR(C)+PR(D)
又由于B链接到了2个网页,而网页不能投2次票,那么只有将B的票数一分为2,C、D同理,那么PR(A ) = PR(B )/2+PR(C)/3+PR(D)
即:PR(A ) = PR(B )/L(B)+PR(C)/L(C)+PR(D)/L(D),L(x)为网页x的内部链接数。
然后,所有这些被换算为一个百分比再乘上一个系数d。由于下面的算法,没有页面的PageRank会是0。所以,Google通过数学系统给了每个页面一个最小值1 − d。
即PR(A) = 【PR(B )/L(B)+PR(C)/L(C)+PR(D)/L(D)】*d + 1 - d, d被称为阻尼系数(damping factor),值为0.85
解决了么??没有!!因为在计算PR(A)时,PR(B)等值还不知道。这就好像是一个鸡生蛋还是蛋生鸡的问题:计算一个PR值还要考虑别的PR值,陷入了死循环。
对这个问题,PageRank算法的发明人Larry Page,同时也是Google的创始人之一,通过计算证明出,对所有网页随机给定一个PR值,重复有限多次上面的计算,结果会趋近理论值。即PageRank算法具有回归性。
对上面的算法,我发现计算投票时,往往还要考虑到“投票人”本身的“票数”。即本身属于“重要”网站的投票投的票权值较高,就好像现在比尔盖茨说的话比我说的话可信度要高一样。同时,当一个网站投的票数很多时,对于每个票的价值会降低。我们校长单独夸我的效果明显比夸中南大学所有的学生的效果好!!
未完待续!!!!
下面还将有的内容:实际PageRank算法要解决的问题,影响Google PageRank的因素(网络排名“作(河蟹)弊”),PageRank相关算法、PageRank的不足之处
编辑本段
- 大小: 29.5 KB
分享到:
相关推荐
- **爬虫(Crawlers)**:搜索引擎的先驱,它们自动遍历互联网上的网页,通过跟踪链接从一个页面跳转到另一个页面,收集网页的内容。 - **索引(Index)**:存储爬虫抓取的网页内容,形成一个巨大的数据库,便于...
《The_Anatomy_of_a_Large-Scale_Hypertextual_Web_Search_Engine》一文不仅详细介绍了Google搜索引擎的设计理念和技术细节,还提出了诸如PageRank算法这样具有开创意义的方法。通过不断地优化和创新,Google成功地...
PageRank算法的应用不仅仅局限于网页排名,还可以扩展到其他领域,如社交网络分析、推荐系统等。在实际应用中,为了提高计算效率,Google采用了多种优化技术,包括并行计算和分布式处理等。 #### 3. Google搜索引擎...
Tiny Search Engine可能采用了某种简单的排序算法,如TF-IDF(词频-逆文档频率)或PageRank。 6. **缓存与更新策略**:搜索引擎需要考虑如何高效地存储和更新索引,以适应互联网的动态变化。 在学习Tiny Search ...
常见的有PageRank算法,基于链接分析计算网页的重要性。在Java中,可以使用优先队列(PriorityQueue)实现Top-K查询,以展示最相关的前K个结果。 5. **分词**:在中文环境下,分词是必不可少的步骤,Java有IK ...
总的来说,《淘特搜索引擎共享版_tot_search_engine》为学习者提供了实战经验,涵盖了搜索引擎开发的多个层面,包括JAVA后台编程、网络爬虫、文本处理、索引构建、查询解析和结果排序。通过对源代码的深入分析和实践...
3. **搜索引擎架构**:项目可能涉及到搜索引擎的基础架构,如爬虫、索引、查询解析、排序算法(如PageRank)等。 4. **数据库管理**:为了存储和检索大量的商品信息,可能使用了关系型数据库如MySQL或非关系型...
- Sergey Brin和Lawrence Page的论文“The Anatomy of a Large-Scale Hypertextual Web Search Engine”,介绍了谷歌搜索引擎背后的工作原理,强调了网页排名(PageRank)算法的重要性。 - Wisenut Search Engine ...
《XLORE搜索引擎源码解析》 XLORE搜索引擎源码是开源的搜索技术实践,它为我们揭示了搜索...同时,这也是对大数据处理、网络爬虫、自然语言处理等多领域知识的综合运用,对于IT从业者来说,是一份不可多得的学习资料。
5. **链接分析**:搜索引擎还会考虑网页之间的链接关系,如PageRank算法,以评估网页的重要性。一个被多个高权重页面链接的页面通常具有更高的权威性。 6. **查询处理与排序**:用户输入查询后,搜索引擎会进行查询...
4. 排名算法:Engine_v0.2可能采用PageRank或TF-IDF等经典算法,结合其他因素如链接分析、内容质量等,计算文档的相关性并排序。 5. 用户接口:VC++的MFC库提供了丰富的界面组件,Engine_v0.2的用户界面可能包括...
6. **排序算法(Ranking Algorithm)**:排序算法是决定搜索结果质量的重要因素,比如PageRank算法,它考虑了网页之间的链接关系来评估其重要性。了解这个项目的排序算法,可以帮助你理解如何改进搜索结果的排序。 ...
本文将深入探讨一个基于JSP技术的开源项目——淘特搜索引擎共享版(Tot_search_engine),旨在解析其源码,揭示其在实现搜索引擎功能方面的核心技术和设计思路。 1. **JSP技术基础** JSP(JavaServer Pages)是...
1. 爬虫(Crawling):搜索引擎通过网络爬虫自动遍历互联网上的网页,获取网页内容。爬虫遵循超链接,不断地发现新的网页,并将其内容抓取到搜索引擎的服务器上。 2. 索引(Indexing):抓取的网页内容会被解析,...
【北大tiny search engine(tse)搜索引擎源码】是北京大学开发的一款小型搜索引擎的源代码,它为学习和理解搜索引擎的工作原理提供了宝贵的参考资料。这个项目旨在帮助计算机科学和技术专业的学生以及对搜索引擎技术...
搜索引擎营销破裂(Search Engine Marketing Cracked)一文探讨了搜索引擎优化(SEO)的基础知识和实践,为网站开发人员在进行网站的设计、构建、维护和推广时提供了重要的指导。本文将基于提供的内容,详细解读SEO...
1. **爬虫**:搜索引擎的起始点是网络爬虫,它负责遍历互联网上的网页,抓取新的和更新的内容。源码中,爬虫会定义URL队列、下载器和解析器模块。URL队列管理待抓取的网址,下载器负责下载网页内容,解析器则提取出...
搜索引擎通常由以下几个主要部分组成:爬虫(Crawler)、索引器(Indexer)、查询处理器(Query Processor)和排序算法(Ranking Algorithm)。爬虫负责抓取网页内容,索引器构建索引以便快速查找,查询处理器接收...
1. **网络爬虫(Web Crawler)**:这是搜索引擎的起点,它会自动遍历互联网上的网页,抓取内容并跟踪链接到其他页面。爬虫通常遵循robots.txt文件的规则,并避免抓取不希望被收录的页面。 2. **索引(Indexing)**...