宁波seo优化专栏

一种基于局域网的分布式搜索引擎规划与完成

发布时间:2018-12-13 00:16:58
  摘要:以局域网内的分布式处理为立足点,剖析了查找引擎的根本原理,规划并完成了一种依据局域网的分布式查找引擎。该引擎具有便利扩展、分布式处理、增量式索引和主动负载均衡等特色,适合于校园网和企业网等局域网内运用。
  关键词:查找引擎;分布式处理;爬虫;分词;索引
  中图分类号:TP393
  文献标识码:A文章编号:1672-7800(2015)003-0117-02
  0引言
  跟着社会信息化的不断深入和互联网技能的快速发展,网络信息也以指数等级飞速增加。在日常作业和日子中,要在很多、纷乱的数据中找出有用信息,需求凭借查找引擎的帮助。但传统单效劳器形式的查找引擎因为核算才能约束,进入大数据时代后,其在运用中的缺乏越来越成为互联网查找的瓶颈。因而,在海量的互联网信息中进行查找,单靠效劳器核算才能的增加已难以满足要求。为了解决查找需求与查找引擎效劳器处理才能的对立,以分布式处理为技能支撑的分布式查找引擎应运而生[1]。本文以局域网内的分布式处理为立足点,规划并完成了一种依据局域网的分布式查找引擎。该引擎具有便利扩展、分布式处理、增量式索引和主动负载均衡等特色,适合于校园网和企业网等局域网内的网络查找效劳。
  1体系总体规划
  1.1查找引擎体系结构
  一个根本查找引擎由4个首要部分构成:网页信息获取子体系、信息预处理子体系、索引子体系和检索子体系,别离进行网络爬虫信息获取、分词程序、倒排索引和内容检索等功能使命。网络爬虫是在网上爬取网页的一种程序。这里的“爬”指不停地抓取、下载网页并将网页内容分为3部分:网页标题、网页文档内容以及网页中的所有链接。在获取了所有链接后,遍历这些链接并将链接网页下载下来。不断重复上述进程,递归地将所有网页下载下来并存入存储数据库。第二个进程是进行信息预处理,首要包括由分词程序进行分词,最终经过索引程序对其树立倒排索引。一般关于英文等拉丁语系的网页而言,句子中的单词已天然地被空格分隔好了,因而完成一个根本的查找引擎无需进行特别处理即可完结分词程序。然而,关于像中文、韩文或日文等言语来说,因为句子中的文字没有天然分隔,检索词和词组则变得十分繁琐。所谓分词指将一个汉字序列切分红一个个单独的词或词组,分词进程便是将句子中的接连字序列依照一定标准从头组合成词序列的进程。完结分词进程之后,再依据分词成果将文档树立索引,存入数据库。
  1.2查找引擎模块规划
  1.2.1网络爬虫规划
  网络爬虫程序一般包括以下几个模块:①保存种子URL和待抓取URL的数据结构;②保存已抓取过URL的数据结构,避免重复抓取;③页面获取模块;④对已获取的页面内容各个部分进行抽取的模块;⑤负责分布式的模块。
  爬虫是从种子URL开始下载网页的,称该种子URL为initial_page,如在initial_page=www.bistu.edu.cn这个种子链接中,爬虫看到了该页面引向的各种链接,从而爬取到页面主页内容,并将整个网页存储起来。在该主页中,还有种子initial_page的URL,因而要做个记录,避免重复爬取,否则会堕入无休止的循环。所以每次在爬取新网页时,要先查看是否爬过这个网页。假如运用一般的哈希表存储,其时刻复杂度为O(logn),互联网上的网页数以千万,若运用这种办法,功率会十分低下。因而,在本文的规划中,运用一种称为布隆过滤器(BloomFilter)的特别数据结构来判别该网页是否存储过,其时刻复杂度仅为常数O(1)。
  1.2.2分词程序规划
  中文分词算法大约分为两大类,第一类是依据字符串匹配,即扫描字符串。假如发现字符串的子串和词相同,即以为找到了一个匹配。在匹配时能够运用KMP算法或BM算法。这类分词通常会参加一些启发式规则,如“正向/反向最大匹配”、“长词优先”等策略,这类算法长处是速度快,时刻复杂度都为O(n),完成简略,作用杰出。缺陷在于对歧义和未登录词处理欠好;第二类是依据核算学习和机器学习的分词办法,这类分词依据人工标示的词性和核算特征,对中文进行建模,依据观测到的数据(标示好的语料)对模型参数进行练习。在分词阶段再经过模型核算各种分词呈现的概率,将概率最大的分词成果作为最终成果。常见的序列标示模型有HMM和CRF。这类分词算法能很好地处理歧义和未登录词问题,作用比第一类算法好,但是需求很多人工标示数据,另外,分词速度也较慢。在分词作用点评时,除了标示量、准确率等,分词粒度也是一个需求考虑的目标。运用单一粒度的分词往往无法找到合理匹配,多粒度多层次匹配能够到达更好作用。
  1.2.3索引规划
  查找引擎的索引一般选用倒排索引的办法,倒排索引(Invertedindex)也常被称为反向索引、置入档案或反向档案,用来存储在全文查找下某个单词在一个或一组文档中存储位置的映射,是文档检索体系中最常用的数据结构[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抓取结构,宁波seo用于抓取Web站点并从页面中提取结构化数据。Scrapy用处广泛,能够用于数据挖掘、监测和主动化测验,用户能便利地依据需求进行修改。它也提供了多种类型爬虫的基类,如BaseSpider、Sitemap爬虫等。所以本文运用Scrapy作为爬虫的中心,配合运用布隆过滤器来判别是否拜访过该URL。在本文完成时,定义一个Spider类,这个类便是一个爬虫,是scrapy.Spider的子类。刚开始执行该Spider时,response是拜访start_urls后的响应,里面包括了URL、源码、header等信息,然后回到Spider的parse函数。该函数有几个意图:假如抓取正确,则生成一个item,并将后续需求抓取的链接添加到爬虫的request队列中;然后获取item的信息,经过运用xpath句子,提取出需求的数据,生成item;随后,再经过yieldscrapy.Request(newurl,callback=self.parse)在爬取队列中添加新的URL。
  2.2分词模块完成
  中文与英文不同,在字与字之间一般没有空格。汉语是以字为根本单位,所以要完成中文关键字的查找,需求从接连的字中切分出与所需关键词尽或许接近的词语。中文分词即对中文断句,这样一方面能够消除文字的部分歧义,另一方面还能够进行更多加工。中文分词能够分为如下几个子使命:①分词:把输入的标题或文本内容切分红词;②词性标示:为分出来的词标示上名词或动词等词性,从而部分消除词的歧义;③语义标示:把每个词标示上语义编码。
  很多分词的办法是运用词库。词库的来源是语料库或词典。中文分词有两类办法:机械匹配法(如正向最大长度匹配和逆向最大程度匹配等)和核算法(例如最大约率分词办法和最大熵分词办法)。本文在完成分词的进程中运用了jiebaSegment[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]Afastandpowerfulscrapingandwebcrawlingframework[EB/OL].http://scrapy.org/.
  [4]Jieba.Chinesetextsegmentation[EB/OL].https://github.com/fxsjy/jieba/tree/jieba3k.
  (责任编辑:黄健)
  本文转载自
  宁波seowww.leseo.net
  补充词条:宁波网站排名优化  宁波seo推广公司  宁波seo优化公司  宁波seo网站优化  宁波网站seo优化