文档介绍:基于lucene的搜索引擎
2007/07/01
引言
本文用lucene和Heritrix构建了一个Web 搜索应用程序
Lucene 是基于 Java 的全文信息检索包,它目前是 Apache Jakarta 家族下面的一个开源项目。
Lucene很强大,但是,无论多么强大的搜索引擎工具,在其后台,都需要一样东西来支援它,那就是网络爬虫Spider。网络爬虫,又被称为蜘蛛Spider,或是网络机器人、BOT等,这些都无关紧要,最重要的是要认识到,由于爬虫的存在,才使得搜索引擎有了丰富的资源。
Heritrix是一个纯由Java开发的、开源的Web网络爬虫,用户可以使用它从网络上抓取想要的资源。它来自于itrix最出色之处在于它的可扩展性,开发者可以扩展它的各个组件,来实现自己的抓取逻辑。
系统架构
在前端流程中,用户在搜索引擎提供的界面中输入要搜索的关键词,这里提到的用户界面一般是一个带有输入框的 Web 页面,然后应用程序将搜索的关键词解析成搜索引擎可以理解的形式,并在索引文件上进行搜索操作。在排序后,搜索引擎返回搜索结果给用户。在后端流程中,网络爬虫从因特网上获取 Web 页面,然后索引子系统解析这些 Web 页面并存入索引文件中。
开发环境
我们开发一个 Web 应用程序利用 Lucene 来检索存放在文件服务器上的 HTML 文档。在开始之前,需要准备如下环境:
Heritrix
Eclipse 集成开发环境(Eclipse +WTP )
Tomcat
Lucene Library (lucene +luceneHtmlPaser)
JDK
这个工程使用 Eclipse 进行 Web 应用程序的开发,最终这个 Web 应用程序跑在 Tomcat 上面。在准备好开发所必需的环境之后,我们接下来进行 Web 应用程序的开发。
在Eclipse里配置Heritrix的开发环境
Heritrix在Eclipse中的工程配置好后的截图,以及workspace中文件夹的预览
图 2. Eclipse工程视图下的包结构
图 3 .文件夹中的工程
.,看到了Heritrix成功运行后的WebUI,创建一个新的抓取作务。
1)单击WebUI菜单栏上的“Jobs”标签,就可以进入任务创建页面。
2) 设置抓取时的处理链
需要配置的内容共有7项,其中CrawlScope和Frontier是两个最重要的组件。CrawlScope用于配置当前应该在什么范围内抓取网页链接。比如,如果选择BroadScope,则表示当前抓取的范围不受限制,但如果选择了HostScope,则表示抓取的范围在当前的Host内。
创建一个新的抓取任务
3) 设置运行时的参数
在设置完处理链后,单击“Settings”链接,就进入了属性设置的页面
-toe-threads
该参数的含义很容易了解,它表示Heritrix在运行该抓取任务时,为任务分配多少个线程进行同步抓取。该参数的默认值为100,而事实上根据笔者的经验,在机器配置和网络均很好的情况下,设置50个线程数就已经足够使用了。
-Header
在HTTP-Header这个属性域下面,包括两个属性值“user-agent”和“from”。这两个属性的值如图所示。
图 5
运行抓取任务
当单击“Submit job”链接后,会看到下图所示的页面。图中最上方很清楚的显示了“Job created”,这表示刚才所设置的抓取任务已经被成功的建立。同时,在下面的“Pending Jobs”一栏,可以清楚的看到刚刚被创建的Job,它的状态目前为“Pending”。
回到“Console”界面上,单击面版中的“Start”链接,就会将此时处于“Pending”状态的抓取任务激活,令其开始抓取。
刚才还处于“Start”状态的链接已经变为了Hold状态。这表明,抓取任务已经被激活。
Heritrix的镜象存储结构
打开Eclipse的workspace目录,进入heritrixProject的工程,里面有一个jobs目录。进入后,找到以刚才job的名称打头的文件夹,这里面的内容,就是Heritrix在运行时实时生成的。其中,有一个mirror目录,进入后,如下图所示: