1、毕 业 论 文 ( 设 计 )论文(设计)题目:站内全文搜索引擎的设计与实现目 录摘 要 1ABSTRACT 2第 1 章 绪论 31.1 课题的研究背景与意义 .31.2 研究现状 .41.3 本文的工作 .4第 2 章 站内搜索引擎相关技术介绍 62.1 全文检索技术 .62.2 .NET 相关技术 72.2.1 .NET 平台 .72.2.2 Visual Studio2012 开发平台 72.3 Lucene.NET 介绍 .8第 3 章 站内搜索引擎的设计与实现 93.1 站内搜索引擎功能需求 .93.2 站内搜索引擎总体设计及数据库设计 .10第 4 章 站内搜索引擎关键代码实现
2、114.1 主界面 .11第 5 章 总结与展望 14参考文献 150摘 要淘宝的出现,电子商务井喷式的发展,以及越来越多的社交网站、团购网站、专门类信息网站的出现,海量的数据蕴含在网站之内。巨大的信息量无疑是把双刃剑,在给用户提供丰富信息的同时,也给用户提了一个大大的难题,如何在这海量信息中找到用户想得到的信息,尤其是当用户提供的是一组信息不是十分明确的词组时,如何能讲有用的信息条理清晰地提供给用户,这进一步刺激了站内搜索技术的发展。本文在总结站内搜索功能的同时,在研究了站内搜索相关技术的基础上,设计并实现了一个简易的站内搜索引擎,实现了在内搜索的主要功能。关键词:站内搜索;.NET;Luc
3、ene.NET1ABSTRACTThe Taobao emergence of e-commerce development spurt, as well as a growing number of social networking sites, group buying sites, the emergence of specialized class information website contains vast amounts of data within the website. A huge amount of information is undoubtedly doubl
4、e-edged sword, giving users a wealth of information, but also to provide the user a big problem, how to find a user wants information in this mass of information, especially when the user is offered a when information is not very clear set of phrases, how can speak clarity of useful information avai
5、lable to users, which further stimulated the development of the station search technology.This paper summarizes the station search function at the same time, in the study of the station search related technologies, based on the design and implementation of a simple site search engine, including the
6、realization of the main functions of the search.Key words: Site Search; .NET; Lucene.NET2第 1 章 绪论自从有了计算机以后,人类开始用计算机保存信息,有保存就需要查找,于是出现了检索技术。文本检索技术的发展从最初的 SMART 文档检索系统到AltaVista 搜索引擎,到现在的搜索巨头 Google,人们习惯在互联网上搜索需要的信息 1。同时在同一个网站内往往拥有大量的资源,怎样在网站内部使用户能够迅速的找到所需信息,已成为一个网站能够吸引用户的重要方面。随着信息地快速增长,这一方面的需求越来越大,在很
7、大程度上严重影响到 Web 站点的成功 2。因此,建立站内搜索引擎成为必要。所谓站内搜索无非就是对数据库信息的检索,当然,数据库通过 SQL 查询也在一定程度上提供了这样的功能。但是,数据库所提供的 Like%key-word%查询,不但效率不高,尤其是在多字段查询时,而且所提供的仅仅是关键字的全信息匹配,所查询到的内容必须是“key-word ”的顺序匹配,这对于大多数网站,尤其是大型网站来说,基于数据库查询的站内搜索往往出现检索数据不准确、更新慢、无法控制检索等问题 3。那么,如何来解决这个问题呢?搜索引擎的出现给了人们带来了一线希望。诸如 Google、Baidu 等全文搜索引擎能够提供
8、一种基于全文信息的搜索方式,并且能够在所提供的一个或一组词中分离出具有一定含义的词,并以这些词为关键字搜索并得到包含这些关键字的信息 4。然而,我们无法做到在自己的网站中做出一个如 Baidu、Google 那样的搜索引擎。但是,Lucene 的出现,使这种实现成为可能,它是一个开放源代码的全文检索引擎工具包,利用 Lucene 建立的全文检索系统可以通过其丰富的分析技术达到令人满意的检索效果 5。1.1 课题的研究背景与意义在以往网站建设、企业信息系统搭建过程中,由于信息结构简单、内容稀缺,站内搜索乃至搜索都不是网站系统的必要装备。但随着 Web2.0 带来的海量信息井喷式涌现,企业自身对信
9、息架构、管理、发布的需求,以及用户对信息的组织、查询、可寻性的要求越来越高,于是站内搜索出现了。3淘宝的出现,电子商务井喷式的发展,以及越来越多的社交网站、团购网站、专门类信息网站的出现,海量的数据蕴含在网站之内。巨大的信息量无疑是把双刃剑,在给用户提供丰富信息的同时,也给用户提了一个大大的难题,如何在这海量信息中找到用户想得到的信息,尤其是当用户提供的是一组信息不是十分明确的词组时,如何能讲有用的信息条理清晰地提供给用户,这进一步刺激了站内搜索技术的发展 6。站内搜索通俗来讲是一个网站或商城的“大门口” ,一般在形式上包括两个要件:搜索入口和搜索结果页面,但在其后台架构上是比较复杂的,其核心
10、要件包括:中文分词技术、页面抓取技术、建立索引、对搜索结果排序以及对搜索关键词的统计、分析、关联、推荐等 7。1.2 研究现状站内搜索主要提供的是全文搜索功能,常用的检索技术分为如下两种:(1)使用关系数据库的 like %keyword%查询来代替全文检索系统。这种方法在信息量比较小的情况下,检索速度比较快,但是由于查询语句比较繁琐,在面对海量信息的情况下,检索速度会急剧降低,其性能也往往达不到要求,甚至影响数据库的其他正常使用,尤其是在网络状态下,这方面的缺陷尤为明显 8。(2)使用通用的数据库系统提供的全文检索功能。一些信息化平台虽称实现了全文索引库,但其实质是模拟的全文索引库,其通过先
11、检索放在关系数据库里的结构化数据,如题目、摘要、内容等,然后链接全文以获得全文,而真正实现全文检索的不多,而且在数据量比较大,特别是在海量数据的情况下,检索的效率仍然比较低 9。1.3 本文的工作本论文在研究了全文搜索相关文献的基础上,分析了 Lucene.NET 框架,基于.NET 平台,实现了一个简单的站内搜索引擎,主要研究内容包括 10:(1)全文检索知识的研究。包括全文检索的基本原理和相关理论;(2).NET 平台相关技术的研究。包括,.NET Framework 介绍,Visual Studio4开发环境介绍;(3)分词框架研究。包括 Lucene 介绍及工作原理。(4)设计并实现一
12、个简单的站内搜索引擎。5第 2 章 站内搜索引擎相关技术介绍2.1 全文检索技术所谓全文检索,是一种将文件中所有文本与检索项匹配的文字资料检索方法。全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统 11。全文检索能够将存储于数据库中整本书、整篇文章中的任意内容信息查找出来的检索。它可以根据需要获得全文中有关章、节、段、句、词等信息,也就是说类似于给整本书的每个字词添加一个标签,也可以进行各种统计和分析。例如,它可以很快的回答“水浒传一书中“ 宋江 ”一共出现多少次?”的问题。全文搜索技术是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出
13、现的次数和位置,当用户查询时,搜索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。检索主要分为按字检索和按词搜索两种。按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中字与词有很大分别。按词搜索指对文章中的词,即语义单位建立索引,检索时按词搜索,并且可以处理同义项等。英文等西方文字由于按照空白切分词,因此实现上与按字处理类似,添加同义处理也很容易。中文等东方文字则需要切分字词,以达到按词索引的目的,关于这方面的问题,是当前全文搜
14、索技术尤其是中文全文检索技术中的难点。全文搜索系统是按照全文检索理论建立起来的用于提供全文检索服务的全文搜索系统。一般来说,全文搜索需要具备建立索引和提供查询的基本功能,此外现代的全文搜索系统还需要具有方便的用户接口、面向 WWW 的开发接口、二次应用开发接口等等。功能上,全文搜索系统,核心具有建立索引、处理查询返回增加索引、优化索引结构等等功能,外围则由各种不同应用具有的功能组成。结构上,全文搜索系统核心具有索引引擎、查询引擎、文本分析引擎、对外接口等等,加上各种外围应用系统等等共同构成了全文检索系统 12。62.2 .NET 相关技术2.2.1 .NET 平台.NET 框架是一种新的计算平
15、台,它简化了在高度分布式 Internet 环境中的应用程序开发 13。Microsoft .NET Framework 结合强大的功能与跨技术边界无缝通信新技术,构建一个能支持各种业务流程的应用程序。.NET 框架 4.5 可以更方便地编写异步代码、同步代码中的控制流混合,它提供了更高的性能、可靠性和安全性。它为软件向多样化的移动组件发展的情况也提供了保护。在一个改进的、可扩展的策略下,用户能够运行功能强大的代码,而同时降低相关的风险。.NET 平台使人们能够通过简单的方式在其上构建各种应用方式,多样化地从网站获取信息,并解决网站之间的协同工作。.NET Framework 4.5 提供了托
16、管执行环境、简化的开发和部署以及与各种编程语言的集成,如图 1 所示。图 1 .NET Framework2.2.2 Visual Studio2012 开发平台Microsoft Visual Studio(简称 VS)是美国微软公司的开发工具包系列产品。7Visual Studio 是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,是目前最流行的 Windows 平台应用程序的集成开发环境。现在较新的版本是 2012 版本 14。Visual Studio 2012 作为一个集成解决方案,适用于无论是个人或者各种规模的开发团队。Visual Studio2012 实
17、现了同事间的无缝协作,提高了生产效率与专注度,最终好的点子变成了优秀的现实应用。2.3 Lucene.NET 介绍Lucene.NET 是 Lucene 的.NET 版本,被应用于.NET 平台上。Lucene 是一套用于全文检索和搜寻的开源程式库,由 Apache 软件基金会支持和提供。Lucene 提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java 开发环境里 Lucene 是一个成熟的免费开源工具。就其本身而言, Lucene是当前以及最近几年最受欢迎的免费 Java 资讯检索程式库。人们经常提到资讯检索程式库,虽然与搜索引擎有关,但不应该将资讯检索程式库与搜索引擎相混
18、淆 15。作为一个开放源代码项目,Lucene 从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建 Web 应用,甚至某些 商业软件也采用了 Lucene 作为其内部全文检索子系统的核心。Lucene 以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用。8第 3 章 站内搜索引擎的设计与实现3.1 站内搜索引擎功能需求站内搜索是提供网站内部内容的检索和搜索功能。随着网站内容的增长,站内结构也越来越复杂,用户很难准确浏览全部内容,查找所需信息也越来越难。站内检索的需求也逐渐显露出来。一个好的站内搜索
19、引擎主要包含如下功能: 搜索提示功能,用户输入关键字 ,自动出现下拉框显示相关搜素关键词,这个功能大家都很熟悉了,比如百度淘宝都在用; 实用性很强,的确为用户提供了很多方便;其实这个功能还有其他的作用,就是引导用,避免了原来用户随意输入不太符合规则的关键字,导致搜搜无结果的尴尬。尤其对产品销售型的网站,友好的提示,让客户最快找到他要的东西。 用户搜素记录,用户在搜索的时候,做一下记录处理,记录一下用户输入的关键字。做搜索数量统计,发觉自己网站用户的搜索倾向,配合高搜索率的关键字做一些促销及专题,满足用户的胃口。从这个功能的延伸,就是尽可能的获取用户的详细信息,这个可以配合网站会员功能,具体实现
20、起来:当用户以登陆方式搜索时候,记录搜索的关键字及用户会员 ID 。这样就获得了用户信息,便可通过邮件等方式将其感兴趣的内容传达给他。 搜索热门关键字,能让用户点的不让用户区输入,这就是人性化,搜索框下最好有经常被检索的关键字,这个关键字可以用上述第 2 点获取。而且对于销售型的网站不同时期都要及时的更新。 搜索结果页面,搜索出来后的结果页面也是不可忽视的,经常看淘宝的用户知道,搜索结果页面上方会有产品所属的分类,所属的型号,品牌、其实还可以加入一排相关搜索关键字,类似百度下方的相关搜索。总之一步步的让用户根据自己的需求找到相应的产品,便捷从细节开始。 方便用户查找网站信息。我们经常会发生这样
21、的事情:明明记得有一篇写关于宝马试驾的 的文件,就是想不起存放在什么地方了。访问者也有类似困扰,只记得某个网站上说了关于某一事件的新闻,但不知道具体的链接9在哪里。另外,要是隐藏在目录很深的 html 文档可能自从网站建立到整个网站关闭也没有一个人看过,这些都不是我们所想要的。站内检索毫无疑问可以解决上述问题。同时,按照一个主题把所有相关文档提供给访问者,可以让访问者更全面的了解他所想要的东西,这增加了网站信息间的组织性和逻辑性,方便了访问者的使用,提升用户体验度。3.2 站内搜索引擎总体设计及数据库设计本系统为实现一个简易的站内搜索引擎,可以嵌入到其他实用网站之中。因此在设计上以简洁为主,总
22、体设计如图 2。站内搜索引擎检索入口 检索引擎数据库图 2 站内搜索总体设计用户通过输入接口界面输入想查询的一个或若干个词到检索引擎,检索引擎与数据库通信,根据关键字查询数据库中相匹配的信息,在返回给用户界面,并在返回信息中高亮出用户所检索的信息。为了模拟检索过程和内容,在数据库中创建了一个简单的数据表 Article,如表 1。字段名 数据类型 是否允许为空 说明ID INT 否 编号,关键字Title NVARCHAR (50) 否 信息标题Content VARCHAR (MAX) 否 信息内容表 1 Article 表10第 4 章 站内搜索引擎关键代码实现4.1 主界面图 3 主界面
23、(搜索前)图 4 主界面(搜索后)11主要代码:protected List keywords = new List(); protected void btnSearch_Click(object sender, EventArgs e)string keywords = tbKeyWords.Text.Split(new string “ “ , StringSplitOptions.RemoveEmptyEntries);if (keywords.Length list = dataAccess.Search(this.keywords);ShowResult(list); long i
24、d = 0;if (!IsPostBack Data = dataAccess.GetArticle(id);if (Data = null)Data = new Article();用于高亮关键字的代码:function HightLightKeywords() var container = document.getElementById(“result“);var keywords = new Array();for (var i = 0; i “ + keywordsi + “);HightLightKeywords();13第 5 章 总结与展望本设计实现了一个简易的站内搜索引擎,通
25、过该设计的制作,使我对专业所学有了进一步的认识,在增强实际操作能力的同时,也对相关理论知识的关联性有了更深的了解,更重要的是在这一过程中又学到了很多新的知识。系统在经过测试,在运行过程中,能够达到预期的基本目标,得到较好的效果。当然,鉴于能力和时间所限,还有诸如自动完成、关键字统计等功能还没有完成,这都是以后需要加强的方向。14参考文献1陈立全文检索引擎的设计研究J现代情报,2007(10):56582蔡建超,郭一平,王亮基于 Lucene.Net 校园网搜索引擎的设计与实现J计算机技术与发展,2006(11):80823张校乾,金玉玲,侯玉波一种基于 Lucene 检索系统的全文数据库的设计
26、与实现J 现代图书情报技术,2005(2):77 794车东在应用中加入全文检索功能基于 Java 的全文索引引擎Lucene 简介EB/OL,2002-08http:/ Lucene.Net 的知识检索系统的设计与实现J开发案例,2008(11) :74766刘磊安,符志强 基于 Lucene.et 网络爬虫的设计与实现J电脑知识与技术,2010(8) :4648.7李文江,陈诗琴 基于 L 全文检索在文档管理中的应用J现代图书情报技术,2010(11):5052.8杨文刚 基于 L 的档案垂直搜索引擎的实现J北京档案,2012(10):88 89.9蓝滨,王征 基于 ASP.NET 搜索引
27、擎研究与实现J硅谷,2012(23):434510邹燕飞, 于成尊,赵亮 基于 Lucene 的文本搜索引擎的设计和实现J 计算机与现代化,2011(9):2325.11吕双,王小科 C#程序开发范例宝典M北京:人民邮电出版社,2009(10):50 32212宋华,现代物流成本的系统管理与控制J经济管理,2004(11):565713马骏 ASP.NET 项目开发案例教程M北京:人民邮电出版社2007(11) :10022414卲丽萍新一代 Web 开发技术 ASP.NET 的发展与探析J微计算机信息,2005(11) :50521515王志晓 ASP.NET 技术在电子商务系统中的应用研究
28、J计算机工程,2003(18):92 9416致 谢历时将近半年的时间,终于完成了毕业设计及论文的工作,在设计制作和论文撰写的过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感谢我的论文指导老师,他对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此向帮助和指导过我的各位老师表示最中心的感谢!感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。感谢我的同学和朋友,在我写论文的过程中给予我了很多你问素材,还在论文的撰写和排版灯过程中提供热情的帮助。最后感谢我的母校,两年来对我的大力培养,使我各方面都得到了提升。对我以后人生的道路产生深远的影响。由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正!