利用开源工具构建小型搜索引擎项目报告.

合集下载

ASP3062一个小型搜索引擎的设计与实现2

ASP3062一个小型搜索引擎的设计与实现2

一个小型搜索引擎的设计与实现摘要随着互联网和宽带上网的普及,搜索引擎在中国异军突起,并日益渗透到人们的日常生活中,在互联网普及之前,人们查阅资料首先想到的是拥有大量书籍的资料的图书馆。

但是今天很多人都会选择一种更方便、快捷、全面、准确的查阅方式--互联网。

而帮助我们在整个互联网上快速地查找到目标信息的就是越来越被重视的搜索引擎。

本文通过分析国内外搜索引擎的发展现状,提出了一种功能强大,操作简单,通用性强,可以满足用户对信息搜索需要,利用ASP技术实现的一个B/S体系结构的搜索引擎系统方案。

文中着重论述了该系统的功能与实现、数据流程与存储、后台管理等。

并对关键的有关技术作了较详细的介绍。

论文在撰写过程中,力求将理论与系统应用相结合,对各种理论进行阐述的同时配合系统从实际应用和操作技巧上加以说明,希望能够更充分地体现到这些知识与技术在本系统中的应用与实现。

关键词:搜索引擎;ASP;B/S;关键目录论文总页数:23页1 引言 ............................................................................................. 错误!未定义书签。

1.1课题背景.............................................................................................................. 错误!未定义书签。

1.2搜索引擎的发展动向 ...................................................................................... 错误!未定义书签。

2 系统所用技术分析 (2)2.1系统开发环境 .................................................................................................... 错误!未定义书签。

软件工程毕业设计论文--基于Lucene与Heritrix的搜索引擎构建

软件工程毕业设计论文--基于Lucene与Heritrix的搜索引擎构建

本科毕业设计(论文)基于Lucene与Heritrix的搜索引擎构建摘要在互联网蓬勃发展的今天,互联网上的信息更是浩如烟海。

人们在享受互联网带来的便利的同时,却面临着一个如何在如此海量的内容中准确、快捷地找到自己所需要的信息的问题,由此互联网搜索引擎应运而生。

本文在对搜索引擎的原理、组成、数据结构和工作流程等方面深入研究的基础上,对搜索引擎的三个核心部分即网络蜘蛛、网页索引和搜索的分析及实现过程进行阐述。

网络蜘蛛部分采用了基于递归和归档机制的Heritrix网络爬虫;网页索引部分利用开源的Lucene引擎架构设计并实现了一个可复用的、可扩展的索引建立与管理子系统;搜索部分在Ajax技术支持上,设计并实现了一个灵活、简洁的用户接口。

本系统具有抓取网页、建立和管理索引、建立日志以及搜索信息等功能,具备一定的应用前景。

关键词:搜索引擎;中文分词;索引The Construction of Search Engine Based on Lucene and HeritrixAbstractThe contents on the Web are increasing exponentially as the rapid development of the Internet. A problem how to obtain the useful information from vast contents quickly and accurately is facing us while people are enjoying the convenience of the Internet. The solver of this problem is Web Search Engine.The analysis and implementation process of three basic components of search engine(Crawler, Indexer and Searcher) is described in this paper on the basis of further study on the principles, composition, data structure and work flow of search engine. The crawler component is implemented with Heritrix crawler based on the mechanism of recursion and archiving; A reusable, extensible index establishment and management subsystem are designed and implemented by open-source package named “Lucene” in the indexer component; The Searcher component based on the Ajax technology is designed and realized as a flexible, concise user interface. The system has some functions, such as crawling web page, establishment and management index, establishment log and search information, it has a certain application prospect.Key Words:Search Engine;Chinese Word Segmentation;Index目录摘要 (I)Abstract (II)1 绪论 (1)1.1 项目背景 (1)1.2 国内外发展现状 (1)2 系统的开发平台及相关技术 (3)2.1 系统开发平台 (3)2.2 系统开发技术 (3)2.2.1 Heritrix网络爬虫简介 (3)2.2.2 Lucene技术简介 (4)2.2.3 Ajax技术简介 (4)3 系统分析与设计 (6)3.1 系统需求分析 (6)3.1.1 系统架构分析 (6)3.1.2 系统用例模型 (6)3.1.3 系统领域模型 (10)3.2 系统概要设计 (11)3.3 系统详细设计 (12)3.3.1 索引建立子系统 (13)3.3.2 用户接口子系统 (17)4 系统的实现 (18)4.1 系统包框架的构建 (18)4.1.1 索引建立子系统 (18)4.1.2 用户接口子系统 (19)4.2 系统主要功能实现 (19)4.2.1 索引建立子系统 (19)4.2.2 用户接口子系统 (22)结论 (24)参考文献 (25)致谢 (26)1 绪论1.1 项目背景1994年左右,万维网(world wide web)出现了。

搭建自己的搜索引擎

搭建自己的搜索引擎

今天我就在这里借光年论坛在这里献丑下,写篇几篇关于自己搭建搜索引擎的文章。

所采用的是开源搜索引擎nutch,考虑到大部份的SEOER所以主要是在WINDOWS平台进行搭建。

1,Nutch简介Nutch 是一个刚刚诞生开放源代码(open-source)的web搜索引擎.尽管Web搜索是漫游Internet的基本要求, 但是现有web搜索引擎的数目却在下降. 并且这很有可能进一步演变成为一个公司垄断了几乎所有的web搜索为其谋取商业利益.这显然不利于广大Internet用户.Nutch为我们提供了这样一个不同的选择. 相对于那些商用的搜索引擎, Nutch作为开放源代码搜索引擎将会更加透明, 从而更值得大家信赖. 现在所有主要的搜索引擎都采用私有的排序算法, 而不会解释为什么一个网页会排在一个特定的位置. 除此之外, 有的搜索引擎依照网站所付的费用, 而不是根据它们本身的价值进行排序. 与它们不同, Nucth没有什么需要隐瞒, 也没有动机去扭曲搜索的结果. Nutch将尽自己最大的努力为用户提供最好的搜索结果.Nutch 致力于让每个人能很容易, 同时花费很少就可以配置世界一流的Web搜索引擎. 为了完成这一宏伟的目标, Nutch 必须能够做到:每个月取几十亿网页为这些网页维护一个索引对索引文件进行每秒上千次的搜索提供高质量的搜索结果以最小的成本运作2,安装2.1安装准备所需软件:(如果以下网址不能下载,请自行搜索)JDK1.6下载地址:/zh_CN/Tomcat 7.0.x下载址://tomcat/tomcat-7/v7.0.4-beta/bin/apache-tomcat-7.0.4.exeCygwin下载地址:/setup.exeNutch 1.0下载地址:/apache//nutch/nutch-1.0.tar.gz2.2安装:2.2.1JDK安装(我这里用的是默认的安装)接下来可以按默认的安装2.2.2 添加JDK环境变量:右击我的电脑——>属性——>高级——>环境变量->系统变量Path添加C:\Program Files\Java\jdk1.6.0_22\bin;JAVA_HOME=C:\Program Files\Java\jdk1.6.0_22(JDK安装的目录)classpath=.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;添加好环境变量后、我们可以输入JAVAC来看是否安装成功如:看到下面图所示的内容那么就安装成功了搭建自己的搜索引擎(1)搭建自己的搜索引擎(2)搭建自己的搜索引擎(3)搭建自己的搜索引擎(4)这下面的图片是没用的,不知怎么出来的+++++++++++++++++++++++++++++++++++++ image007.png(17.85 KB, 下载次数: 0)image043.gif(2.48 KB, 下载次数: 0)image044.gif(13.55 KB, 下载次数: 0)image046.gif(12.94 KB, 下载次数: 0)image050.gif(5.77 KB, 下载次数: 0)image051.gif(22.55 KB, 下载次数: 0)2.2.3安装Tomcat 7.0(除了选择安装目录外,别的我都选择了默认的安装)2.2.4 安装Cygwin (因为NUTCH的自带命令必需要在LINUX的环境,所以必需要安装Cygwin来模拟这种环境)点击下一步进入安装方式的选择界面上图所示Cygwin有三种安装方式1,Install from Internet:直接从Internet上下载并立即安装(安装完成后,下载好的安装文件并不会被删除,而是仍然被保留,以便下次再安装)。

21款开源搜索引擎项目介绍

21款开源搜索引擎项目介绍

21款开源搜索引擎项目介绍搜索引擎的主流语言是Java,要研究和开发搜索引擎,最好从Lucene开始,下面介绍一些开源搜索引擎系统,包含开源Web搜索引擎和开源桌面搜索引擎。

Lucene一个全文搜索引擎工具包,但只支持文本文件以及少量语种的索引;通过Lucene提供的接口,我们可以自己开发具体语言的分词器,针对具体文档的文本解析器等;Lucene是索引数据结构事实上的标准;Apache Lucene是一个基于Java全文搜索引擎,利用它可以轻易地为Java软件加入全文搜寻功能。

Lucene的最主要工作是替文件的每一个字作索引,索引让搜寻的效率比传统的逐字比较大大提高,Lucen提供一组解读,过滤,分析文件,编排和使用索引的API,它的强大之处除了高效和简单外,是最重要的是使使用者可以随时应自已需要自订其功能。

Sphider Sphider是一个轻量级,采用PHP开发的web spider和搜索引擎,使用mysql来存储数据。

可以利用它来为自己的网站添加搜索功能。

Sphider非常小,易于安装和修改,已经有数千网站在使用它。

RiSearch PHPRiSearch PHP是一个高效,功能强大的搜索引擎,特别适用于中小型网站。

RiSearch PHP非常快,它能够在不到1秒钟内搜索5000-10000个页面。

RiSearch是一个索引搜索引擎,这就意味着它先将你的网站做索引并建立一个数据库来存储你网站所有页面的关键词以便快速搜索。

Risearch是全文搜索引擎脚本,它把所有的关键词都编成一个文档索引除了配置文件里面的定义排除的关键词。

RiSearch使用经典的反向索引算法(与大型的搜索引擎相同),这就是为什么它会比其它搜索引擎快的原因。

Xapian使用C++编写,提供绑定程序使得其他语言能够方便地使用它;便于进行二次开发PhpDigPhpDig是一个采用PHP开发的Web爬虫和搜索引擎。

通过对动态和静态页面进行索引建立一个词汇表。

浅析图书馆如何搭建小型搜索引擎

浅析图书馆如何搭建小型搜索引擎
s als ac n i e m l e r he g n Ke ywo d : iia ir r S ac ngn S a c r sD g t lb ay; e rh e ie;e rh l
引 言 随着 网络 的兴起 ,搜索 引擎逐渐 被广泛 使用 。 索引擎 技术是 搜 网络 与计算机 技术结 合的产物 ,它 的发展决 定于 网络 技术 的发展 。 对 于 图书馆来 说 ,用户 的文献 检索 需求 越来 越 强 ,专业 覆盖 面 广而 专业 性细 分 ,所 购专 业 性数 据库 越来 越 多 ,信 息量 也越 来 越 大 ,为 了给 读 者提供 快速 、方便 的检 索 ,使读 者 能够 自网上 即 时获 取所 需要 的文 献资 料 ,更好 的整 合 相关 的课题 、科研 研究 信 息等 , 图书馆 可 以考虑 建设 覆盖 某些 行业 领 域或 者某 些专 业 的小 型搜 索 引擎 。 本文 尝试 着从 基本 技术 的 角度来 阐述 如何 搭 建搜 索 引擎 ,大 致可 以从 :信 息搜 集 、构建 索 引、检 索三 个 部分 来 了解 现 有开 发

爬 虫所抓 取 的页 面都 存放 在 网页库 中 ,为 了减 少所 需 的存 储 空 间 ,经 常 需要 对页 面进 行压 缩存 储 。页 面通 常都存 放 在数 据库 中,但是 对 于小 型 的搜索 系统 来 说可 以简 单地 把页 面存 成文 件 的 形式 。索 引处 理下 载 的 网页并 为搜 索提 供服 务 。索 引把每 一个 文 档记 录成 词组 和词 组在 文档 中出现 的位 置 , 同时通过 词 组出现 频 率等 计算 文档 得分 , 以便用 于 查询 结果 的排 序或 者更 进 一步 的处
Li r r w oBu l ma l e r h En i e b a y Ho t i a S d l S a c gn

基于开源框架的搜索引擎的研究与实现

基于开源框架的搜索引擎的研究与实现

华中科技大学基于开源框架的搜索引擎的研究与实现开题报告谭望达4/14/2010本文讲述了如何在开源程序的基础上搭建自己的一个简单的搜索引擎,使用Lucene,Hadoop和一些机器学习库作为搜索引擎的基础,并且还对Lucene与Hadoop的实现原理进行了比较细致的讲述,希望能够对研究和开发搜索引擎的人起到一定的帮助。

一.选题意义1.理论意义从理论的意义上来说,也有很多的地方用到了搜索引擎技术,比如说从语音识别,文本分类,模式识别,都使用到了机器学习,而机器学习的核心就是语料库(corpus),而语料库都是庞大的,一般来说动辄以T级来计算,所以如何从T(千G)级的,也就是以十亿文档级别的数据中提取出想要的数据,是一项挑战,在搜索引擎技术诞生之前是不敢想的。

可以说,搜索引擎技术与机器学习的识别的结合是未来科研的一个很重要的方向。

2.现实意义从实际出发,搜索引擎生活中作为越来越广泛的使用到的一项基本工具,从生活琐事到专业领域,日常问题可以去百度百科,科研论文可以去Google学术,消费购物可以去阿里巴巴,交友联络可以去校内网,而这些公司与检索相关的内容,都可以说或多或少的应用了很多搜索引擎的技术。

现在还有越来越多的垂直搜索引擎建立起来,也就是利用其他搜索引擎的结果进行二次排序处理,在一个个的更细分的领域中起到了很大的作用。

可以说搜索引擎作为一项互联网的基本技术被广泛的使用。

随着一个一个搜索引擎相关的公司的成功,比如Google这样一个神话般的公司,越来越多的人也关注到了这个领域。

不过想从头自己编写一个搜索引擎可不是容易的事情,而随着越来越多相关的文献的发表和开源社区的建立,创建这样的一个搜索引擎就不再是难事,而实用这些开源的搜索引擎框架,不需要过多的深入技术细节,而更多的精力可以放在想法的实现上。

开源框架的实用一般说来是免费的或者相对商业软件来说是很便宜的,用户可以在资金不太宽裕的时候放心的使用。

另外本文将讨论一下机器学习的一些内容,搜索引擎只是一个“搜索”的实现,而如何更好的把结果展示给用户,如何在数据之上实现更多的特性,就是需要机器学习来进行的,搜索引擎与机器学习是越来越不可分。

用开源软件建垂直搜索引擎

用开源软件建垂直搜索引擎

用开源软件建垂直搜索引擎作者:暂无来源:《计算机世界》 2010年第11期用Solr、Nutch等开源软件来构建电子元器件垂直搜索引擎涉及很多实现细节,本文结合实际应用系统对数据采集、中文搜索、结果输出、分页处理、整合数据库等重点问题提出了切实可行的解决方法。

■ 董娅周峻松针对搜索引擎的各种开源技术是开源社区的一枝奇葩,它大大缩短了构建搜索应用的周期,并使得根据特定需求打造个性化应用的垂直搜索引擎系统成为可能。

作为一个独立的企业搜索应用解决方案,Solr在美国的众多知名网站中得到应用,如美国最大的科技资讯类网站CNet。

Solr基于高性能的Lucene开发,它不仅实现了比Lucene更为丰富的查询语言和更为优异的查询性能,而且实现了可配置、可扩展,对外提供类似于Web 服务的API接口。

用户可通过Http 请求向搜索引擎服务器提交指定格式的XML文件生成索引,也可以通过“Http Get”操作提出查询请求,并得到XML格式的返回结果。

Solr结合其他开源搜索软件成为构建行业垂直搜索引擎的优选方案。

垂直搜索引擎的总体结构本文所述的电子元器件垂直搜索引擎以Solr 1.4为核心框架,综合应用Nutch、IK Analyzer等开源软件,充分利用它们灵活的配置、丰富的功能以及高效的性能,力求用最简单的代码,快速实现海量电子元器件信息的采集、文本搜索、参数检索,满足技术研究人员与市场采购人员对于行业领域知识的专、精、深要求。

电子元器件垂直搜索引擎系统包括数据采集、数据加工、数据规划和管理、搜索服务四个主要部分。

数据采集部分负责对Internet、Intranet、内部电子文档、结构化数据(关系数据库、XML)等进行抓取、滤重、分类、摘要; 数据加工部分负责对采集来的数据进行筛选、编辑和审校; 数据规划和管理部分负责系统元数据的定义与管理,包括分类体系、特性参数、参数类型、计量单位等; 搜索服务则为用户提供分类导航、数据检索、行业报告及其他个性定制服务(系统的总体结构如附图所示)。

数据检索平台搭建方案范文

数据检索平台搭建方案范文

数据检索平台搭建方案范文# 数据检索平台搭建方案。

一、项目概述。

咱为啥要搭建这个数据检索平台呢?很简单,就是为了能快速、准确地找到咱们想要的数据,就像在大海里捞针,但是咱得让这个捞针的过程变得超级简单、高效。

二、需求分析。

# (一)数据来源。

1. 内部数据库。

咱们公司内部那些个业务数据啊,像是销售数据、员工信息啥的,这都是宝藏,都得放到平台里能被检索到。

2. 外部数据。

有时候咱也得看看外面的世界,从网上抓点行业数据、市场调研报告之类的,这些数据也得整合进来。

# (二)用户需求。

1. 简单查询。

普通用户就想简单输入个关键词,然后就能找到相关的数据,别整那些复杂的操作,越简单越好。

2. 高级查询。

技术大神或者数据分析员呢,他们就想要更多的筛选条件,像按照日期范围、数据类型啥的来精确查找数据。

3. 数据安全。

不管是谁,都希望自己的数据安全得很,不能被乱看乱改,这是底线。

三、平台架构设计。

# (一)数据采集层。

1. 内部数据采集。

就像是小蜜蜂采蜜一样,我们得写一些程序,把内部数据库里的数据定期采集出来,然后整理成统一的格式。

比如说,销售数据可能来自不同的销售渠道,格式不太一样,我们得把它们都变成一样的,这样才能方便后面的检索。

2. 外部数据采集。

对于外部数据,我们可以用网络爬虫(当然得合法合规哈)去抓我们想要的数据,或者从一些数据供应商那里买数据,然后把这些数据也整合到我们的数据仓库里。

# (二)数据存储层。

1. 数据仓库。

这就是我们数据的大仓库啦,把采集来的所有数据都放在这里。

就像把东西都放在一个大仓库里,要分类放好,这样找起来才方便。

我们可以用关系型数据库(比如MySQL)来存储结构化数据,用非关系型数据库(比如MongoDB)来存储那些半结构化或者非结构化的数据。

2. 数据索引。

为了让查询速度像火箭一样快,我们得给数据建立索引。

这就好比给书做个目录,你想找哪部分内容,直接看目录就能快速定位到。

我们可以根据数据的特点,建立不同类型的索引,比如按照关键词、日期等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

深圳大学考试答题纸(以论文、报告等形式考核专用)二○~二○学年度第学期课程编号1501320002 课程名称搜索引擎技术主讲教师王旭评分学号姓名专业年级题目:利用开源工具构建小型搜索引擎一、项目操作环境及基本操作工具:操作系统:Win10。

基本操作环境:基于Heritrix+ Lucene;java。

基本操作工具:JDK 1.8,MyEclipse Professional 2014,Tomcat 8.0.27,Heritrix 1.14.4,Lucene 2.1.0,— JE-analysis-1.5.3, Htmlparser 1.5。

基本操作工具基本功能介绍:JDK 1.8:JDK(Java SE Development Kit)包括Java开发包和Java开发工具,是一个写Java 的applet和应用程序的程序开发环境。

它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。

MyEclipse Professional 2014: Eclipse是一种可扩展的开放源代码IDE。

2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。

集成开发环境(IDE)经常将其应用范围限定在“开发、构建和调试”的周期之中。

为了帮助集成开发环境(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。

MyEclipse,是在eclipse 基础上加上自己的插件开发而成的功能强大的企业级集成开发环境。

Tomcat 8.0.27:—Tomcat服务器是一个免费的开放源代码的Web 应用服务器,它是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。

—Tomcat 8支持最新的Servlet 3.1 和JSP 2.3 规范。

因为Tomcat技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

Heritrix 1.14.4:Heritrix是一个开源、可扩展的Web爬虫项目。

Heritrix设计成严格按照robots.txt 文件的排除指示和META robots标签。

Lucene 2.1.0:—Lucene是Apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。

JE-analysis-1.5.3:是一个免费的Lucene中文分词组件。

Htmlparser 1.5:是一个纯的java写的html解析的库,Htmlparser不依赖于其它的java库,Htmlparser主要用于改造或提取html。

二、该搜索引擎系统的基本构架:先通过爬虫爬取原始网页并进行网页搜集;然后进行网页预处理;接着建立索引indexs;最后进行查询服务。

三、具体搭建和配置过程及问题分析:(1)基本工具的安装:a、JDK1.8的安装:并配置环境变量:JA V A_HOME:C:\Program Files\Java\jdk1.8.0_66JRE_HOME:C:\Program Files\Java\jre1.8.0_66CLASSPATH:%JA V A_HOME%\jre\lib\rt.jar;.;PA TH:%JA V A_HOME%\jre\lib\rt.jar;.;b、MyEclipse的安装:运行.exe文件c、Tomcat的安装:解压安装;设置环境变量:CATALINE_HOME:D:\big work\an zhuang\apache-tomcat-8.0.30;设置好之后,测试一下Tomcat。

打开Bin文件夹,运行startup.bat;打开浏览器,输入http://localhost:8080(或者http://127.0.0.1:8080),如果看到下图所示的界面,表明Tomcat运行正常:d、其他工具解压即可。

(2)Heritrix工程的建立:a、解压Heritrix-1.14.4和Heritrix-1.14.4-src文件,b、新建项目工程Heritrix:c、配置该工程:1、将Heritrix-1.14.4和Heritrix-1.14.4-src文件从上述网站中下载。

2、将文件中的lib放入工程中,右键工程->build path->configure build path->add external jars,将lib中所有jar包添加到library中。

3、将文件中src\java\的org和st两个文件夹放到工程文件的src目录下。

4、将src\conf\下的所有文件及其文件夹拖至工程文件下,修改heritrix.properties中的heritrix.version=1.14.4; heritrix.cmdline.admin=admin:admin,这是分别是版本号和登录所需要的用户(左)和密码(右)。

5、将src下除了conf和java以外的所有文件夹,拖至工程文件目录下。

6、运行run,成功时会显示版本:7、创建好的Heritrix目录结构如下:d、网页搜集:1、扩展Heritrix:新建一个类,叫FrontierSchedulerForScu,派生于org.archive.crawler.postprocessor.FrontierScheduler,它的代码如下:屏蔽zip、rar、exe文件,只抓取网页,并且抓取的网页中必须包含scu(即四川大学)打开文件conf\modules\Processor.options— 添加新建的module选项:— org.archive.crawler.postprocessor.FrontierSchedulerForSzu|FrontierSchedulerForScu:取消robots.txt的限制:找到org.archive.crawler.prefetch中的PreconditionEnforcer类: 找到considerRobotsPreconditions函数,将该函数内的全部代码注释掉或者直接删除添上return false:f、网页抓取:1、登录Heritrix:运行Tomcat后登录http://localhost:8080(或者http://127.0.0.1:8080)2、Heritrix的控制台如下:3、设置seed:设置为四川大学的URLSelect Crawl Scope选择org.archive.crawler.scope.BroadScope:抓取网页后会生成镜像文件便于查看:Select Post Processors第三项修改为org.archive.crawler.postprocessor.FrontierSchedulerForScu其他设置如图:5、参数设置:—点击Settings ,这里只需要修改user-agent 和from :@VERSION@表示版本,后面的URL 输入/。

Email 也同样是输入一个有效的email 。

—设置好之后,点击Submit Job ,返回Console 界面,刷新一下(start 和refresh ),就开始运 行:如图可得到一下的进度条:6、最终抓取的到的结果在工作区间的Heritrix下的jobs文件夹中:共抓取约13万个文件。

(3)进行网页预处理:a、添加htmlparser解析网页:将下载的htmlparser相关的压缩包解压,找到htmlparser.jar文件,将至导入library中。

b、添加解析网页文件:Page.java:代码如下:c、对Config.properties进行配置:mirror.path是得到的网页文件的地址:D:\bigwork\Heritrix_Lucene-20151208\Heritrix-1.14.4\jobs\ sichuan-university-20151223130135337files.path是将网页文件解析后存放的文件地址;Index.path是网页解析文件建立得到的索引的存放地址。

d、添加文件Extractor.java代码如下:package .szu.search.extractor;import org.htmlparser.*;import org.htmlparser.util.*;import org.htmlparser.visitors.*;import org.htmlparser.nodes.*;import org.htmlparser.tags.*;import .szu.search.page.*;import .szu.search.util.*;public class Extractor implements Runnable{private String filename;private Parser parser;private Page page;private String encode;public void setEncode(String encode) {this.encode = encode;}private String combineNodeText(Node[] nodes) {StringBuffer buffer = new StringBuffer();for (int i = 0; i < nodes.length; i++) {Node anode = (Node)nodes[i];String line = null;if (anode instanceof TextNode) {TextNode textnode = (TextNode)anode;line = textnode.getText();}else if (anode instanceof LinkTag) {LinkTag linknode = (LinkTag)anode;line = linknode.getLinkText();}else if (anode instanceof Div) {if (anode.getChildren() != null) {line = combineNodeText(anode.getChildren().toNodeArray());}}else if (anode instanceof ParagraphTag) {if (anode.getChildren() != null) {line = combineNodeText(anode.getChildren().toNodeArray());}}else if (anode instanceof Span) {if (anode.getChildren() != null) {line = combineNodeText(anode.getChildren().toNodeArray());}}else if (anode instanceof TableTag) {if (anode.getChildren() != null) {line = combineNodeText(anode.getChildren().toNodeArray());}}else if (anode instanceof TableRow) {if (anode.getChildren() != null) {line = combineNodeText(anode.getChildren().toNodeArray());}}else if (anode instanceof TableColumn) {if (anode.getChildren() != null) {line = combineNodeText(anode.getChildren().toNodeArray());}}if (line != null) {buffer.append(line);}}return buffer.toString();}private String getUrl (String filename) {String url = filename;url = url.replace(ProperConfig.getValue("mirror.path")+"/mirror", "");if (stIndexOf("/") == url.length()-1) {url = url.substring(0,url.length()-1);}url = url.substring(1);return url;}private int getScore(String url, int score) {String[] subStr = url.split("/");score = score - (subStr.length-1);return score;}private String getSummary(String context) {if (context == null) {context = "";}return MD5.MD5Encode(context);}public void extract(String filename) {System.out.println("Message: Now extracting " + filename);this.filename = filename.replace("\\", "/");run();if (this.page != null) {PageLib.store(this.page);}}@Overridepublic void run() {// TODO Auto-generated method stubtry {parser = new Parser(this.filename);parser.setEncoding(encode);HtmlPage visitor = new HtmlPage(parser);parser.visitAllNodesWith(visitor);page = new Page();// get page's URLSystem.out.println(this.filename);System.out.println(getUrl(this.filename));this.page.setUrl(getUrl(this.filename));System.out.println(this.page.getUrl());// get page's titleString textInPage = visitor.getTitle();System.out.println(textInPage);this.page.setTitle(textInPage);// testing <body> is null or not, if null, un-extractingif (visitor.getBody() == null) {this.page.setContext(null);}else {// if have value, extractingthis.page.setContext(combineNodeText(visitor.getBody().toNodeArray()));}// count page's scorethis.page.setScore(getScore(this.page.getUrl(), this.page.getScore()));// count page's summarythis.page.setSummary(getSummary(this.page.getContext()));}catch (ParserException pe) {this.page = null;pe.printStackTrace();System.out.println("Continue...");}}}e、PageLib.java文件:f、ProperConfig.java文件,代码如下:g、MD5.java文件,代码如下:h、TestExtractor.java测试类文件:(4)建立索引:1、 将lucene的jar包和je分词的jar包导入到Project当中,导入方法同前边章节所示的htmlparser的导入方法,导入成功后,再新建一个包,命名为.scu.search.index。

相关文档
最新文档