基于Javaweb的搜索引擎的实现报告模板Word格式文档下载.docx

上传人:b****4 文档编号:17603723 上传时间:2022-12-07 格式:DOCX 页数:29 大小:2.56MB
下载 相关 举报
基于Javaweb的搜索引擎的实现报告模板Word格式文档下载.docx_第1页
第1页 / 共29页
基于Javaweb的搜索引擎的实现报告模板Word格式文档下载.docx_第2页
第2页 / 共29页
基于Javaweb的搜索引擎的实现报告模板Word格式文档下载.docx_第3页
第3页 / 共29页
基于Javaweb的搜索引擎的实现报告模板Word格式文档下载.docx_第4页
第4页 / 共29页
基于Javaweb的搜索引擎的实现报告模板Word格式文档下载.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

基于Javaweb的搜索引擎的实现报告模板Word格式文档下载.docx

《基于Javaweb的搜索引擎的实现报告模板Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于Javaweb的搜索引擎的实现报告模板Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。

基于Javaweb的搜索引擎的实现报告模板Word格式文档下载.docx

11月16日至11月20日,撰写本报告,撰写演示文稿。

2.需求分析

项目的功能需求分析

本项目实现功能:

1.对学院官网新闻板块进行分析,成立索引。

2.在主页面输入要搜索的关键字,点击“搜索一下”按钮,稍等,会自动跳转到搜索结果页面。

3.在结果页面,点击tjrac搜索,能回到主页面,在后面的文本框中再次输入搜索关键字,点击“搜索一下”按钮,能从头进行搜索。

4.搜索结果显示页面中,能显示搜索结果的条数,并带有分页功能,每页显示6条结果,点击“下一页”,“上一页”进行跳转,也能够输入页面序号进行直接跳转。

5.结果页面显示搜索的结果的题目,题目同时又是超链接,点击能够在新的页面中打开对应的网页,还会显示结果的中文摘要,对应网址等。

6.系统简单流程图:

查询数据表的内容

根据数据表中的内容生成索引文件

校验创建文件是否成功

进行搜索

显示失败

(图2-1)

8.系统数据流图:

输入搜索关键字

根据已摄取的网页建立索引

根据索引进行搜索

对搜索结果在数据库中进行查找

如果存在结果?

显示在结果页面中显示结果

显示无搜索结果

Y

N

(图2-2)

编号

标题

摘要

网址

网页

(图2-3)

3.数据库设计

3.1

数据库表格设计与实现。

3.2

表3-1page

字段名称

含义

类型

是否为空

约束

自动增长

id

varchar(25)

NO

主键

name

varchar(80)

content

varchar(120)

address

varchar(100)

3.3

数据库编写脚本:

CREATETABLE`page`(

`id`varchar(25)NOTNULLCOMMENT'

页面编号'

`name`varchar(80)NOTNULLCOMMENT'

页面名称'

`content`varchar(120)NOTNULLCOMMENT'

页面简介'

`address`varchar(100)NOTNULLCOMMENT'

页面地址'

PRIMARYKEY(`id`)

)ENGINE=MyISAMDEFAULTCHARSET=gbk;

INSERTINTO`page`VALUES('

t20200525_33928'

'

增进交流共谋进步——记天津大学与仁爱学院工业设计专业交流会'

10月14日,天津大学仁爱学院机械系组织06级工业设计专业新生到天津大学进行参观学习,这次活动深受广大新生的好评。

日前'

tjrac.edu/collegenews/collegenews/202005/t20200525_33928.htm'

);

t20200525_33927'

嵇纬武教授与学院同窗座谈'

10月16日下午,嵇纬武教授与学院英语专业同窗及其他专业同窗别离座谈,听取同窗们对近来英语教学的情形反映,沟通教学信息'

tjrac.edu/collegenews/collegenews/202005/t20200525_33927.htm'

t20200525_33926'

邱忠文教授与治理系部份同窗座谈'

10月18日中午,邱忠文教授与治理系部份同窗座谈,了解同窗们数学学习情形和学习生活信息。

 邱教授安排每周三中午与同窗们座谈'

tjrac.edu/collegenews/collegenews/202005/t20200525_33926.htm'

t20200525_33925'

天津大学仁爱学院2006级首届新生开学典礼隆重举行(图)'

冷风习习,吹走了炎炎夏日,迎来了清凉宁谧、硕果累累的金秋。

在这秋高气爽季节,在彩球飞扬、人群涌动的喜庆气氛中,天津大学仁爱学院于9月20日上午10:

00在喷泉广场隆重举行2006级新生开学典礼'

tjrac.edu/collegenews/collegenews/202005/t20200525_33925.htm'

t20200525_33923'

天津大学仁爱学院天津市现场咨询会'

[图]'

tjrac.edu/collegenews/collegenews/202005/t20200525_33923.htm'

t20200525_33924'

各省市考生及家长注意我院专业信息'

各省市考生及家长请注意,您所取得的关于我院以下专业信息的说明如下:

智能工程是专业方向 事实上是我院机械系  机械设计制造及其自动化专业科技英语是我院英语专业的专业方向'

(以下略)

4.概要设计

4.1

要紧介绍项目利用的编程技术及手腕

4.2

1.Lucene:

Lucene是apache软件基金会jakarta项目组的一个子项目,是一个的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部份引擎(英文与德文两种西方语言)。

Lucene的目的是为人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或是以此为基础成立起完整的全文检索引擎。

(图4-1)

作为一个全文检索引擎,其具有如下突出的优势:

  

(1)索引文件格式独立于应用平台。

Lucene概念了一套以8位字节为基础的索引文件格式,使得兼容系统或不同平台的应用能够共享成立的索引文件。

(2)在传统全文检索引擎的的基础上,实现了分块索引,能够针对新的文件成立小文件索引,提升索引速度。

然后通过与原有索引的归并,达到优化的目的。

(3)优秀的的系统架构,使得关于Lucene扩展的学习难度降低,方便扩充新功能。

(4)设计了独立于语言和文件格式的接口,通过同意Token流完成的创建,用户扩展新的语言和文件格式,只需要实现文本分析的接口。

(5)已经默许实现了一套壮大的查询引擎,用户无需自己编写代码即便系统可取得壮大的查询能力,Lucene的查询实现中默许实现了布尔操作、模糊查询(FuzzySearch[11])、分组查询等等。

2.Heritrix:

Heritrix是一个爬虫框架,可加如入一些可互换的组件。

(图4-2)

它的执行是进行的,要紧有以下

几步:

1。

在预定的URI当选择一个。

2。

获取URI  

3。

分析,归档结果  

4。

选择已经发觉的感爱好的URI。

加入预定队列。

5。

标记已经处置过的URI

要紧部件:

Heritrix要紧有三大部件:

范围部件,边界部件,处置器链  

范围部件:

要紧依照规那么决定将哪个URI入队。

边界部件:

跟踪哪个预定的URI将被搜集,和已经被搜集的URI,选择下一个URI,剔除已经处置过的URI。

处置器链:

包括假设干处置器获取URI,分析结果,将它们传回给边界部件。

3.中文分词器

mmseg4j用Chih-HaoTsai的MMSeg算法实现的器,并实现lucene的analyzer和solr的TokenizerFactory以方便在Lucene和Solr中利用。

MMSeg算法有两种分词方式:

Simple和Complex,都是基于正向最大匹配。

Complex加了四个规那么过虑。

官方说:

词语的正确识别率达到了98.41%。

mmseg4j已经实现了这两种分词算法。

4.文档解析器

ApacheTika利用现有的解析类库,从不同格式的文档中(例如HTML,PDF,Doc),侦测和提掏出元数据和结构化内容。

 

功能包括:

侦测文档的类型,,语言,等其他现有文档的属性。

提取结构化的文字内容。

该项目的目标利用群体要紧为搜索引擎和其他内容索引和分析工具。

编程语言为Java.

5.Javabean

JavaBean是一种JAVA语言写成的可重用组件。

为写成JavaBean,类必需是具体的和公共的,而且具有无参数的。

JavaBean通过提供符合一致性的公共方式将内部域暴露成员属性。

众所周知,属性名称符合这种模式,其他Java类能够通过自身机制发觉和操作这些JavaBean属性。

用户能够利用JavaBean将功能、处置、值、数据库访问和其他任何能够用java代码制造的对象进行打包,而且其他的开发者能够通过内部的JSP页面、Servlet、其他JavaBean、applet或应用来利用这些对象。

用户能够以为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关切任何改变。

6.mysql数据库

MySQL是一个,由瑞典MySQLAB公司开发,目前属于公司。

MySQL是一种关联,关联数据库将数据保留在不同的表中,而不是将所有数据放在一个大仓库内,如此就增加了速度并提高了性。

MySQL的SQL语言是用于访问的最经常使用标准化语言。

MySQL软件采纳了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、整体拥有本钱低,尤其是这一特点,一样中小型网站的开发都选择MySQL作为网站数据库。

由于其社区版的性能卓越,搭配和可组成良好的开发环境。

(图4-4)

MySQL是一个开放源码的小型关联式数据库治理系统,开发者为瑞典MySQLAB公司。

目前MySQL被普遍地应用在Internet上的中小型网站中。

由于其体积小、速度快、整体拥有本钱低,尤其是开放源码这一特点,许多中小型网站为了降低网站整体拥有本钱而选择了MySQL作为网站。

5.详细设计

重要部份代码展现及说明

1.索引的成立:

publicclassIndexUnit{

privatestaticDirectorydirectory=null;

static{

try{

directory=FSDirectory.open(newFile("

E:

/work/Java_web_work/Lucene/index02/"

));

}catch(IOExceptione){

e.printStackTrace();

}

publicstaticDirectorygetDirectory(){

returndirectory;

privatestaticDocumentgeneratorDoc(Filef)throwsIOException{

if(f.isDirectory())returnnull;

Documentdoc=newDocument();

Metadatametadata=newMetadata();

doc.add(newField("

content"

newTika().parse(newFileInputStream(f),metadata),TermVector.WITH_POSITIONS_OFFSETS));

title"

FilenameUtils.getBaseName(f.getName()),Field.Store.YES,Field.Index.ANALYZED,TermVector.WITH_POSITIONS_OFFSETS));

filename"

f.getName(),Field.Store.YES,Field.Index.NOT_ANALYZED));

path"

f.getAbsolutePath(),Field.Store.YES,Field.Index.NOT_ANALYZED));

type"

FilenameUtils.getExtension(f.getName()),Field.Store.YES,Field.Index.NOT_ANALYZED_NO_NORMS));

intpage=0;

page=Integer.parseInt(metadata.get("

xmpTPg:

NPages"

}catch(NumberFormatExceptione){

doc.add(newNumericField("

page"

Field.Store.YES,true).setIntValue(page));

date"

Field.Store.YES,true).setLongValue(f.lastModified()));

size"

Field.Store.YES,true).setIntValue((int)(f.length()/1024)));

returndoc;

publicstaticvoidindex(booleanhasNew){

IndexWriterwriter=null;

writer=newIndexWriter(directory,newIndexWriterConfig(Version.LUCENE_35,newMMSegAnalyzer()));

if(hasNew==true){

writer.deleteAll();

writer.forceMergeDeletes();

Filefile=newFile("

/work/Java_web_work/Lucene/Example02/"

Documentdoc=null;

for(Filef:

file.listFiles()){

doc=generatorDoc(f);

if(doc!

=null)

writer.addDocument(doc);

}catch(CorruptIndexExceptione){

}catch(LockObtainFailedExceptione){

}finally{

if(writer!

=null)writer.close();

}

2.依照索引的搜索:

publicArrayList<

String>

searcher(Stringword){

ArrayList<

resList=newArrayList<

();

IndexSearchersearcher=newIndexSearcher(IndexReader.open(IndexUnit.getDirectory()));

TermQueryquery=newTermQuery(newTerm("

word));

TopDocstds=searcher.search(query,260);

for(ScoreDocsd:

tds.scoreDocs){

Documentdoc=searcher.doc(sd.doc);

System.out.println(doc.get("

resList.add(doc.get("

searcher.close();

returnresList;

3.数据库访问类

publicclassDBBean{

Connectioncon=null;

Statementstat=null;

PreparedStatementpstat=null;

ResultSetrs=null;

privatestaticfinalStringDRIVER="

com.mysql.jdbc.Driver"

;

//概念驱动字符串

privatestaticfinalStringURL="

jdbc:

mysql:

//localhost:

3306/searchmis"

//概念URL

privatestaticfinalStringNAME="

root"

//概念用户名

privatestaticfinalStringPASSWORD="

qdhy199148"

//概念密码

//无参的构造函数

publicDBBean(){

/*

*取得数据库连接

*/

publicConnectiongetCon(){

Class.forName(DRIVER).newInstance();

con=(Connection)DriverManager.getConnection(URL,NAME,PASSWORD);

//创建连接

System.out.println("

成功创建链接"

+con);

}catch(SQLExceptione){

//TODO:

handleexception

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

}catch(InstantiationExceptione){

}catch(IllegalAccessExceptione){

returncon;

*执行数据库查询并返回查询结果

publicResultSetquery(Stringsql){

con=getCon();

stat=con.createStatement();

rs=stat.executeQuery(sql);

}catch(Exceptione){

returnrs;

*执行数据库更新01

publicvoidupdate(Stringsql){

stat.executeUpdate(sql);

e.printStack

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1