(人工智能)基于Lucene与Heritrix的搜索引擎构建(2)
来源:56doc.com 资料编号:5D4015 资料等级:★★★★★ %E8%B5%84%E6%96%99%E7%BC%96%E5%8F%B7%EF%BC%9A5D4015
资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用. 密 保 惠 帮助
资料介绍
但是由于网络信息的复杂性和网络检索技术的限制,这类检索工具也有着明显的不足:
(1) 随着网页数量的迅猛增加,人工无法对其进行有效的分类、索引和利用。网络用户面对的是数量巨大的未组织信息,简单的关键词搜索,返回的信息数量之大,让用户无法承受。
(2) 信息有用性评价困难。一些站点在网页中大量重复某些关键字,使得容易被某些著名的搜索引擎选中,以期借此提高站点的地位,但事实上却可能没有提供任何对用户有价值的信息。
(3) 网络信息日新月异的变更,人们总是期望挑出最新的信息。然而网络信息时刻变动,实时搜索几乎不可能,就是刚刚浏览过的网页,也随时都有更新、过期、删除的可能。
网络信息检索工具的发展主要体现在进一步改进、完善检索工具和检索技术,以提高检索服务质量,改变网络信息检索不尽如意的地方。
2 系统的开发平台及相关技术
该系统开发需要J2EE和J2SE相关技术,开发平台要求合理、方便、快捷,开发环境的选取至关重要,当选取一种相对合理的开发平台时,会提高系统开发效率,并遵循以最低的消耗完成最有价值的工程这一原则。
2.1 系统开发平台
本系统的开发平台如下表2.1所示:
表2.1 系统开发平台配置
名称 平台
系统开发操作系统: Windows XP中文版
系统开发数据库系统: SQL Server2000 个人版sp3
系统开发前台页面设计: Macromedia Dreamweaver8.0
J2EE服务端引擎: Tomcat6.0
范围系统集成开发工具: MyEclipse5.5.1GA
Java运行环境: JDK1.6.0_03
2.2 系统开发技术
2.2.1 Heritrix网络爬虫简介
Heritrix是一个由Java开发的、开源的Web网络爬虫,用户可以使用它从网络上抓取想要的资源。Heritrix最出色之处在于它的可扩展性,开发者可以扩展它的各个组件,来实现自己的抓取逻辑。Heritrix设计成严格按照robots.txt文件的排除指示和META robots标签。
Heritrix是IA的开放源代码,可扩展的,基于整个Web的,归档网络爬虫工程。
Heritrix工程始于2003年初,IA的目的是开发一个特殊的爬虫,对网上的资源进行归档,建立网络数字图书馆,在过去的6年里,IA已经建立了400TB的数据。
(1) Heritrix 1.0.0包含以下关键特性:
① 用单个爬虫在多个独立的站点一直不断的进行递归的爬。
② 从一个提供的种子进行爬,收集站点内的精确URI和精确主机。
③ 主要是用广度优先算法进行处理。
④ 主要部件都是高效的可扩展的。
⑤ 良好的配置。
(2) Heritrix的局限:
① 单实例的爬虫,之间不能进行合作。
② 在有限的机器资源的情况下,却要复杂的操作。
③ 只有官方支持,仅仅在Linux上进行了测试。
④ 每个爬虫是单独进行工作的,没有对更新进行修订。
⑤ 在硬件和系统失败时,恢复能力很差。
⑥ 很少的时间用来优化性能。
2.2.2 Lucene技术简介
Lucene是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
面对已经存在的商业全文检索引擎,Lucene也具有相当的优势。首先,它的开发源代码发行方式,在此基础上程序员不仅仅可以充分的利用Lucene所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面相对象编程的实践,进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。在这一点上,商业软件的灵活性远远不及Lucene。其次,Lucene秉承了开放源代码一贯的架构优良的优势,设计了一个合理而极具扩充能力的面向对象架构,程序员可以在Lucene的基础上扩充各种功能,比如扩充中文处理能力,从文本扩充到HTML、PDF等等文本格式的处理,编写这些扩展的功能不仅仅不复杂,而且由于Lucene恰当合理的对系统设备做了程序上的抽象,扩展的功能也能轻易的达到跨平台的能力。最后,转移到apache软件基金会后,借助于apache软件基金会的网络平台,程序员可以方便的和开发者、其它程序员交流,促成资源的共享,甚至直接获得已经编写完备的扩充功能。最后,虽然Lucene使用Java语言写成,但是开放源代码社区的程序员正在不懈的将之使用各种传统语言实现,在遵守Lucene索引文件格式的基础上,使得Lucene能够运行在各种各样的平台上,系统管理员可以根据当前的平台适合的语言来合理的选择。
2.2.3 Ajax技术简介
(1) Ajax(Asynchronous JavaScript + XML)的定义
① 基于web标准(standards-based presentation)XHTML+CSS的表示;
② 使用 DOM(Document Object Model)进行动态显示及交互;
③ 使用 XML 和 XSLT 进行数据交换及相关操作;
④ 使用 XMLHttpRequest 进行异步数据查询、检索;
⑤ 使用 JavaScript 将所有的东西绑定在一起。
(2) Ajax核心
Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
(3) 使用Ajax可以完成的功能
在创建Web站点时,在客户端执行屏幕更新为用户提供了很大的灵活性。下面是使用Ajax可以完成的功能:
① 动态更新购物车的物品总数,无需用户单击Update并等待服务器重新发送整个页面。
② 提升站点的性能,这是通过减少从服务器下载的数据量而实现的。例如,在某购物车页面,当更新篮子中的一项物品的数量时,会重新载入整个页面,这必须下载整个页面的数据。如果使用Ajax计算新的总量,服务器只会返回新的总量值,因此所需的带宽仅为原来的百分之一。消除了每次用户输入时的页面刷新。例如,在Ajax中,如果用户在分页列表上单击Next,则服务器数据只刷新列表而不是整个页面。
③ 直接编辑表格数据,而不是要求用户导航到新的页面来编辑数据。对于Ajax,当用户单击Edit时,可以将静态表格刷新为内容可编辑的表格。用户单击Done之后,就可以发出一个Ajax请求来更新服务器,并刷新表格,使其包含静态、只读的数据。 |