中期报告-社会图书检索系统的设计与实现.doc_第1页
中期报告-社会图书检索系统的设计与实现.doc_第2页
中期报告-社会图书检索系统的设计与实现.doc_第3页
中期报告-社会图书检索系统的设计与实现.doc_第4页
中期报告-社会图书检索系统的设计与实现.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京科技大学本科生毕业设计(论文)中期报告目 录1已完成的设计研究工作及取得的初步成果21.1相关文献的阅读与研究21.1.1面向Web图书信息提取的文献阅读研究21.1.2搜索引擎原理以及搜索算法的文献阅读研究21.2相关基础知识的学习与平台搭建21.2.1学习C#网络编程知识21.2.2学习使用Mysql 5.521.2.3学习数据库建模工具E-R模型21.2.4学习正则表达式31.2.5学习HTML语言31.2.6学习Socket技术31.2.7平台搭建41.3系统设计41.3.1功能划分41.3.2数据建模51.4编程工作81.4.1豆瓣图书信息的下载81.4.2图书数据信息的清洗91.4.3图书信息入库111.5本阶段最终成果122存在问题132.1系统效率问题132.1.1网页下载以及更新效率132.1.2图书信息数据清洗效率132.1.3导入数据库效率132.1.4数据量与搜索效率的矛盾142.2系统准确性问题142.2.1下载网页的源代码错误142.2.2编码结构问题142.2.3数据清洗准确性问题142.3系统维护问题143下一步工作计划153.1整合已完成模块153.2建立索引库153.3实现检索系统153.4系统测试与整体优化154可预期成果164.1豆瓣图书信息数据库164.2豆瓣图书索引库164.3图书检索系统16指导教师意见17系所意见171已完成的设计研究工作及取得的初步成果1.1 相关文献的阅读与研究1.1.1面向Web图书信息提取的文献阅读研究为了可以深入了解有关于数据解析的知识,我阅读了一些有关Web信息读取的书籍和论文。在网络爬虫方面,学习了网络爬虫的基本原理并了解了Heritrix爬虫的工作原理以及其遍历和实现,学会了对地址的解析以及信息过滤的方法。在提取信息方面,学习了识别网页编码的方法,正则表达式的使用,以及如何通过正则表达式对网页正文信息进行提取。1.1.2搜索引擎原理以及搜索算法的文献阅读研究为了能够快速有效的建立搜索引擎,对本地文档进行搜索,我阅读学习了有关搜索引擎和搜索算法的相关论文,以及Social Book Search(简称SBS)比赛的一些获奖论文,对于目前一些常见的搜索算法,有了一定的了解,为后面的工作打下了基础。1.2相关基础知识的学习与平台搭建1.2.1学习C#网络编程知识根据Web图书信息的内容与图书检索系统的需求,进行有针对性的学习C#编程学习,包括C#环境下,分布式爬虫架构和垂直式爬虫架构,Socket编程和TCPClient类的使用学习,C#中正则表达式的使用,HtmlAgilityPack和DOM树的学习。1.2.2学习使用Mysql 5.5学习Mysql 5.5基本使用方法和常用的操作方法等。学习C#集成的Mysql 5.5连接接口类的使用方法,能够通过C#和Mysql 5.5建立连接,能够实现从C#对Mysql 5.5单向通信,完成Mysql 5.5的一切基本操作。学习Mysql 5.5命令集。能够熟练掌握创建数据库,对数据库进行建表、删表,对数据表的数据项进行增加、删除、修改、查询工作。1.2.3学习数据库建模工具E-R模型E-R模型有实体集、属性集、联系集三部分组成。通过需求分析,确定一个系统由哪些实体组成来确定实体集;再逐一分析这些实体集有哪些属性,来确定这些实体的属性集;最后通过分析这些实体集之间的联系,来确定联系集。E-R模型的学习还包括主键的设定,约束的设定等。1.2.4学习正则表达式在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。这是本论文最重要的一部分。因为图书数据基本上都在HTML代码里,而且每本书的相同数据项的HTML代码部分基本上都遵循一定的规则。用正则表达式把匹配的数据解析出来而且清洗不必要的数据。1.2.5学习HTML语言超文本标记语言,即HTML(Hypertext Markup Language),是用于描述网页文档的一种标记语言。一个网页对应一个HTML文件,超文本标记语言文件以.htm(磁盘操作系统DOS限制的英语缩写为扩展名)或.html(英语缩写为扩展名)。可以使用任何能够生成TXT类型源文件的文本编辑器来产生超文本标记语言文件,只用修改文件后缀即可。互联网上文本信息的格式多是半结构化的HTML格式,它是无法被机器直接处理的。虽然它提供的信息不能被人们很容易的浏览,更不能作为一个数据源像关系数据库一样被查询,但我们要想从一个HTML文件提取一些我们需要的信息对它的了解还是必要的。HTML文件都会有固定的格式,同类的HTML信息都会有同样类型的标签,通过识别标签的内容,得到同类信息的不同内容信息。1.2.6学习Socket技术Socket的英文原意是“孔”或“插座”。在这里作为UNIX的进程通信机制。Socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。一个完整的Socket有一个本地唯一的Socket号,有操作系统分配。最重要的是,Socket是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的Socket系统调用。客户随机申请一个Socket,系统位置分配一个Socket号;服务器拥有全局公认的Socket,任何客户都可以向它发出连接请求和信息请求。Socket利用客户/服务器模式巧妙地解决了进程之间建立通信连接的问题。1.2.7平台搭建下载并成功安装了Windows Server 2008 作为服务器。下载并成功安装了Visual Studio 2010开发工具,配置为C#语言的运行环境。下载并成功安装了MYSQL 5.5。下载并成功安装了文本/HEX 编辑器UltraEdit。下载并成功安装了Lucene.Net框架。1.3系统设计1.3.1功能划分对整个系统做了简要的总体设计。Web图书检索系统由如下几个功能模块组成:1、下载数据源模块:需要解析与清洗的数据都在豆瓣图书的网页源代码里,要把所有图书网页源代码下载到本地,能够通过UltraEdit进行阅读。2、数据处理模块:根据网页内容格式和数据字典结构,对于网页信息进行清洗,得到需要的网页信息的相应内容。3、导入数据库模块:将经过清洗的图书信息导入已经设计好的目标数据库,并对数据库进行保存。4、建立索引库模块:通过对目标数据库以及关键词的内容,对本地数据库利用索引原理和倒排算法建立索引库,使得能够通过索引库,快速得到数据库任意的数据项。5、搜索界面模块:通过ASP.NET实现搜索引擎的简单界面,能够保证完成搜索工作的完成。6、系统整合:将各个模块整合成一个完整的系统,完成检索系统的实现。总体功能流程如图1所示:开始下载网页源代码读取数据源 数据解析与清洗导入数据库结束 建立索引库 实现倒排算法 实现搜索界面完成检索系统图1. 系统总体功能流程图1.3.2数据建模数据字典与数据结构列表(1)图书出版信息表数据表名称Book_Publishing_Info功能描述图书出版信息表备注主键ISBN外键索引数据字段名称意义数据类型长度允许为空Book_ID书号INTEGERNot NullISBNISBNCHAR13Title书名NVARCHARAuthors_Name作者NVARCHARDescription图书简介NVARCHARDirectory 图书目录NVARCHARBinding装订方式NVARCHARList_Price标价DOUBLEPages页数INTEGERPublisher出版商NVARCHARPublication_Date出版时间DATETIMEEdition版次INTEGERTitle_Page_Images图书封面NVARCHAR (2)图书网络信息表数据表名称Book_Online_Info功能描述图书网络信息表备注主键ISBN外键索引数据字段名称意义数据类型长度允许为空Book_ID书号INTEGERNot NullLabel图书标签NVARCHARAverage_Review评价平均等级DOUBLENumber_Review评价总人数Number_Star5五星级评价人数INTEGERNumber_Star4四星级评价人数INTEGERNumber_Star3三星级评价人数INTEGERNumber_Star2二星级评价人数INTEGERNumber_Star1一星级评价人数INTEGERNumber_ToRead想读人数INTEGERNumber_Reading在读人数INTEGERNumber_Readed读过人数INTEGERTogether_Bought一起购买的书NVARCHAR(ISBN号)(3)图书作者信息表数据表名称Book_Author_Info功能描述图书作者信息表备注主键ID外键索引数据字段名称意义数据类型长度允许为空Book_ID书号INTEGERNot NullName作者名称NVARCHARIntroduction作者简介NVARCHARContent作者更多介绍NVARCHAR1.4编程工作1.4.1豆瓣图书信息的下载已经获取了300多万的图书网页源代码,作为图书信息的数据源。图2 图书网页/subject/下的部分网页数据,每个文件夹1000个网页图3 某本网络图书的网页源代码(部分)1.4.2图书数据信息的清洗建立Douban_Analysis工程,对豆瓣图书数据进行清洗。下图为工程以及各个文件。其中Program中包含了对所有原始数据的遍历,以及多CPU运行控制等内容,HtmlToMySql_BT中包含了对于相关数据的清洗内容。图4 豆瓣信息清洗工程以及文件经过清洗的数据都以SQL语句的形式存放在txt中,每本书均有3个SQL语句,因为每本书都必须出现在三个数据表格中。下图为部分图书信息的SQL语句:图5 经过清洗的数据的SQL下图为图书清洗的源代码(部分)图6数据清洗源代码(部分)1.4.3图书信息入库经过处理的图书数据,已经可以存放在SQL中,但是由于特殊字符以及编码的问题,这些SQL语句还不是合法的SQL语句,也不具有合适存放的编码,无法存放到Mysql数据库内,在前面提到的工程中,HtmlToMySql_DA即是完成此项工作的内容。通过清洗出来的SQL,通过对于特殊字符的调整,以及通过统一编码为utf8的文档,以文件流的形式存放到txt里。然后再通过Mysql的命令“mysql uroot p密码 D 数据库名 x.txt”将txt中的合法SQL存放到Mysql数据库里。下图为SQL整合的部分代码图6 SQL整合源代码(部分)1.5本阶段最终成果通过一系列的整合,本阶段基本完成了对豆瓣图书信息的数据准备工作,共有300多万本豆瓣图书被列为原始数据,经过清洗和整合,除个别数据有误外(不足20条),共有近1000万条SQL语句存入了数据库,为下一阶段的工作做好了铺垫。2存在问题2.1系统效率问题2.1.1网页下载以及更新效率由于豆瓣图书的数据量庞大,而且均存放在/subject/下面,采取了通过robots读取sitemap的方式,对网页数据URL地址的格式进行获取,从已知的URL下进行下载。但由于豆瓣的反爬虫机制,导致一旦速度过快,就会造成下载的网页变成了404 Forbidden,也就是豆瓣服务器拒绝该用户IP地址下进行访问或下载,下载的网页就成了无效数据。所以下载的速度,只能通过不断的调节,维持在一个服务器允许的下载速度之内,完成对图书信息的下载。数据量的庞大和下载速度的限制导致了数据的准备工作十分漫长,全部网页的下载大概需要10余天,于是,同样带来的问题,就是网页数据的更新效率可能会很低。2.1.2图书信息数据清洗效率目前数据清洗所采取的方式为正则表达式。由于正则表达式每执行一次都是在全文范围内进行搜索,因此每个关键词都要对全文进行一次遍历,所以清洗的效率受到正则表达式的很大影响。同时,正则表达式的匹配规则也在一定规模上影响了清洗的效率。由于豆瓣的开发工程师先后采取了不同的规则格式对网页进行编写,在避免由于格式不同造成清洗数据错误的限制下,正则表达式的匹配规则也无法达到最佳。总体来说,数据清洗的效率偏低。所有的数据使用清洗程序在4核CPU分别运行一项,整个清洗工作完成一次也需要将近8个小时。2.1.3导入数据库效率目前,导入数据库采取的方法是:使用Mysql的命令将文本文件存放的sql语句,直接运行存储到数据库内。从执行命令的效率上来说,导入数据库的速度是极快的。但是,一旦TXT中某个SQL出错,将错误修改后无法继续导入,只能删除原数据重新导入,尽管可以增加TXT的数量,以减少此类问题的发生,但是此类问题仍无法彻底避免,在进行修改中间文件的时候,会导致效率的下降。2.1.4数据量与搜索效率的矛盾数据量过于庞大与搜索效率形成了矛盾。搜索引擎最重要的两个条件就是搜索的效率和搜索的准确性,但是由于数据量达到300万,导致搜索的效率必然会受到影响。2.2系统准确性问题2.2.1下载网页的源代码错误虽然,降低下载速度可一定程度的规避反爬虫机制造成的404 Forbidden,但是还会有个人网页类问题存在。除此之外,还会有301 Moved Permanently,500 Internal Server Error,504 Gateway Time-out等一系列的问题存在。即有一定数量的网页源代码是错误的,目前的处理方式是直接不对此类数据采取后续处理,视为无效数据。2.2.2编码结构问题目前数据库编码为UTF-8,可以对一些日文、俄文之类的文字进行存储。但是豆瓣网页图书信息尚存在一些类似火星文或者未知文字符号无法使用UTF-8进行存储。2.2.3数据清洗准确性问题由于数据格式的不统一和多样化,数据的清洗会存在这样那样的错误,以及有一些未被清洗完全的数据。采取抽样调查的方式,仍存在个别清洗有误的现象无法避免。2.3系统维护问题由于目前系统各个模块比较分散,导致整个系统维护起来较为繁琐,整个系统若不整合需要分开进行维护。整个系统维护的工作较为困难。3下一步工作计划3.1整合已完成模块将已有的模块进行整合,完成一套完整的数据准备系统,修改和更新数据库内的数据,统一数据格式,建立完整的数据库。该工作预计在一周内完成。3.2建立索引库在已有的数据库上建立索引库,能够完成对本地数据库的索引,并且能够完整的通过索引库直接得到原有数据项。该工作预计在两周内完成。3.3实现检索系统通过倒排算法对索引库建立搜索算法,能够快速有效的将关键词和索引库建立连接,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论