一种基于局域网的分布式搜索引擎设计与实现
- 格式:doc
- 大小:91.00 KB
- 文档页数:5
分布式并行信息检索系统的设计与实现 ———基础教育资源搜索引擎个案研究田俊华 杨晓江(南京师范大学教育科学学院 南京210097) 【摘要】 在大规模信息检索领域,随着高速网络技术的迅速发展,分布式并行信息检索技术由于其高效性与经济性而受到越来越多的重视。
结合基础教育资源搜索引擎的设计开发,讨论分布式并行信息检索系统中涉及的数据分布、查询任务分解及节点冗余等关键技术。
【关键词】 分布式并行处理 信息检索 轮转分配算法 【分类号】 TP391.3D esi gn and I m plem en t a ti on for D istr i buted Para llel I R System s ———A Ca se of Ba si c Educa ti ona l Resources Search Eng i n eT i a n Junhua Yang X i a oji a ng(School of Education Science,N anjing N or m al U niversity,N anjing 210097,China ) 【Abstract 】 I n the field of large -scale inf or mati on retrieval,distributed parallel I R technol ogy is attracting moreand more peop le ’s attenti on due t o its high efficiency and l ow cost as the result of the rap id devel opment of high -s peed net w ork technol ogy .Based on the design and i m p le mentati on of BERSE,the paper discusses s ome key technol ogies f or parallel I R syste m s,such as data distributing,query disasse mbling,and node s paring . 【Keywords 】 D istributed parallel computing I nf or mati on retrieval Round -r obin algorith m 收稿日期:2007-06-19 收修改稿日期:2007-06-29 随着社会信息化程度的不断提高,很多系统面临从大规模数据集中快速检索信息的需求。
江南大学现代远程教育2013年上半年第三阶段测试卷考试科目:《计算机应用基础》第六章至第九章(总分100分)时间:90分钟学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一、单项选择题(本题共10小题,每小题1分,共30分)1、计算机网络最本质的功能____A____。
A、资源共享B、分布式信息及数据处理C、提高计算机的可靠性和可用性D、数据通信2、OSI模型中___A___提供端到端的通信。
A、传输层B、表示层C、数据链路层D、应用层3、城域网是介于广域网与局域网之间的一种高速网络,城域网的设计目标是要满足几十公里范围的大量企业、机关、公司的____B____。
A、多个计算机互联的需求B、多个局域网互联的需求C、多个主机互联的需求D、多个SDH网互联的需求4、在下列有关最常见局域网、网络设备以及相关技术的叙述中,错误的是__D__。
A、以太网是最常用的一种局域网,它采用总线结构B、每个以太网网卡的介质访问地址(MAC地址)是全球惟一的C、无线局域网一般采用无线电波或红外线进行数据通信D、“蓝牙”是一种远距离无线通信的技术标准,适用于山区住户组建局域网5、互联网中的IP地址可以分为A~E五类,且具有规定的格式。
如果IP地址的主机号部分的每一位均为0,该地址一般作为___B___。
A、网络中主服务器的IP地址B、网络地址,用来表示一个物理网络C、备用的主机地址D、直接广播地址6、以下关于局域网和广域网的叙述中,正确的是___B___。
A、广域网只是比局域网覆盖的地域广,它们所采用的技术是完全相同的B、互联网是世界范围内最大的广域网C、广域网的英文缩写是LAN,局域网的英文缩写是WAND、单位或个人组建的网络都是、局域网,国家或国际组织建设的网络才是广域网7、在下列有关IP地址、域名和URL的叙述中,错误的是__B____。
A、目前互联网中IP地址大多数使用4个字节(32个二进位)表示B、使用C类IP地址的网络规模最大,一个C类物理网络可以拥有上千万台主机C、一台主机通常只能有一个IP地址,但可以有多个域名D、URL用来标识WWW网中的每一个信息资源,不同的信息资源对应不同的URL8、路由器用于连接多个异构的计算机网络。
2020-2021学年大学计算机基础期末考试复习题库(2)客观题一、是非题(请从A、B中选出一个正确答案。
[每题1分])1.Google就是典型的目录搜索引擎。
A.对B.错2.复制数据透视表与复制其它文本一样可使用Ctrl+C与Ctrl+V完成。
A.对B.错3.在Word2003中,调节字符间距时,可以调节中英文之间、中文和数字之间、英文和数字之间的间距。
A.对B.错4.声音信号可以直接送入计算机存储和处理。
A.对B.错5.虽然有了操作系统,但用户还需了解更多的软、硬的细节才能方便地的使用计算机。
A.对B.错6.Internet是计算机网络的网络。
A.对B.错7.第二代计算机的主要特征为:全部使用晶体管,运算速度达到每秒几十万次。
A.对B.错8.国际标准化组织(ISO)制定的开放系统互联参考模型(OSI)将网络体系结构分成七层。
A.对B.错9.就合成乐曲的音质而言,FM合成器比波表合成器合成的音质好。
A.对B.错10.搜索引擎是一个应用程序。
A.对B.错二、单选题(请从A、B、C、D中选出一个正确答案。
[每题1分])(一)计算机基础知识部分。
11.世界上第一台计算机ENIAC每秒可进行______次加、减法运算。
A.5万B.5千C.3万D.3千12.分子计算机的基础是制造出单个的分子,其功能与______及今天的微电路的其他重要部件相同或相似。
A.电容B.电阻C.电荷D.三极管、二极管13.将CAD与CAM技术集成,称为______系统。
A.计算机辅助设计B.计算机辅助制造C.计算机集成设计D.计算机集成制造14.若己知彩色显示器的分辨率为1024×768,如果它能显示16色,则显示存储器容量至少应为_____。
A.192KBB.192MBC.384KBD.384MB15.在微机系统中,I/O接口位于______之间。
A.主机和总线B.主机和I/O设备C.I/O设备和I/O设备D.CPU和内存储器16.以下______不是微机显示卡的显示标准。
2020年11月25日第4卷第22期现代信息科技Modern Information TechnologyNov.2020 Vol.4 No.22收稿日期:2020-10-15基金项目:江西省教育厅科学技术研究项目(GJJ207803);江西省高等学校教学改革研究课题(JXJG-19-77-2)站长工具平台“搜一搜”的设计与实现——基于Python+PHP+Elasticsearch 语言邱慧玲,王鹰汉(上饶职业技术学院,江西 上饶 334109)摘 要:个人站长是目前大学生创业的主流方法,使用站长工具是网站运营的必备技能。
文章着重探讨了站长工具平台——“搜一搜”的建设,在分析市面上已有站长工具缺点的基础上,对“搜一搜”平台进行了具体的系统分析,最终设计并建立了一个更加适合高校学生使用的新平台,旨在为新站长们节约学习成本,提供清晰的运营流程,明确适合个人网站的优化方向,助力大学生创业。
关键词:站长工具;Elasticsearch ;关键词;PHP中图分类号:TP393.092;TP391.3 文献标识码:A文章编号:2096-4706(2020)22-023-04Design and Implementation of Webmaster Tool Platform “Souyisou”——Based on Python + PHP + Elasticsearch LanguageQIU Huiling ,WANG Yinghan(Shangrao Vocational & Technical College ,Shangrao 334109,China )Abstract :Personal webmaster is the mainstream method for college students to start a business ,and the use of webmaster tool isa necessary skill for website operation. This paper focuses on the construction of the webmaster tool platform ——“souyisou ”,based onthe analysis of the shortcomings of the existing webmaster tools in the market ,a specific systematic analysis of the “souyisou ” platform is carried out ,a new platform which is more suitable for college students is designed and established ,which aims to save learning costs for new webmasters ,provide a clear operation process ,clarify the optimization direction for personal websites ,and help college students start their own businesses.Keywords :webmaster tool ;Elasticsearch ;keyword ;PHP0 引 言“大众创业、万众创新”的新时代开启以来,高校纷纷建立创业学院,为学生创新创业提供资金、场地、学业等多方位支持及优惠政策,极大激发了高校学生的创业积极性,并取得了一些成绩。
基于Scrapy的分布式爬虫系统的设计与实现李代祎;谢丽艳;钱慎一;吴怀广【摘要】随着互联网的快速发展,其信息量和相关服务也随之快速增长.如何从海量的信息中快速、准确地抓取所需要的信息变得越来越重要,因此负责互联网信息收集工作的网络爬虫将面临着巨大的机遇和挑战.目前国内外一些大型搜索引擎只给用户提供不可制定的搜索服务,而单机的网络爬虫又难当重任,因此可定制性强、信息采集速度快和规模大的分布式网络爬虫便应运而生.通过对原有Scrapy框架的学习和研究,将Scrapy和Redis结合改进原有的爬虫框架,设计并实现了一个基于Scrapy框架下的分布式网络爬虫系统,然后将从安居客、58同城、搜房等网站抓取的二手房信息存入MongoDB中,便于对数据进行进一步的处理和分析.结果表明基于Scrapy框架下的分布式网络爬虫系统同单机网络爬虫系统相比效率更高且更稳定.【期刊名称】《湖北民族学院学报(自然科学版)》【年(卷),期】2017(035)003【总页数】6页(P317-322)【关键词】Scrapy;分布式;Scrapy-Reids;网络爬虫;MongoDB;数据存储【作者】李代祎;谢丽艳;钱慎一;吴怀广【作者单位】郑州轻工业学院计算机与通信工程学院,河南郑州 450002;河南省工商行政管理学校,河南郑州 450002;郑州轻工业学院计算机与通信工程学院,河南郑州 450002;郑州轻工业学院计算机与通信工程学院,河南郑州 450002【正文语种】中文【中图分类】TP3互联网中的信息量随着互联网的迅速发展而越来越多,在2008年Google公司宣布他们检索到的网页已经超过了1万亿,然而其检索到的网页仅仅是互联网上的一部分而已[1],如何从大量的信息中挖掘出有用的信息就成了当今的热门问题,搜索引擎也正是在这种需求下而诞生的技术.搜索引擎是通过网络爬虫从互联网中挖掘大量需求信息,然后网络爬虫将这些信息存储在数据库中,以便将来根据用户需求对其进行处理,它用到人工智能、信息检索、计算机网络、数据库、分布式处理、数据挖掘、机器学习和自然语言处理等多领域的理论技术,具有很强的综合性和挑战性[2-3].目前国内外在网络爬虫领域已经有了很多研究,例如,爬行策略、海量数据存储、海量数据索引、网页评级等.但是较为成熟的大型网络爬虫只能为用户提供不可定制的搜索服务,且很多网络爬虫的技术都被列为商业机密,不对外开放.在开源爬虫方面,例如,Larbin、Nutch、heritrix等已经是比较成熟的网络爬虫项目,但是它们大多为单一网络爬虫,并且存在着性能不稳定、用户亲和性较低、对中文支持不足和配置复杂等问题[4-5].因此,部署方便、可定制性高的中小规模分布式网络爬虫取代传统的网络爬虫势不可挡.1.1 网络爬虫网络爬虫(Web Crawler)是一种按照一定规则在互联网上自动获取处理网页的计算机程序,其广泛地应用于互联网搜索引擎或网页缓存管理中[6].简单来讲,URL资源存放在一个队列中,此队列负责URL资源的优先级管理.首先网络爬虫从队列中获取一个 URL资源并下载此网页,然后提取该网页中的其它URL 资源并放入队列中.重复上述过程,直到爬虫将其关闭[7-8].通用的网络爬虫结构如图1所示.网络爬虫通过不同爬行策略递归的访问页面、保存页面,最终获取所需信息.目前网络爬虫遵守以下4种爬行策略规则[9]:1)选择爬行规则:使用广度优先的爬行策略.一个网络爬虫的目的是抓取互联网中最相关的网页,而不是随机的获取互联网的某些样本网页.2)回访规则:互联网是动态的,互联网中网页的建立、修改和删除等活动在不断进行.然而一个爬虫活动可能持续和长时间,所以爬虫要制定回访规则来访问更新的网页.3)礼貌规则:如果网络爬虫不断抓取同一台服务器上的网页,当请求过多时会造成服务器瘫痪.因此网络爬虫在正常运行的同时也要兼顾服务器的正常运行.4)并行规则:网络爬虫可以通过多线程并发地运行多个爬行进程,通过这样可以极大的降低开销和提高下载效率.1.2 Scrapy-RedisScrapy-Redis[10]是基于Redis的Scrapy分布式组件,其将任务和数据信息的存取放到redis queue中,使多台服务器可以同时执行crawl和items process,从而大大提高了数据爬取和处理的效率.其功能为:①多个爬虫共享一个redis queue 队列,适合大范围、多域名的爬虫集群.②爬取的items存放到items redis queue队列,可以开启多个items process来处理爬取的数据.Scrapy-Redis各个组件之间的关系如图2所示.1.3 数据存储NoSQL由于网络爬虫爬取的数据大多为半结构化或非结构化的数据,并且传统的关系型数据库并不擅长存储和处理此类数据.因此选择非关系型数据库 NoSQL 存储爬取到的数据.NoSQL 数据库大致分为4类[11]:1)键值(Key-Value)存储数据库:Key-Value模型对于IT系统来说的优势在于简单、易部署.例如:Tokyo Cabinet/Tyrant,Redis,Voldemort,Oracle BDB.2)列存储数据库:此类数据库通常是针对海量的数据实施分布式存储.键仍然存在且指向了多个列.如:Cassandra,HBase,Riak.3)文档型数据库:此类型的数据模型使版本化和半结构化的文档以特定的格式存储,例如,JSON.文档型数据库的查询效率比较高,如:CouchDB,MongoDb,SequoiaDB.4)图形(Graph)数据库:图形结构的数据库是使用灵活的图形模型,并且该模型能够扩展到多个服务器上.如:Neo4J,InfoGrid,Infinite Graph.2.1 Scrapy框架研究2.1.1 Scrapy框架如图2所示,Scrapy 框架的模块组成有[12-14]:1)Scrapy引擎(Scrapy Engine):负责调控数据在系统中各个模块间传递,以及调用相应的函数响应特定的事件.2)调度器模块(Scheduler):负责对所有待爬取的 URL资源进行统一管理.例如,将接收 Scrapy 引擎提交的URL资源插入到请求队列中;将URL从队列中取出并发送给Scrapy引擎以响应Scrapy引擎发出的URL 请求.3)下载器中间件模块(Downloader Middlewares):负责传递Scrapy引擎发送给下载器模块的URL请求和下载器模块发送给 Scrapy 引擎的HTTP 响应.a)下载器模块(Downloader):负责下载Web 页面上的数据,并最终通过Scrapy 引擎将其发送给爬虫模块.b)爬虫模块(Spider):分析从下载器模块获取到的数据,然后提取出Item 或得到相关的URL资源.c)爬虫中间件模块(Spider Middlewares):负责处理爬虫模块的输入和输出.d)数据流水线模块(Item Pipeline):通过数据清理、数据验证、数据持久化等操作来处理由爬虫模块提取和发送过来的Item.2.1.2 Scrapy框架扩展 Scrapy框架简单、高效,且被广泛应用于数据的挖掘、监测和自动测试.但是Scrapy框架也存在不足,例如,Scrapy框架下的爬虫不支持分布式、单线程执行、内存消耗过大等.因此深入理解Scrapy框架的扩展机制,通过编程来替换或增加框架中的一些模块来弥补其不足是十分必要的.本文对Scrapy框架做了如下补充:1)本文利用Scrapy-Redis通过redis对爬取的请求进行存储和调度,并对爬取产生的项目(items)存储以供后续处理使用.Scrapy-Redis的组件如下[15-16].a)Connection.py:对settings进行配置,实现通过Python访问redis数据库,被dupefilter和scheduler调用,涉及到redis存取的都要使用到这个模块.b)dupefilter.py:使用redis的set数据结构对reqeust进行去重处理.c)queue.py:将request存入到queue中,调度时再将其弹出.目前队列的调度有三种方式:FIFO(先入先出)的SpaiderQueue,SpiderPriorityQueue和LIFO(后入先出)的SpiderStack.本文用的是第二种方式.d)pipelines.py:将Item存储在redis中以实现分布式处理.e)scheduler.py:重写scrapy中的调度模块,实现crawler的分布式调度.f)spider.py:重写scrapy中的爬虫模块,从redis数据库的队列中读取要爬取的url,然后执行爬取.若爬取过程中有其它的url返回,继续执行爬虫直到所有的request 完成后,再从队列中读取url,循环上述过程.通过分析可得,Scrapy-Redis各个组件之间的关系如图3所示.2)单机硬盘与内存容量有限、数据的频繁查询是造成了CPU性能的严重下降的主要原因,因此数据库的选择显的尤为重要.由于网络爬虫爬取的数据大多数为非结构化的数据,因此本文选取擅长存取非结构化数据的数据库MongoDB[17-18].经过扩展后的Scrapy框架如图4所示.2.2 反爬虫技术应对策略目前很多网站禁止爬虫爬取数据,网站通过用户请求的Headers、用户行为、网站目录和数据加载等方式来进行反爬虫,从而增大爬取的难度.本爬虫主要采取了以下应对策略:1)设置download_delay参数. 如果下载等待时间过长,则短时间大规模抓取数据的任务将不能完成,而太短则会增加被禁止爬取数据的概率.因此在settings.py中设置:DOWNLOAD_DELAY = 2.2)禁用cookies,可以防止爬虫行为被使用cookies识别爬虫轨迹的网站所察觉,因此需要在settings.py 中设置:COOKIES_ENABLES=False.3)伪装user agent,防止被服务器识别,将user agent 写入rotate_useragent.py 文件里形成user-agent池,在发送请求时会从user-agent池中随机选取一个使用.因此需要在settings.py中设置:DOWNLOADER_MIDDLEWARES={′scrapy.contrib.downloadermiddleware.u erAgentMiddle ware′ :None,′HouseInfoSpider.spiders.rotate_useragent.RotateUserAgentMiddleware′ :4 00,}2.3 数据爬取与存储2.3.1 网页结构和数据分析通过对网页HTML结构进行分析,从而完成爬虫模块的编写.本爬虫的URL队列中有3种类型的URL,以安居客的网页结构为例进行分析.该网页中所包含数据的节点是class=”houselist-mod”的<ul>节点,该节点下的<li>节点有50个,每个<li>节点中包含有需要提取的目标数据,即index类型的URL.Scrapy提取数据使用特定的 XPath 表达式来提取 HTML 网页中的数据,伪代码如下所示:def parse_detail(self,response):item = HouseInfoItem()selector = scrapy.Selector(response)item[′url′] = response.urlitem[′village_title′]= #标题list_first_item(selector.xpath(′//h3[@class ="long-title"][1]/text()′).extract()).strip() }(……)item[′village_describe′]= #描述list_first_item(selector.xpath(′//div[@class="houseInfoV2-item-descjs-house-explain"]/text()′).extract()).replace("\n","").replace("\t","").replace("","").strip() yield item从网站上获得数据followers、fullname等在Item中统一建模.相应代码在items.py中:import scrapyclass HouseInfoItem(scrapy.Item):url=scrapy.Field() #当前网页的urlvillage_name=scrapy.Field() #小区名village_location=scrapy.Field() #位置village_area=scrapy.Field() #面积(……)2.3.2 数据库连接和参数设置在settings.py文件中设置MongoDB的相应参数:服务器、端口号、数据库,然后在指定的位置添加数据库设置:#MongoDBMONGO_URI=′mongodb://127.0.0.1:27017′MONGO_DATABASE = ′HouseInfo′#改变默认PIPELNESITEM_PIPELINES={′HouseInfoSpider.pipelines.MongoPipeline′:300,′scrapy_r edis.pipelines.Redi sPipeline′:400,}在pipelines.py文件中定义一个函数连接数据库:#数据库初始化Class MongoDBPipeline(object):hp_collection_name = ′house_info′def_inir_(sef,mongo_uri,mongo_db)(……)#数据库连接def open_spider(self,spider):self.client=pymongo.MongoClient(self.mongo_uri)self.db = self.client[self.mongo_db]#将数据存入到数据库中def process_item(self,item,spider):if isinstance(item,HouseInfoItem):key_index = item[′url′]if not self.db[self.hp_collection_name] .find({′url′:key_index}).count(): self.db[self.hp_collection_name].insert(dict(item))return item3.1 实验结果Ipush.py文件中将要爬取的原始网站url存入redis数据库的队列中,然后通过scrapy crawlall命令执行爬虫,最后将爬取的数据存入MongoDB中.爬取结果显示如图5所示.3.2 结果分析整个系统的部署:1台安装有redis和MongoDB数据库的服务器作为爬虫的主节点;1台安装有MongoDB数据库的服务器作为爬虫从节点;1台安装有MongoDB 数据库的单独服务器.硬件配置如表1所示.实验测试中,为了防止爬虫行为被禁止,将最高爬取频率设置为2秒/网页,系统运行5个小时(单机爬取和分布式爬取选在同一时段),其爬取结果如表2所示.通过分析表2中的数据可知,每个节点每小时爬取的网页数量在1 700左右.为了防止爬虫被禁止,爬虫的最高频率设置为2秒/网页.由于受网络延迟、I/O延迟等的限制,每小时爬取的网页数量略低于理论上最高值1 800(60*60/2=1 800).另外,2个爬虫节点每小时爬取url的数量几乎接近1∶1,这也证明了系统中各个爬虫节点的负载均衡.同时运行结果也表明,经过扩展的Scrapy框架使得爬取速度大大提高了. 根据表2中数据,利用Matlab可得到图6的线形图.图6中每条线的斜率就代表其爬虫的爬取效率.从图6中可以看出一个节点进行爬取时的效率要远远低于两个节点同时爬取时的效率.综上所述分布式爬虫爬取的效率远高于单机爬虫.本文通过对开源网络爬虫Scrapy框架的深入研究和扩展,利用Scrapy-redis组件之间的相互作用,设计和实现了一个分布式的网络爬虫系统;通过与数据库的连接,将爬取的数据存入MongoDB中,便于对数据进行查询、统计和分析;同时在技术上也为数据研究人员提供了方便的数据获取方法. 但是本文只对URL进行了去重处理,并没有考虑节点爬取的负载均衡问题,同时爬取过程中网页被重置问题目前也没有好的解决办法,这些问题需要进一步的探索研究.【相关文献】[1] VLADISLAV Shkapenyuk,TORSTEN Suel.Desigen and Imlementation of a High-Performance Distributed Web Crawler.Technical Report,In Proceedings of the 18th International conference on Data Engineering(ICDE)[C]∥IEEE CS Press,2001:357-368. [2] 薛丽敏,吴琦,李骏.面向专用信息获取的用户定制主题网络爬虫技术研究[J].信息网络安全,2017(2):28-31.[3] 王素华.基于网络爬虫技术的学生信息收集方法[J].电脑迷,2016(3):89-92.[4] HANS Bjerkander,ERIK Karlsson.Distributed Web-Crawler[D].Master Thesis Chalmers University of Technology,2013:1-2.[5] 郭涛,黄铭钧.社区网络爬虫的设计与实现[J].智能计算机与应用,2012(4):78-92.[6] 董日壮,郭曙超.网络爬虫的设计与实现[J].电脑知识与技术,2014(17):201-205.[7] JUNGHOO Cho,HECTOR Garcia-Molina.Parallel crawlers[C]∥Of the 11th International World-Wide Web Conference,2002:32-35.[8] 李勇,韩亮.主题搜索引擎中网络爬虫的搜索策略研究[J].计算机工程与科学,2008(3):42-45.[9] 黄聪,李格人,罗楚.大数据时代下爬虫技术的兴起 [J].计算机光盘软件与应用,2013(17):79-80.[10] 赵鹏程.分布式书籍网络爬虫系统的设计与现[D].成都:西南交通大学,2014.[11] MOHR G,STACK M,RNITOVIC I,et al.Introduction to heritrix [C]∥4th International Web Archiving Workshop,2004:109-115.[12] CATTELL R.Scalable SQL and NoSQL data store [J].ACM SIGMOD Record,2011(2):12-27.[13] 刘学.分布式多媒体网络爬行系统的设计与实现 [D].武汉:华中科技大学,2012:10-25.[14] 李贤芳.面向作战系统应用的数据分发中间的研究与设计[D].南京:南京理工大学,2013.[15] THELWALl M.A web crawler design for data mining[J].Journal of Information Science,2001,27(5):319-325.[16] 徐亦璐.基于多线程的网络爬虫设计与实现[J].计算机光盘软件与应用,2011(2):152-152.[17] 王劲东.基于高级数据加密标准 AES 的数据库加密技术研究与实现[D].西安:西安电子科技大学,2011.[18] 雷德龙,郭殿升,陈崇成,等.基于MongoDB的矢量空间数据云存储与处理系统[J].地球信息科学学报,2014(4):65-67.。
江南大学现代远程教育第三阶段测试卷考试科目:《计算机应用基础》第六章至第九章(总分100分)时间:90分钟得分:一、单项选择题(本题共30小题,每小题1分,共30分)1、计算机网络最本质的功能__A______。
A、资源共享B、分布式信息及数据处理C、提高计算机的可靠性和可用性D、数据通信2、OSI模型中__A______提供端到端的通信。
A、传输层B、表示层C、数据链路层D、应用层3、城域网是介于广域网与局域网之间的一种高速网络,城域网的设计目标是要满足几十公里范围的大量企业、机关、公司的____B____。
A、多个计算机互联的需求B、多个局域网互联的需求C、多个主机互联的需求D、多个SDH网互联的需求4、在下列有关最常见局域网、网络设备以及相关技术的叙述中,错误的是_D_____。
A、以太网是最常用的一种局域网,它采用总线结构B、每个以太网网卡的介质访问地址(MAC地址)是全球惟一的C、无线局域网一般采用无线电波或红外线进行数据通信D、“蓝牙”是一种远距离无线通信的技术标准,适用于山区住户组建局域网5、互联网中的IP地址可以分为A~E五类,且具有规定的格式。
如果IP地址的主机号部分的每一位均为0,该地址一般作为_B_____。
A、网络中主服务器的IP地址B、网络地址,用来表示一个物理网络C、备用的主机地址D、直接广播地址6、以下关于局域网和广域网的叙述中,正确的是__B____。
A、广域网只是比局域网覆盖的地域广,它们所采用的技术是完全相同的B、互联网是世界范围内最大的广域网C、广域网的英文缩写是LAN,局域网的英文缩写是WAND、单位或个人组建的网络都是、局域网,国家或国际组织建设的网络才是广域网7、在下列有关IP地址、域名和URL的叙述中,错误的是___C___。
A、目前互联网中IP地址大多数使用4个字节(32个二进位)表示B、使用C类IP地址的网络规模最大,一个C类物理网络可以拥有上千万台主机C、一台主机通常只能有一个IP地址,但可以有多个域名D、URL用来标识WWW网中的每一个信息资源,不同的信息资源对应不同的URL8、路由器用于连接多个异构的计算机网络。
作者简介:张 卫,男,1982年生,硕士研究生,研究方向为现代教育技术、搜索引擎;杨晓江,男,1965年生,博士,教授,硕士生导师,研究方向为现代教育技术、网络多媒体、软件工程等。
基于PC 机群的分布式信息检索系统Distributed Information R etrieval Architectures B ased on PC Cluster张 卫 杨晓江(南京师范大学教育技术系 南京 210097)摘 要 随着计算机和网络技术的迅猛发展,Web 上的各种文本资源越来越丰富。
如何提高搜索引擎系统的查询响应速度,增加系统的查询吞吐率,是搜索引擎信息检索子系统设计中需要解决的一个重要问题。
为此实现了一个基于PC 机群的分布式检索系统,采用了不平衡的分割方法分布索引数据在不同PC 机上。
通过对该系统的性能进行测试,发现该系统能够较好地满足用户需求,且性能优于平衡的索引数据分配方法。
关键词 PC 机群 分布式 信息检索 倒排索引 数据分割 随着计算机和网络技术的迅猛发展,网络搜索引擎所需要存储并处理的数据量是相当惊人的。
同时,使用搜索引擎进行信息检索的用户也越来越多,导致提交到搜索引擎信息检索子系统的查询数量特别巨大。
因此,搜索引擎的信息检索系统面临两个关键问题:一是如何快速地在所有资源中找到用户所需要的信息;二是能够同时处理大量用户的并发查询。
原来效率低下且容错率低、不能提供足够的并发服务、可扩展性不强的集中式信息检索子系统已经越来越不能满足要求。
解决这个问题的一个有效方案是构建一个由多台计算机通过网络链接而成的分布式信息检索系统,这样的计算机网络被称之为PC 机群。
用PC 机群的好处是能够用低端的价格实现高性能计算[1],且其容错能力和可扩展性都比较强,适宜于信息检索领域。
如何分布索引数据在不同的PC 机上,以便能够迅速搜索到用户所需的信息,是构建搜索引擎的分布式信息检索系统时需要重点考虑的一个问题。
分布式网络爬虫技术的研究与实现一、本文概述Overview of this article随着互联网的飞速发展,网络爬虫技术成为了获取、处理和分析海量网络数据的关键工具。
特别是在大数据和的背景下,分布式网络爬虫技术因其高效、可扩展的特性受到了广泛关注。
本文旨在深入研究分布式网络爬虫技术的核心原理、实现方法以及实际应用,为相关领域的研究者和开发者提供有价值的参考。
With the rapid development of the Internet, web crawler technology has become a key tool to obtain, process and analyze massive network data. Especially in the context of big data, distributed web crawler technology has received widespread attention due to its efficient and scalable characteristics. This article aims to delve into the core principles, implementation methods, and practical applications of distributed web crawler technology, providing valuable references for researchers and developers in related fields.本文将首先介绍分布式网络爬虫的基本概念、特点和发展历程,为后续研究奠定理论基础。
接着,将重点分析分布式网络爬虫的关键技术,包括任务调度、数据通信、负载均衡、去重策略等,并探讨这些技术在实现高效、稳定爬虫系统中的作用。
一种基于局域网的分布式搜索引擎设计与实现作者:黄宏博冯温迪王思远来源:《软件导刊》2015年第03期摘要:以局域网内的分布式处理为立足点,分析了搜索引擎的基本原理,设计并实现了一种基于局域网的分布式搜索引擎。
该引擎具有方便扩展、分布式处理、增量式索引和自动负载均衡等特点,适合于校园网和企业网等局域网内应用。
关键词:搜索引擎;分布式处理;爬虫;分词;索引中图分类号:TP393文献标识码:A 文章编号:1672-7800(2015)003-0117-020 引言随着社会信息化的不断深入和互联网技术的快速发展,网络信息也以指数级别飞速增长。
在日常工作和生活中,要在大量、纷繁的数据中找出有用信息,需要借助搜索引擎的帮助。
但传统单服务器模式的搜索引擎由于计算能力限制,进入大数据时代后,其在应用中的不足越来越成为互联网搜索的瓶颈。
因此,在海量的互联网信息中进行搜索,单靠服务器计算能力的增长已难以满足要求。
为了解决搜索需求与搜索引擎服务器处理能力的矛盾,以分布式处理为技术支撑的分布式搜索引擎应运而生[1]。
本文以局域网内的分布式处理为立足点,设计并实现了一种基于局域网的分布式搜索引擎。
该引擎具有方便扩展、分布式处理、增量式索引和自动负载均衡等特点,适合于校园网和企业网等局域网内的网络搜索服务。
1 系统总体设计1.1 搜索引擎系统框架一个基本搜索引擎由4个主要部分构成:网页信息获取子系统、信息预处理子系统、索引子系统和检索子系统,分别进行网络爬虫信息获取、分词程序、倒排索引和内容检索等功能任务。
网络爬虫是在网上爬取网页的一种程序。
这里的“爬”指不停地抓取、下载网页并将网页内容分为3部分:网页标题、网页文档内容以及网页中的所有链接。
在获取了所有链接后,遍历这些链接并将链接网页下载下来。
不断重复上述过程,递归地将所有网页下载下来并存入存储数据库。
第二个步骤是进行信息预处理,主要包括由分词程序进行分词,最后通过索引程序对其建立倒排索引。
一般对于英文等拉丁语系的网页而言,句子中的单词已天然地被空格分隔好了,因此实现一个基本的搜索引擎无需进行特殊处理即可完成分词程序。
然而,对于像中文、韩文或日文等语言来说,由于句子中的文字没有自然分隔,检索词和词组则变得非常繁琐。
所谓分词指将一个汉字序列切分成一个个单独的词或词组,分词过程即是将句子中的连续字序列按照一定规范重新组合成词序列的过程。
完成分词过程之后,再根据分词结果将文档建立索引,存入数据库。
1.2 搜索引擎模块设计1.2.1 网络爬虫设计网络爬虫程序一般包含以下几个模块:①保存种子URL和待抓取URL的数据结构;②保存已抓取过URL的数据结构,防止重复抓取;③页面获取模块;④对已获取的页面内容各个部分进行抽取的模块;⑤负责分布式的模块。
爬虫是从种子URL开始下载网页的,称该种子URL为initial_page,如在initial_page=这个种子链接中,爬虫看到了该页面引向的各种链接,从而爬取到页面首页内容,并将整个网页存储起来。
在该首页中,还有种子initial_page的URL,因此要做个记录,避免重复爬取,否则会陷入无休止的循环。
所以每次在爬取新网页时,要先检查是否爬过这个网页。
如果使用普通的哈希表存储,其时间复杂度为O(logn),互联网上的网页数以千万,若使用这种方法,效率会非常低下。
因此,在本文的设计中,使用一种称为布隆过滤器(Bloom Filter)的特殊数据结构来判断该网页是否存储过,其时间复杂度仅为常数O (1)。
1.2.2 分词程序设计中文分词算法大概分为两大类,第一类是基于字符串匹配,即扫描字符串。
如果发现字符串的子串和词相同,即认为找到了一个匹配。
在匹配时可以使用KMP算法或BM算法。
这类分词通常会加入一些启发式规则,如“正向/反向最大匹配”、“长词优先”等策略,这类算法优点是速度快,时间复杂度都为O(n),实现简单,效果良好。
缺点在于对歧义和未登录词处理不好;第二类是基于统计学习和机器学习的分词方法,这类分词基于人工标注的词性和统计特征,对中文进行建模,根据观测到的数据(标注好的语料)对模型参数进行训练。
在分词阶段再通过模型计算各种分词出现的概率,将概率最大的分词结果作为最终结果。
常见的序列标注模型有HMM和CRF。
这类分词算法能很好地处理歧义和未登录词问题,效果比第一类算法好,但是需要大量人工标注数据,另外,分词速度也较慢。
在分词效果评价时,除了标注量、准确率等,分词粒度也是一个需要考虑的指标。
使用单一粒度的分词往往无法找到合理匹配,多粒度多层次匹配可以达到更好效果。
1.2.3 索引设计搜索引擎的索引一般采用倒排索引的方法,倒排索引(Inverted index)也常被称为反向索引、置入档案或反向档案,用来存储在全文搜索下某个单词在一个或一组文档中存储位置的映射,是文档检索系统中最常用的数据结构[2]。
以英文为例,表1所示是被索引的文本,则倒排索引如表2所示。
如果检索条件为:"you"、"are"、"good",则结果将对应集合:{1,2,3}∩{1,3}∩{2,3}={3}。
基于以上思想,可以先抓取页面,每个页面抓取完成后在数据库中建立该页面的URL与文档号的满射关系。
将要抓取的页面都抓取完后进行分词,然后将分词结果存入数据库,并且根据该结果,建立倒排索引存入数据库。
然后按照词语在文档中的频率(PageRank),将每个词语对应的文档进行排序。
2 主要功能模块实现2.1 爬虫模块实现如上文所述,爬虫先从种子链接的URL开始,递归地下载并保存网页。
本文在实现爬虫的时候参考了开源库Jcrawl和Scrapy等[3]。
Scrapy是使用Python开发的一个快速高层次的屏幕抓取与Web抓取框架,用于抓取Web站点并从页面中提取结构化数据。
Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试,用户能方便地根据需求进行修改。
它也提供了多种类型爬虫的基类,如BaseSpider、Sitemap爬虫等。
所以本文使用Scrapy作为爬虫的核心,配合使用布隆过滤器来判断是否访问过该URL。
在本文实现时,定义一个Spider类,这个类即是一个爬虫,是scrapy.Spider的子类。
刚开始执行该Spider时,response是访问start_urls后的响应,里面包括了URL、源码、header等信息,然后回到Spider的parse函数。
该函数有几个目的:如果抓取正确,则生成一个item,并将后续需要抓取的链接添加到爬虫的request队列中;然后获取item的信息,通过使用xpath语句,提取出需要的数据,生成item;随后,再通过yield scrapy.Request(newurl, callback=self.parse)在爬取队列中添加新的URL。
2.2 分词模块实现中文与英文不同,在字与字之间一般没有空格。
汉语是以字为基本单位,所以要实现中文关键字的搜索,需要从连续的字中切分出与所需关键词尽可能接近的词语。
中文分词即对中文断句,这样一方面可以消除文字的部分歧义,另一方面还可以进行更多加工。
中文分词可以分为如下几个子任务:①分词:把输入的标题或文本内容切分成词;②词性标注:为分出来的词标注上名词或动词等词性,从而部分消除词的歧义;③语义标注:把每个词标注上语义编码。
很多分词的方法是使用词库。
词库的来源是语料库或词典。
中文分词有两类方法:机械匹配法(如正向最大长度匹配和逆向最大程度匹配等)和统计法(例如最大概率分词方法和最大熵分词方法)。
本文在实现分词的过程中使用了jieba Segment[4]。
通过基于前缀词典实现高效的词图扫描,将句子中汉字的所有成词可能生成有向无环图(DAG);采用了动态规划查找最大概率路径,找出基于词频的最大切分组合;对于未登录词,采用基于汉字成词能力的HMM模型,并使用了Viterbi算法。
2.3 检索模块实现建立搜索引擎检索模块的过程就是建立倒排索引的过程。
首先,对于每个分出的词而言,去寻找文档中是否包含这个词,如果包含则在数据库中该词对应的记录中记录该文档的文档编号。
文档编号还有一个属性,即关于这个词的词频,然后通过该词频计算PageRank值。
原则上,一个文章的标题是文章中心思想的概括,所以在文档中词频相同的情况下,标题词频PageRank值应为正文词频PageRank值的10倍。
整个页面的PageRank值=标题PageRank值+正文PageRank值,然后根据最后的PageRank值决定搜索时的排序。
3 结语本文分析了局域网内搜索引擎和单服务器模式引擎面临的主要问题,引入以分布式处理为核心的分布式搜索引擎。
从原理上分析了分布式搜索引擎的基本工作模式后,在参考一些开源库的基础上设计并实现了一种基于局域网的分布式搜索引擎。
本文实现的引擎具有分布式处理、增量式索引和自动负载均衡等特点,而且便于后续扩展,在校园网和企业网等局域网条件下具有很好的应用前景。
参考文献:[1] 曾剑平,吴承荣,龚凌晖.面向分布式搜索引擎的索引库动态维护算法[J].山东大学学报:理学版,2011(5):24-27.[2] 罗刚.使用C#开发搜索引擎[M].北京:清华大学出版社,2012:20-100.[3] A fast and powerful scraping and web crawling framework[EB/OL]. http:///.[4] Jieba.Chinese text segmentation[EB/OL]. https:///fxsjy/jieba/tree/jieba3k.(责任编辑:黄健)。