一个 java 搜索引擎的实现论文

一个 java 搜索引擎的实现论文

ID:852300

大小:276.03 KB

页数:18页

时间:2017-09-20

一个 java 搜索引擎的实现论文_第1页
一个 java 搜索引擎的实现论文_第2页
一个 java 搜索引擎的实现论文_第3页
一个 java 搜索引擎的实现论文_第4页
一个 java 搜索引擎的实现论文_第5页
资源描述:

《一个 java 搜索引擎的实现论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、一个Java搜索引擎的实现第1部分:网络爬虫自己动手写一个搜索引擎,想想这有多cool:在界面上输入关键词,点击搜索,得到自己想要的结果;那么它还可以做什么呢?也许是自己的网站需要一个站内搜索功能,抑或是对于硬盘中文档的搜索,这里说明使用Java语言而不是C/C++等其它语言的原因,因为Java中提供了对于网络编程众多的基础包和类,比如URL类、InetAddress类、正则表达式,这为我们的搜索引擎实现提供了良好的基础,使我们可以专注于搜索引擎本身的实现,而不需要因为这些基础类的实现而分心。分三部分的系列将逐步说明如何设计和实现一个搜索引擎。在第一部分中,您将首先学习搜索引擎的工作原理,同

2、时了解其体系结构,之后将讲解如何实现搜索引擎的第一部分,网络爬虫模块,即完成网页搜集功能。在系列的第二部分中,将介绍预处理模块,即如何处理收集来的网页,整理、分词以及索引的建立都在这部分之中。在系列的第三部分中,将介绍信息查询服务的实现,主要是查询界面的建立、查询结果的返回以及快照的实现。搜索引擎的三个部分是相互独立的,三个部分分别工作,主要的关系体现在前一部分得到的数据结果为后一部分提供原始数据。三者的关系如下图所示:图1.搜索引擎三段式工作流程自顶向下的方法描述搜索引擎执行过程:·用户通过浏览器提交查询的词或者短语P,搜索引擎根据用户的查询返回匹配的网页信息列表L;·上述过程涉及到两个问

3、题,如何匹配用户的查询以及网页信息列表从何而来,根据什么而排序?用户的查询P经过分词器被切割成小词组并被剔除停用词(的、了、啊等字),根据系统维护的一个倒排索引可以查询某个词pi在哪些网页中出现过,匹配那些都出现的网页集即可作为初始结果,更进一步,返回的初始网页集通过计算与查询词的相关度从而得到网页排名,即PageRank,按照网页的排名顺序即可得到最终的网页列表;·假设分词器和网页排名的计算公式都是既定的,那么倒排索引以及原始网页集从何而来?原始网页集在之前的数据流程的介绍中,可以得知是由爬虫spider爬取网页并且保存在本地的,而倒排索引,即词组到

4、网页的映射表是建立在正排索引的基础上的,后者是分析了网页的内容并对其内容进行分词后,得到的网页到词组的映射表,将正排索引倒置即可得到倒排索引;·网页的分析具体做什么呢?由于爬虫收集来的原始网页中包含很多信息,比如html表单以及一些垃圾信息比如广告,网页分析去除这些信息,并抽取其中的正文信息作为后续的基础数据。在上述的分析之后,我们可以得到搜索引擎的整体结构如下图:图2.搜索引擎整体结构爬虫从Internet中爬取众多的网页作为原始网页库存储于本地,然后网页分析器抽取网页中的主题内容交给分词器进行分词,得到的结果用索引器建立正排和倒排索引,这样就得到了索引数据库,用户查询时,在通过分词器切割

5、输入的查询词组并通过检索器在索引数据库中进行查询,得到的结果返回给用户。无论搜索引擎的规模大小,其主要结构都是由这几部分构成的,并没有大的差别,搜索引擎的好坏主要是决定于各部分的内部实现。Spider的设计网页收集的过程如同图的遍历,其中网页就作为图中的节点,而网页中的超链接则作为图中的边,通过某网页的超链接得到其他网页的地址,从而可以进一步的进行网页收集;图的遍历分为广度优先和深度优先两种方法,网页的收集过程也是如此。综上,Spider收集网页的过程如下:从初始URL集合获得目标网页地址,通过网络连接接收网页数据,将获得的网页数据添加到网页库中并且分析该网页中的其他URL链接,放入未访问U

6、RL集合用于网页收集。下图表示了这个过程:图3.Spider工作流程Spider的具体实现[网页收集器Gather]网页收集器通过一个URL来获取该URL对应的网页数据,其实现主要是利用Java中的URLConnection类来打开URL对应页面的网络连接,然后通过I/O流读取其中的数据,BufferedReader提供读取数据的缓冲区提高数据读取的效率以及其下定义的readLine()行读取函数。代码如下(省略了异常处理部分):清单1.网页数据抓取URLurl=newURL(“http://www.xxx.com”);URLConnectionconn=url.openConnection

7、();BufferedReaderreader=newBufferedReader(newInputStreamReader(conn.getInputStream()));Stringline=null;while((line=reader.readLine())!=null)document.append(line+"");使用Java语言的好处是不需要自己处理底层的连接操作,喜欢或者精通Java网络

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。