网学网为需要Java类作品的朋友们搜集整理了(java搜索引擎设计)基于Java的全文检索技术研究[原创]相关资料,希望对各位网友有所帮助!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
目 录
第1章 网络机器人 1.1 什么是网络机器人 网络机器人又称为Spider程序,是一种专业的Bot程序。用于查找大量的Web页面。它从一个简单的Web页面上开始执行,然后通过其超链接在访问其他页面,如此反复理论上可以扫描互联网上的所有页面。 基于因特网的搜索引擎是Spider的最早应用。例如搜索巨头Google公司,就利用网络机器人程序来遍历Web站点,以创建并维护这些大型数据库。 网络机器人还可以通过扫描Web站点的主页来得到这个站点的文件清单和层次机构。还可以扫描出中断的超链接和拼写错误等。 1.2 网络机器人的结构分析 Internet是建立在很多相关协议基础上的,而更复杂的协议又建立在系统层协议之上。Web就是建立在HTTP ( Hypertext Transfer Protocol ) 协议基础上,而HTTP又是建立在TCP/IP ( Transmission Control Protocol / Internet Protocol ) 协议之上,它同时也是一种Socket协议。所以网络机器人本质上是一种基于Socket的网络程序。 1.2.1 如何解析HTML 因为Web中的信息都是建立在HTML协议之上的,所以网络机器人在检索网页时的第一个问题就是如何解析HTML。在解决如何解析之前,先来介绍下HTML中的几种数据。 文本:除了脚本和标签之外的所有数据; 注释:程序员留下的说明文字,对用户是不可见的; 简单标签:由单个表示的HTML标签; 开始标签和结束标签:用来控制所包含的HTML代码。 我们在进行解析的时候不用关心所有的标签,只需要对其中几种重要的进行解析即可。 超连接标签:超连接定义了WWW通过Internet链接文档的功能。他们的主要目的是使用户能够任意迁移到新的页面,这正是网络机器人最关心的标签。 图像映射标签:图像映射是另一种非常重要的标签。它可以让用户通过点击图片来迁移到新的页面中。 表单标签:表单是Web页面中可以输入数据的单元。许多站点让用户填写数据然后通过点击按钮来提交内容,这就是表单的典型应用。 表格标签:表格是HTML的构成部分,通常用来格式化存放、显示数据。 我们在具体解析这些HTMl标签有两种方法:通过JavaTM中的Swing类来解析或者通过Bot包中的HTMLPage类来解析,本人在实际编程中采用后者。 Bot包中的HTMLPage类用来从指定URL中读取数据并检索出有用的信息。 1.2.2 该类几种重要的方法。 HTMLPage构造函数:构造对象并指定用于通讯的HTTP对象 Public HTMLPage(HTTP http) GetForms方法:获取最后一次调用Open方法检索到的表单清单。 Public Vector getForms() GetHTTP方法:获取发送给构造函数的HTTP对象。 Public HTTP getHTTP() GetImage方法:获取指定页面的图片清单。 Public Vector getImage() GetLinks方法:获取指定页面的连接清单。 Public Vector getLinks() Open方法:打开一个页面并读入该页面,若指定了回调对象则给出所有该对象数据。 Public void open(String url,HTMLEditorKit.ParserCallback a) 1.2.3 Spider程序结构 网络机器人必须从一个网页迁移到另一个网页,所以必须找到该页面上的超连接。程序首先解析网页的HTML代码,查找该页面内的超连接然后通过递归和非递归两种结构来实现Spider程序。 递归结构 递归是在一个方法中调用自己本身的程序设计技术。虽然比较容易实现但耗费内存且不能使用多线程技术,故不适合大型项目。 非递归结构 这种方法使用队列的数据结构,当Spider程序发现超连接后并不调用自己本身而是把超连接加入到等待队列中。当Spider程序扫描完当前页面后会根据制定的策略访问队列中的下一个超连接地址。 虽然这里只描述了一个队列,但在实际编程中用到了四个队列,他们每个队列都保存着同一处理状态的URL。 等待队列:在这个队列中,URL等待被Spider程序处理。新发现的URL也被加入到这个队列中。 处理队列:当Spider程序开始处理时,他们被送到这个队列中。 错误队列:如果在解析网页时出错,URL将被送到这里。该队列中的URL不能被移入其他队列中。 完成队列:如果解析网页没有出错,URL将被送到这里。该队列中的URL不能被移入其它队列中。 在同一时间URL只能在一个队列中,我们把它称为URL的状态。 以上表示了队列的变化过程,在这个过程中,当一个URL被加入到等待队列中时Spider程序就会开始运行。只要等待队列中有一个网页或Spider程序正在处理一个网页,程序就会继续他的工作。当等待队列为空并且当前没有任何网页时,Spider程序就会停止它的工作。
第1章 基于Lucene的搜索引擎实现 1.1 基于Tomcat的Web服务器 1.1.1 什么是基于Tomcat的Web服务器 Web服务器是在网络中为实现信息发布、资料查询、数据处理等诸多应用搭建基本平台的服务器。Web服务器如何工作:在Web页面处理中大致可分为三个步骤,第一步,Web浏览器向一个特定的服务器发出Web页面请求;第二步,Web服务器接收到Web页面请求后,寻找所请求的Web页面,并将所请求的Web页面传送给Web浏览器;第三步,Web服务器接收到所请求的Web页面,并将它显示出来。 Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。Tomcat由Apache-Jakarta子项目支持并由来自开放性源代码Java社区的志愿者进行维护。Tomcat Server是根据servlet和JSP规范进行执行的,因此我们就可以说Tomcat Server也实行了Apache-Jakarta规范且比绝大多数商业应用软件服务器要好。 1.2 用户接口设计 1.2.1 客户端设计 一个良好的查询界面非常重要,例如Google就以她简洁的查询界面而闻名。我在设计的时候也充分考虑了实用性和简洁性。 查询界面截图如下: 图5-1搜索界面 搜索结果截图如下: 图5-2搜索结果 1.2.2 服务端设计 主要利用JavaTM Servlet技术实现,用户通过GET方法从客户端向服务端提交查询条件,服务端通过Tomcat的Servlet容器接受并分析提交参数,再调用Lucene的开发包进行搜索操作。最后把搜索的结果以HTTP消息包的形式发送至客户端,从而完成一次搜索操作。 实现的关键代码如下: public void Search(String qc, PrintWriter out) throws Exception // 从索引目录创建索引 { IndexSearcher _searcher = new IndexSearcher("c:\\news\\index"); // 创建标准分析器 Analyzer analyzer = new ChineseAnalyzer(); // 查询条件 String line = qc; // Query是一个抽象类
第1章 搜索引擎策略 1.1 简介 随着信息多元化的增长,千篇一律的给所有用户同一个入口显然已经不能满足特定用户更深入的查询需求。同时,这样的通用搜索引擎在目前的硬件条件下,要及时更新以得到互联网上较全面的信息是不太可能的。针对这种情况,我们需要一个分类细致精确、数据全面深入、更新及时的面向主题的搜索引擎。 由于主题搜索运用了人工分类以及特征提取等智能化策略,因此它比上面提到的前三代的搜索引擎将更加有效和准确,我们将这类完善的主题搜索引擎称为第四代搜索引擎。 1.2 面向主题的搜索策略 1.2.1 导向词 导向词就是一组关键词,它们会引导搜索器按照一定顺序搜索整个网络,使得搜索引擎可以在最短的时间里面得到最全面的跟某一个主题相关的信息。通过设置导向词以及它们对应的不同权值,所有标题、作者、正文或超连接文本中含有某一导向词的网页都会被赋予较高的权值,在搜索的时候会优先考虑。搜索器在向主控程序获得URL的时候也是按照权值由高到低的顺序。反之,搜索器在向主控程序提交新的URL和它的权值的时候,主控程序会按照权值预先排序,以便下一次有序的发给搜索器。 1.2.2 网页评级 在考虑一个网页被另一个网页的引用时候,不是单纯的将被引用网页的Hit Number加一,而是将引用网页的连接数作为权,同时将该引用网页的重要性也考虑进来,就可以得到扩展后的网页评分。 最早提出网页评分的计算方法是Google。它们提出了一个“随机冲浪”模型来描述网络用户对网页的访问行为。模型假设如下: 1) 用户随机的选择一个网页作为上网的起始网页; 2) 看完这个网页后,从该网页内所含的超链内随机的选择一个页面继续进行浏览; 3) 沿着超链前进了一定数目的网页后,用户对这个主题感到厌倦,重新随机选择一个网页进行浏览,并重复2和3。 按照以上的用户行为模型,每个网页可能被访问到的次数就是该网页的链接权值。如何计算这个权值呢?PageRank采用以下公式进行计算: 其中Wj代表第j个网页的权值;lij只取0、1值,代表从网页i到网页j是否存在链接;ni代表网页i有多少个链向其它网页的链接;d代表“随机冲浪”中沿着链接访问网页的平均次数。选择合适的数值,递归的使用以上公式,即可得到理想的网页链接权值。该方法能够大幅度的提高简单检索返回结果的质量,同时能够有效的防止网页编写者对搜索引擎的欺骗。因此可以将其广泛的应用在检索器提供给用户的网页排序上,对于网页评分越高
参考文献 [1] Jeff Heaton(美), Programming Spiders, Bots, and Aggregator in Java. [2] Borland Software Corporation(美),JBuilder 培训教程(译者:周鹏 [等] 译)北京:机械工业出版社 [3]徐宝文,张卫丰. 搜索引擎与信息获取技术.北京:清华大学出版社,2003.5 [4]车东.基于Java的全文搜索引擎Lucene [5]罗旭.主题搜索引擎的设计与实现 [6]Bruce Eckel(美).Thinking in Java.北京:机械工业出版社 [7] Otis Gospodnetic Erik Hatcher (美).Action in Lucene.电子工业出版社,2007.1 [8]耿祥义,张跃平. JAVA2实用教程(第二版).北京:清华大学出版社,2004.2 [9]刘彬.JSP数据库高级教程.北京:清华大学出版社,2006.3 [10]刘卫国,严晖.数据库技术与应用——SQL Server.北京:清华大学出版社,2007.1 [11]闫宏飞.Tiny Search Engine: Design and implementation(PPT). Oct.2003 [12]李晓明,闫宏飞,王继民.搜索引擎——原理、技术与系统.北京:科学出版社,2004
|
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |