`

搜索引擎中的爬虫和倒排索引技术

阅读更多

我书读得少,你不要骗我。这可能是最适合我们的一句话了。昨晚跟以前的部长祥仔爷聊天,得知他现在在做搜索引擎的优化,在那家公司工作,他便跟我说起他的专业知识。但是由于我书读得太少了,很多专业术语都听不懂,连爬虫这个词语我都听得一愣一愣的,还好我记得爬虫是搜索引擎必备的。今天在看自动机的书顺带查了一下。

         

网络爬虫为搜索引擎从万维网下载网页。一般分为传统爬虫和聚焦爬虫。
传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。通俗的讲,也就是通过源码解析来获得想要的内容。
聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
直接百度了。爬虫就是一个网站索引吧,然后索引了这个然后跳另一个网站,他跳过的网站都下载到我们本地了。
 
下面来看看他是怎么抓取的

三、抓取策略

    在爬虫系统中,待抓取URL队列是很重要的一部分。待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面。而决定这些URL排列顺序的方法,叫做抓取策略。下面重点介绍几种常见的抓取策略:

    1.深度优先遍历策略

深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。我们以下面的图为例:

    遍历的路径:A-F-G  E-H-I B C D

    2.宽度优先遍历策略

    宽度优先遍历策略的基本思路是,将新下载网页中发现的链接直接插入待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。还是以上面的图为例:

    遍历路径:A-B-C-D-E-F G H I

好吧爬虫就到这里了,我也是看得一愣一愣的。下面是倒排索引了。

正排索引与倒排索引 

    咱们先来看什么是倒排索引,以及倒排索引与正排索引之间的区别:

    我们知道,搜索引擎的关键步骤就是建立倒排索引,所谓倒排索引一般表示为一个关键词,然后是它的频度(出现的次数),位置(出现在哪一篇文章或网页中,及有关的日期,作者等信息),它相当于为互联网上几千亿页网页做了一个索引,好比一本书的目录、标签一般。读者想看哪一个主题相关的章节,直接根据目录即可找到相关的页面。不必再从书的第一页到最后一页,一页一页的查找。

 

    接下来,阐述下正排索引与倒排索引的区别:

 

一般索引(正排索引)    

    正排表是以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档。正排表结构如图1所示,这种组织方法在建立索引的时候结构比较简单,建立比较方便且易于维护;因为索引是基于文档建立的,若是有新的文档假如,直接为该文档建立一个新的索引块,挂接在原来索引文件的后面。若是有文档删除,则直接找到该文档号文档对因的索引信息,将其直接删除。但是在查询的时候需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大延长,检索效率低下。     

    尽管正排表的工作原理非常的简单,但是由于其检索效率太低,除非在特定情况下,否则实用性价值不大。

倒排索引

    倒排表以字或词为关键字进行索引,表中关键字所对应的记录表项记录了出现这个字或词的所有文档,一个表项就是一个字表段,它记录该文档的ID和字符在该文档中出现的位置情况。由于每个字或词对应的文档数量在动态变化,所以倒排表的建立和维护都较为复杂,但是在查询的时候由于可以一次得到查询关键字所对应的所有文档,所以效率高于正排表。在全文检索中,检索的快速响应是一个最为关键的性能,而索引建立由于在后台进行,尽管效率相对低一些,但不会影响整个搜索引擎的效率。

    倒排表的结构图如图2


    倒排表的索引信息保存的是字或词后继数组模型、互关联后继数组模型条在文档内的位置,在同一篇文档内相邻的字或词条的前后关系没有被保存到索引文件内。

  
我只是默默地觉得正排索引没什么用,倒排索引就是专门为搜索引擎设计的吧,但是我比较想知道word(关键字)是全部还是只是大概每篇文章就几个关键字那样,我觉得应该全部都是关键字同时设立几个关键字优先吧 。同时倒排列表如下:
roger     地址    次数   <第几行,第4行,。。。>   
地址他经常以相对地址来比的  比如说第一个是10000  第二个是10005   第二个就直接写5了,否则会占用很多内存储存吧,真是机智啊。
 
 倒排索引是搜索引擎之基石。建成了倒排索引后,用户要查找某个query,如在搜索框输入某个关键词:“结构之法”后,搜索引擎不会再次使用爬虫又一个一个去抓取每一个网页,从上到下扫描网页,看这个网页有没有出现这个关键词,而是会在它预先生成的倒排索引文件中查找和匹配包含这个关键词“结构之法”的所有网页。找到了之后,再按相关性度排序,最终把排序后的结果显示给用户。
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    网络爬虫信息检索 C# 倒排索引

    在倒排索引中,每个词对应一个倒排列表,记录了这个词在哪些文档中出现过及对应的起始位置。构建倒排索引通常包括分词、创建词典和建立倒排列表三个步骤。在C#中,可以使用System.Collections.Generic结构来实现这些...

    猫头鹰搜索引擎,爬虫,分词,索引,搜索

    索引是搜索引擎的关键,通过构建倒排索引,可以快速定位到包含特定词汇的文档。倒排索引由词汇表和倒排列表两部分组成,词汇表记录了所有唯一的词汇,而倒排列表则存储了每个词汇出现的位置信息。在Python中,可能...

    爬虫搜索,简单的搜索引擎,java爬虫,搜索引擎例子,爬虫demo,java实现互联网内容抓取,搜索引擎大揭密

    在IT领域,爬虫搜索和搜索引擎是至关重要的技术,它们为获取、整理和提供网络上的海量信息提供了有效手段。本文将深入探讨这些概念,并通过一个简单的Java爬虫程序实例进行说明。 首先,让我们理解什么是爬虫。爬虫...

    自己动手写搜索引擎和网络爬虫

    对于搜索引擎,要学习倒排索引的构建和查询优化。 通过实践项目,你可以逐步掌握这些技术,从编写简单的爬虫抓取特定网站开始,逐渐升级到构建一个完整的搜索引擎。在这个过程中,你不仅能学到技术,还能理解搜索...

    搜索引擎中爬虫设计

    爬虫技术对于理解和构建高效的搜索引擎至关重要,因为它涉及到网络数据的获取、处理和存储等多个环节。下面我们将深入探讨爬虫设计的相关知识点。 首先,我们要理解爬虫的基本工作原理。网络爬虫通常由四个主要部分...

    搜索引擎核心文献,包括倒排索引,主题爬虫,页面分析,人工智能,总体流程框架介绍,李晓林 搜索引擎原理,真的是大宝级的,花了很多时间整理出来。

    而在倒排索引中,我们反其道而行之,通过文档找到关键词。每个词项都有一个对应的“倒排表”,这个表记录了这个词在哪些文档中出现过,以及在文档中的位置信息。这样,当用户输入查询时,搜索引擎可以迅速定位到包含...

    网络爬虫+搜索引擎+C#源码

    网络爬虫和搜索引擎是互联网数据挖掘与信息处理的两个重要技术。它们在现代信息技术中扮演着不可或缺的角色,尤其是在大数据分析、市场研究、竞争对手分析、内容推荐系统等方面。 网络爬虫,也称为网络蜘蛛或Web...

    搜索引擎原理 爬虫技术

    搜索引擎是互联网上不可或缺的信息检索工具,它通过爬虫技术遍历网络,收集并处理大量网页信息,然后通过一系列复杂的...通过理解这些原理和技术,我们可以更好地设计和优化搜索引擎,以满足用户对信息获取的需求。

    基于10000网页python搭建搜索引擎课程设计

    2.index.py生成倒排索引,idf文件 3.app.py运行搜索引擎 4.在默认浏览器输入 http://localhost:8080/ 进行检索 若要使用数据库 1.writeDB.py写倒排索引与idf(时间较长) 2.可以在summary.py切换from DB_search...

    C#实现搜索引擎网络爬虫

    C#中的字典类`Dictionary, TValue&gt;`非常适合用来创建倒排索引。 最后,为了提高爬虫性能,我们可能需要多线程或异步爬取,C#提供了`Task`和`Parallel`类支持并发处理。同时,为了避免对目标网站造成过大压力,应...

    python分布式爬虫搜索引擎源码

    对于搜索引擎,可能还需要使用倒排索引结构,如Lucene或Elasticsearch,以实现高效的搜索功能。 7. **IP代理池**:为了避免因频繁请求而被目标网站封禁,项目可能会使用IP代理池,通过更换请求的IP地址来提高爬虫的...

    C# 搜索引擎和网络爬虫的实现

    在IT领域,网络爬虫和搜索引擎是两个非常关键的技术,特别是在大数据分析和信息提取中。本文将深入探讨如何使用C#这一编程语言来实现这两项技术。 首先,让我们从网络爬虫开始。网络爬虫,也称为网页抓取器或蜘蛛,...

    通过CSDN爬虫爬取博客,利用Whoosh实现倒排索引与排序,django作为后端实现小型CSDN搜索引擎

    通过CSDN爬虫爬取博客,利用Whoosh实现倒排索引与排序,django作为后端实现小型CSDN搜索引擎 3.环境: python3.6 + django2.1 + 若干python库 4.配置 (1)django settings.py DATABASES = { 'default': { '...

    java简单的网页搜索实现,包含网页爬虫、词素分词、倒排索引、拼写校正、计算文档相似度等内容.zip

    3. **倒排索引**:倒排索引是搜索引擎的核心数据结构,它将每个词汇项关联到包含该词汇项的所有文档的列表。这样,当用户输入查询时,搜索引擎可以通过倒排索引快速找到相关文档。构建倒排索引时,可能使用了Trie树...

    搜索引擎技术分析 网络爬虫

    搜索引擎技术是互联网信息检索的核心,它通过网络爬虫(Web Crawler)等组件实现对海量网页数据的收集、处理和索引,以便用户能够快速、准确地找到所需信息。网络爬虫是搜索引擎的重要组成部分,它负责自动遍历...

    java写的搜索引擎网络爬虫源码

    这可能涉及到数据库(如MySQL、MongoDB)的使用,或者采用倒排索引结构(如Lucene)来提高查询效率。 7. **反爬虫策略**: - 为了应对网站的反爬机制,Java爬虫可能需要实现模拟登录、设置User-Agent、控制请求...

    搜索引擎的索引技术:INDEX TECHNIQUES

    为了实现高效的查询处理,搜索引擎使用了倒排索引(Inverted Index)技术。倒排索引对每个词项(Term)建立一个列表,记录包含这个词的所有文档编号,按文档编号排序。这样,当用户输入查询时,搜索引擎只需要查找...

    人工智能-项目实践-搜索引擎-爬虫应用实战-基于校园网的搜索引擎

    在本项目实践中,我们将深入探讨如何利用人工智能技术,特别是爬虫和搜索引擎的相关知识,来创建一个基于校园网的搜索引擎。这个项目将涵盖Python编程、网络爬虫开发、数据抓取与处理、信息检索等多个关键领域。 ...

    基于python3实现的网络爬虫和搜索引擎

    4. **查询处理**:用户输入查询后,搜索引擎进行查询分析,可能涉及拼写纠错、同义词扩展等,然后在倒排索引中查找匹配的文档。 5. **相关性排名**:搜索引擎通过算法(如PageRank、TF-IDF)计算文档与查询的相关性...

Global site tag (gtag.js) - Google Analytics