为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于C#的桌面搜索系统文档搜索系统开发文档

2018-09-10 26页 doc 471KB 41阅读

用户头像

is_693683

暂无简介

举报
基于C#的桌面搜索系统文档搜索系统开发文档 本科毕业设计说明书(论文) 第 1 页 共 35 页 联系方式:QQ223857666勾月 基于C#的桌面搜索系统文档 1 引言 随着计算机技术的发展,本地和互联网上的信息量越来越大,想要获取有用的信息相当困难,尤其对于网站建设来说需要快速地更新网络信息,传统的人工筛选方式容易出错且效率很低,因而在庞大的数据量中进行人工筛选越来越不现实,需要借助搜索软件来辅助人们的工作。 使用搜索系统可以快速找到需要的信息,从而节省了劳动力并且提高了工作效率。作为现代信息获取技术的主要应用——“搜索引擎”对于计算机...
基于C#的桌面搜索系统文档搜索系统开发文档
本科毕业说明书() 第 1 页 共 35 页 联系方式:QQ223857666勾月 基于C#的桌面搜索系统文档 1 引言 随着计算机技术的发展,本地和互联网上的信息量越来越大,想要获取有用的信息相当困难,尤其对于网站建设来说需要快速地更新网络信息,传统的人工筛选方式容易出错且效率很低,因而在庞大的数据量中进行人工筛选越来越不现实,需要借助搜索软件来辅助人们的工作。 使用搜索系统可以快速找到需要的信息,从而节省了劳动力并且提高了工作效率。作为现代信息获取技术的主要应用——“搜索引擎”对于计算机相关人员来说是非常有必要的,本搜索系统可以为用户提供一个快速、准确检索信息的解决。 1.1 研究意义 对于普通用户来说,该搜索系统可以对本地硬盘上大量的文本数据进行筛选,获得文件的位置信息并可打开文件进行操作,给普通用户带来极大的方便。另外用户可以将感兴趣的站点进行下载分析,选择含有关键字的网页浏览。对于计算机相关人员尤其是网站维护管理人员来说,可以在收集的资源中快速找到需要的信息发布到网站上,另外在无版权问题时,可下载网页资源进行分析找到所需的信息,然后摘录到自己的网站上。 1.2 搜索系统概述 本系统支持全文检索,全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式[1]。这个过程类似于通过字典中的检索字表查字的过程。全文检索系统的结构与功能如图1.1所示。 图1.1 全文检索系统的结构与功能 2 编程语言、开发工具及Lucene介绍 基于Lucene的桌面搜索系统,采用C#语言,使用Microsoft Visual Studio .NET开发工具,以开源项目dotlucene的dll(1.9.1.4版本)作为核心。 2.1 C#介绍 C#是一种简单、现代、面向对象和类型安全的编程语言,由C和C++发展而来[2]。C#是C/C++系列中第一个面向组件的程序语言。近几年来,面向组件式的程序设计方式已被广泛的应用,组件的设计在C#中可一次完成,不再像C++一般得要处理一些头文件,IDL等外部文件。 C#执行在.NET Framework上,通过C#编译器所编译的程序称为Managed Code,它只能够在.NET Framework上的Common Language Runtime上执行[3]。 C#通过编译器编译产生EXE或DLL等可执行文件,这些编译过的EXE或DLL并不是CPU可以直接执行的程序代码(Native Code),而是一种中间语言(Intermediate Language)。中间语言是一种与CPU无关的指令集(Instruction Set),这使得由C#所编译的程序可以在任何支持.NET Framework的操作系统下执行,实现了微软“撰写一份程序,到处可以执行”的目标。事实上,不仅是C#,任何.NET程序语言都是以相同的方式运行的[4]。 在.NET Framework中,类型安全性(Type Safety)会在程序代码真正执行前先进行检验的操作。如果程序中有参考到其它的外部类函数库(Class Library),CLR Class Loader也会动态地将参考的类函数库载入[5]。 C#的目标在于把Visual Basic的高生产力和C++本身的能力结合起来,C#是专门为.NET应用而开发出的语言,所以C#和.NET框架完美的结合在了一起[6]。C#有着突出的特点。 a) 简洁的语法 在缺省的情况下,C#代码在.NET框架提供的“可操控”环境下运行,不容许直接地内存操作。它所带来的最大特色是没有了指针。C++中使用各种不同的操作符而在C#中只支持“.”需要理解的仅仅是一个名字嵌套。 C#对C++中的语法冗余进行了简化,只保留了常见的形式。 b) 精心的面向对象设计 C#具有面向对象的语言所应有的一切特性:封装、继承与多态。C#通过精心的面向对象设计,从高级商业对象到系统应用,使得C#是建造广泛组件的绝对选择。 在C#的类型系统中,每种类型都可以看作一个对象。C#只容许单继承,从而避免了类型定义的混乱。C#中没有了全局函数,没有了全局变量,也没有了全局常数。所有成员必须封装在一个类中。代码具有更好的可读性,并且减少了发生命名冲突的可能。 c) 与Web 的紧密结合 由于Web服务框架的帮助,网络服务看起来就像是C#的本地对象。可以使用已有的面向对象知识与技巧开发Web服务。 d) 完全的安全性与错误处理 语言的安全性与错误处理能力,是衡量一种语言是否优秀的重要依据。C#先进的内存管理中的垃圾回收机制减轻了开发人员对内存管理的负担。 C#可以开发下一代稳定及具有安全性的应用软件,在它的语法中并没有指针,但是如果想要使用指针,可以使用unsafe来声明,以告诉CLR这段程序使用了unsafe的指针。 e) 版本处理技术 C#提供内置的版本支持来减少开发费用,使用C#将会使开发人员更加轻易的开发和维护各种商业应用。 C#在语言中内置了版本控制功能,如函数重载必须被显式的声明,不像C++和Java那样可以随意修改,这可以防止代码级错误和保留版本化的特性。 f) 灵活性和兼容性 在简化语法的同时,C#没有失去灵活性。虽然C#不能用来开发硬件驱动程序,在默认的状态下没有指针,但是如果有需要,C#容许把某些类或者类的某些方法声明为非安全的,这样就能够使用指针、结构和静态数组了,并且调用这些非安全的代码不会带来任何其它的问题,代表delegates模拟指针的功能。 C#容许与C风格的需要传递指针型参数的API进行交互操作,DLL的任何入口点都可以在程序中进行访问。C#遵守.NET公用语言规范(CLS),从而保证了C#组件与其它语言间的互操作性[7]。 C#是.NET平台的通用开发工具,它能建造所有的.NET应用。其固有的特性保证了它是一种高效、安全、灵活的现代程序设计语言。从最普通的应用到大规模的商业开发,C#与.NET平台的结合将提供完整的解决方案[8]。 2.2 Microsoft Visual Studio .NET介绍 Microsoft Visual Studio .NET是一个强大的集成开发环境,引入了许多专门针对.NET框架而设计的特性,支持.NET CLR的开发语言有VB、C++、C#等[9]。.NET平台将推动以新体系为基础的协同Web应用开发。.NET支持多种编程语言,它们将共享一组提供基本服务的类。.NET应用不再直接在裸机上运行,而是使用一种运行在虚拟机CLR(Common Language Runtime)上的称为MSIL(Microsoft Intermediate Language)的中间语言。CLR的角色基本上和Java平台中的JVM相似[10]。Microsoft Visual Studio .NET的结构如图2.1所示。 图2.1 Microsoft Visual Studio .NET的结构 .NET包括4个重要特点,一是软件变服务,二是基于XML的共同语言,三是融合多种设备和平台,四是新一代的人机界面[11]。 Visual Studio .NET包括一个项目管理器、一个源代码编辑器、一个UI设计器、许多的向导、编译器、链接器、工具、实用程序、文档以及调试器。它即支持创建面向32位和64位的Windows应用程序,也支持面向.NET框架平台的应用程序[12]。对于所有的编程语言使用统一的集成开发环境。Visual Studio .NET是快速创建企业Web应用程序和传统的高效桌面应用程序的完整工具集,包含了功能强大的基于组件的开发工具和一系列的能够简化团队设计、开发和配置企业解决方案的技术[13]。Visual Studio .NET支持.NET Framework和Active Server Pages .NET,是.NET的核心开发工具集。 Visual Studio .NET是快速开发.NET企业应用的完整工具,是开发人员能使用他们喜爱的语言来开发健壮和可升级的解决方案[14]。它拥有以下优秀的功能,可以自动执行编译源代码的步骤,同时可以完全控制重写它们时应使用的任何选项;文本编辑器可以配合Visual Studio .NET支持的语言(包括C#),这样就可以智能错误,在输入代码时给出合适的推荐代码;包括Windows Forms和Web Forms设计器,允许UI元素的简单拖放设计;在C#中,许多类型的工程都可以用已有的“模版”代码来创建,不需要从头开始。各种代码文件通常已经为我们准备好了,减少了开发时间;包括几个可自动执行创建常用任务的向导,它们可以在已有的文件中添加合适的代码,而不需要考虑(在某些情况下)语法的正确性;包含许多可视化和导航工程中元素的强大工具,它们可以是C#的源文件代码,也可以是其它资源,例如位图图像或声音文件;除了编写应用程序比较简单外,还可以创建部署工程,以易于为客户提供代码,并方便地安装该工程[15]。 2.3 Lucene介绍 Lucene是一个高性能、可伸缩的信息搜索(IR)库[16]。它是Apache软件基金会Jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,它是一个全文搜索引擎的架构。Lucene的原作者是Dong Cutting,一开始发布在自己的主页上后来又捐献给了Apache。 经过多年的发展,Lucene在全文检索领域已经有了很多成功的案例,基于Lucene的全文检索产品和应用Lucene的项目在世界各地已经非常之多,其中比较知名的如下: a) Eclipse:主流的开源java开发工具,帮助文档采用Lucene作为检索引擎。 b) Jive:知名论坛系统,其检索功能基于Lucene。 c) Ifinder:德国的网站检索系统。 国内外全文搜索引擎知名的有: a) http://www.blogchina.com/weblucene/ b) http://www.ioffer.com/ c) http://www.taminn.com/ d) http://search.soufun.com/ Lucene可以对任何的数据做索引和搜索。Lucene不管数据源是什么格式,只要它能被转化为文字的形式,就可以被Lucene所分析利用。也就是说不管是Word,Excel,PDF还是其他什么形式的文件只要你可以从中抽取出文字形式的内容就可以被Lucene所用,就可以用Lucene对它们进行索引以及搜索。Lucene刚开始只有Java版本,之后翻译成的C#开源版本取名为Lucene .NET,后来由于商业的影响不再开源,并将已开源的链接删除,但是后来出现了一个开源的dotlucene项目,本软件使用的是dotlucene 1.9.1.4版开发包。dotlucene不是一个像google那样的搜索引擎,dotlucene甚至不是一个应用程序,它仅仅是一个工具,一个Library。可以把它理解为一个将索引,搜索功能封装的很好的一套简单易用的API。利用这套API可以做很多有关搜索的事情,而且非常方便。 索引是Lucene中的重要概念,是在搜索时使用到的一种特殊的数据结构。当文档的数量相当庞大,并且这些文档中的信息相对稳定时,建立索引可以大大提高搜索时的效率。不过,这种索引结构不支持快速的信息更新,即当建立完索引后,如果文档中的信息发生了改变,也必须对索引进行更新,才能够使用索引检索到最新信息。 在使用索引进行查找时,首先对需要索引的文档进行预处理,建立关于这些文档的索引结构。索引的技术主要有三种:倒排索引,后缀数组和签名文件。其中倒排索引技术在当前大多数的信息检索系统中得到了广泛的应用,它对于关键字的搜索非常有效,在Lucene中也是使用的这种技术。检索系统在建立好索引以后,就可以对用户的查询做出响应,该响应过程是通过搜索过程来实现的。搜索的目的就是要为用户提供高质量的搜索结果,即要求响应时间快,又要求搜索结果准确。Lucene有着高效的搜索算法和对搜索结果丰富的排序方法满足了这一需求。 3 需求分析 3.1 调查研究 随着计算机技术的飞速发展,人们在自己计算机上存储的信息越来越多,网络站点的信息更是浩如烟海,如何在大量的信息中快速找到自己需要的信息成为人们关心的问题,这就对搜索速度的要求越来越高,人工进行筛选已经显得力不从心,需要用软件来实现快速筛选的要求。对于网站建设来说网站内容更新的速度关系到网站的访问量,需要用软件快速找到需要的信息更新到网站上。虽然出现了像百度、Google这样的因特网搜索引擎,人们可以方便的搜索网络信息,但是这样的搜索是大众化的不能对个人感兴趣的站点和本地进行搜索,本桌面搜索系统方案就是基于以上原因提出的。 3.2 综合需求分析 开发搜索系统有两种方案,一种是使用C#开源项目dotlucene的dll,另一种是使用Java的Lucene全文信息检索包。本次毕业设计开发的是桌面搜索系统,开发桌面应用程序C#具有一定的优势,即使将来需要开发Web程序,ASP.NET也是一个很好的选择,桌面搜索的代码可以平滑地移植到Web程序中,另外dotlucene自身提供中文分词,这可以使开发速度加快,所以本系统选择C#开源项目dotlucene的dll。 3.2.1 功能需求 基于Lucene的桌面系统应用在海量信息的搜索,信息的来源包括平时收集的文本资源和使用网络机器人从网络上下载的网页。网络机器人也称为“网络蜘蛛”(Spider),是一个功能很强的WEB扫描程序。它可以在扫描WEB页面的同时检索其内的超链接并加入扫描队列等待以后扫描。因为WEB中广泛使用超链接,所以一个Spider程序理论上可以访问整个WEB页面,它可以将整个网站资源下载到本地,由于使用了多线程技术下载的速度很快,可以快速得到大量的文本资源。 因为开发的是搜索系统,所以软件最重要的功能包括建立索引和搜索关键字。 建立索引就是把需要的信息写入到索引文件中去,本地索引的信息包括文本文件所在位置和内容,网络索引的信息不仅包括网页文件在本地的位置和内容还包括该网页文件所在的网址。建立索引的时候如果遇到复杂文本格式的文件就抽取文本信息转化为txt临时文件。建立本地索引的文件类型可以设置,包括txt、html、php、asp、aspx、jsp、word、excel。建立网络索引的文件包括常见的html、php、asp、aspx、jsp。 搜索关键字就是对索引文件进行检索,把结果实时地显示出来,检索的索引文件如果是网络索引则显示下载到本地的网页文件的位置信息和网页的网址,可在软件上直接打开站点浏览也可打开下载到本地的文件,如果是本地索引则显示文件的位置信息,可打开文件。在下载网页时产生的异常记录在日志中,日志内容包括异常产生的时间以及具体的异常信息。此外对于感兴趣的结果可以保存在txt文件中,当处理信息时间较长时可以将程序隐藏转为后台执行。 3.2.2 软件性能需求 该软件主要目的是搜索所以要求查询响应速度快,查询结果准确,对索引建立时间不做具体要求(对Word、Excel有特殊文本格式的文件需要转化为txt文件,会消耗一定的时间),在下载网络资源的时候因为多线程的使用CPU的利用率会很高。 3.2.3 软件运行环境需求 Windows操作系统广泛存在于应用娱乐方面,而Linux使用在服务器方面,普通用户大多使用Windows操作系统,所以本软件系统运行环境选择了Windows,操作系统使用Windows XP或Windows 2000,运行在普通机型,使用高性能的计算机可以在下载网络资源和建立索引时提高速率。 3.2.4 软件可靠性需求 软件的大量工作都是对文件的处理上,消耗的资源很大,容易出现问题,所以要求软件具有良好的健壮性,在下载网络资源时需要对发生的异常进行记录,有助于出现问题时进行分析。 3.2.5 软件安全性需求 本软件对安全性的要求不是很高,它实际上是一个辅助工具,并不提供服务,也不保存重要是数据,如果加入了身份认证反而降低了软件的易操作性。 3.2.6 其他需求 软件具有一个友好的界面,操作简单、方便。软件的使用要易于掌握。 3.3 数据流图 搜索系统进行建立索引并搜索关键字的数据流图如图3.1所示。建立网络索引过程是用户输入网址交给Spider,由Spider向网络服务器提出访问网页的请求,网络服务器接到请求后把网页以数据包的形式送回Spider,然后Spider用流的形式创建本地文件即下载的网页等,最后通过dotlucene对下载的所有网页文件建立索引文件。建立本地索引过程是用户输入要建立索引的路径,将路径下的文件遍历打开,复杂文本格式文件转化为临时txt文件,最后将纯文本文件(已有的纯文本文件和转化的txt文件)使用dotlucene建立索引文件。搜索关键字的过程是用户输入关键字,到索引文件中去搜索匹配的结果,得到结果后显示出来反馈给用户。 图3.1 系统数据流图 4 概要设计 概要设计阶段将需求分析得到的结果转化为切实可行的系统模型,设计出系统对数据的处理流程,从系统的角度分析将抽象的思路实例化为具体的模块,并且分析各个模块之间的关系。根据各种软硬件的条件与限制选择合适的方案完成系统。 4.1 概述 该搜索系统主要有建立本地索引、建立网络索引和查询关键字三个重要功能,以下是三个重要功能的流程。 4.1.1 建立本地索引 创建本地索引流程:获取系统时间作为建立索引开始时间,对文件一个个进行分析(读取ini文件获取索引文件的标志,如果是ture将设置其标志字串为该类型文件的后缀名,否则标志字串为空,通过文件的后缀名判断是否建立索引,同样通过文件的后缀名决定是否进行文本转化,如果是纯文本文件直接构造文档,将文件位置字段和内容字段加入到文档,如果是Word或Excel就提取其中的文本转换为txt临时文件,将实际文件位置字段和临时文件内容字段加入到文档然后删除临时文件),然后再次获取系统时间作为建立索引结束时间,显示建立索引的时间、文件的总数和建立索引的文件数。 4.1.2 建立网络索引 创建网络索引流程:网络机器人创建spider类的对象,获取线程个数后开始下载,创建文件时将网页文件的网址写入该文件的第一行,当点击按钮取消或将网站资源下载完毕时,开始对下载的文件建立索引。 4.1.3 查询关键字 查询关键字流程:用户输入关键字然后开始查询,获取系统时间作为搜索开始时间,从索引文件内容字段搜索关键字,获得结果形成一个数据集,获取系统时间作为搜索结束时间,使用循环将数据集显示出来,如果是本地索引对得到的结果经过处理显示,如果是网络索引显示成超链接,最后显示搜索用时和找到的结果数。 4.2 总体结构设计 根据需求分析搜索系统模块可分为5个模块:系统管理模块、操作功能模块、索引设置模块、错误日志模块和帮助模块。操作功能模块包含建立本地索引、建立网络索引和搜索关键字三个重要功能,模块结构图如图4.1所示。 图4.1 系统模块结构图 4.3 模块设计 系统模块功能介绍: a) 系统管理模块:保存得到的结果信息,清空结果信息,程序长时间运行时可隐藏至后台执行,退出系统。 b) 操作功能模块:包括建立本地索引、建立网络索引和搜索关键字三个重要的功能。 1) 建立本地索引:可以对本地硬盘上的文本数据建立索引,建立索引的文件信息和进度实时的显示出来,最后显示文件总数、建立索引的文件数以及用时。 2) 建立网络索引:可以从感兴趣的站点使用spider多线程(自行选择线程数)下载网页文件并建立索引。下载网络资源的网址信息、建立索引的文件信息、每秒处理url个数等实时的显示出来,最后显示文件总数和建立索引的文件数。 3) 搜索关键字:对建立好的索引文件进行关键字查询。显示文件的位置或网址,查询到的结果个数和用时。对得到的结果可以直接打开文件或打开站点。 c) 索引设置模块:选择在建立本地索引时所建立索引的文件的类型。 d) 错误日志模块:让用户了解建立网络索引时发生的异常,在发生异常时将异常信息写入日志文件。 e) 帮助模块:“关于”介绍版权,版本号以及技术支持的邮件地址,帮助文档介绍软件的基本操作方法。 5 详细设计 详细设计即过程设计,通过对结构表示进行细化,得到软件的详细的数据结构和算法,也就是完成软件的各个组成部分得到一个完整的系统。 5.1 界面设计 5.1.1 主框架设计 为了实现软件友好的界面和方便的操作性,软件的整体设计框架界面分为标题栏、菜单栏、功能操作区、结果显示区、状态栏5个部分,如图5.1所示。 图5.1 窗体框架图 软件所有的功能选择都在菜单栏中。选择不同的“操作功能”功能操作区会发生相应的变化,是通过使用panel切换实现功能操作区变化的。因为功能大部分需要显示结果,所以结果显示区使用了一个控件richtextbox,所有的结果均显示在richtextbox上。状态栏显示正在处理的信息。软件没有必要最大化和最小化(被软件的隐藏功能代替)所以标题栏上只有关闭框。 5.1.2 主菜单设计 主菜单包括“系统”、“操作功能”、“索引设置”、“日志”和“帮助”。 “系统”菜单的下拉菜单包括“保存结果”、“清空结果”、“隐藏程序”和“退出”。 “操作功能”菜单的下拉菜单包括“建立本地索引”、“建立网络索引”和“查询关键字”。 “索引设置”菜单的下拉菜单包括“索引文件类型”。 “日志”菜单的下拉菜单包括“读取错误日志”和“清除错误日志”。 “帮助”菜单的下拉菜单包括“关于P-Searcher桌面搜索系统”和“帮助文档”。 5.2 模块功能设计 5.2.1 本地索引模块设计 本地索引模块界面比较简单,如图5.2所示。包括选择文本库资源的“文件目录”和要建立索引的“索引目录”,因为在本地资源建立索引前已经得到文件的个数,所以可以通过进度条控件在建立索引的过程中动态的显示建立索引的进度。 图5.2 本地索引模块界面 richtextbox和状态栏实时显示结果,最后将获得两次系统时间之差显示为建立索引用时,并且显示目录下文件的总数和创建索引的文件个数。 使用Lucene建立索引的过程可分为四步:提取文本,构建文档Document,分析,建立索引。 Word文件转换txt文件的程序流程图如图5.4所示。 图5.4 Word文件转换txt文件的程序流程图 Excel文件转换txt文件的程序流程图如图5.5所示。 图5.5 Excel文件转换txt文件的程序流程图 建立完索引时进度条全满,按钮显示“完成”,进度条的恢复是靠一个Timer控件实现的,当进度条满了后触发Timer经过1.5秒后将进度条的值设为0,按钮的名称变回“开始”。 5.2.2 网络索引模块设计 网络索引模块界面复杂一点,如图5.6所示。“URL地址”中可以输入感兴趣的站点的网址;“下载路径”中可以选择将网页下载到哪个目录下;“索引路径”即是存放索引的目录;默认情况下 “是否生成索引”单选框焦点在“否”上此时只能下载不能建立索引,不能选择“索引路径”,当设置为“是”时就可以建立索引了,自动在下载完整个网站资源后建立索引或者取消下载建立索引;“线程数”设置现在网页资源的线程个数。 图5.6 网络索引模块界面 网络索引的建立过程和本地索引建立的过程相似,首先使用网络机器人将网络资源下载到本地,下载的同时将网址写入到网页文件第一行中并将出现异常以流的形式追加到error.log文件中,建立索引的时候多加入一个host字段用来记录网址信息。因为下载网络资源的时候会下载图片等不是文本的文件,所以需要判断一下是否是网页文件建立索引即可,下载的过程和建立索引结果在richtextbox和状态栏上实时显示。 下载网页资源使用的是网络机器人,网络机器人又称为Spider程序,是一种专业的Bot程序,用于查找大量的Web页面。它从一个Web页面上开始执行,一般选择的是站点的首页地址,然后通过其超链接再访问其他页面,如此反复理论上可以扫描互联网上的所有页面。Internet是建立在很多相关基础上的,而更复杂的协议又建立在系统层协议之上。Web就是建立在HTTP ( Hypertext Transfer Protocol ) 协议基础上,而HTTP又是建立在TCP/IP ( Transmission Control Protocol / Internet Protocol ) 协议之上。所以网络机器人本质上是一种基于Socket的网络程序。网络机器人必须从一个网页迁移到另一个网页,所以必须找到该页面上的超连接。程序首先解析网页的HTML代码,查找该页面内的超连接然后通过递归和非递归两种结构来实现Spider程序。建立网络索引的过程如图5.7所示,Spider向感兴趣的站点服务器发送请求,服务器收到请求后将网页送给Spider,Spider创建网页,将网页用Lucene生成索引文件。 图5.7 建立网络索引过程 5.2.3 查询关键字模块设计 查询关键字模块界面如图5.8所示。本模块包括本地索引的查询和网络索引的查询。“索引路径”是指已经建立好的索引的目录;“关键字”指要查询的关键字词;“打开文件设置”是为了设置是否将搜索到的全部结果打开,可以选择不打开文件只将结果显示在richtextbox上,选择打开文件可将搜索到的文件批量打开。“索引类型”可选择网络或本地,当查询的是网络索引时可将网址以超链接的形式显示在结果中。 图5.8 查询关键字模块界面 查询的过程如图5.9所示。 图5.9 查询关键字过程 如果是网络索引自动识别网址显示为超链接,可直接在软件中打开网址。 如果是本地索引将文件路径用红色显示并加上下划线便于识别,可选中后使用鼠标右键打开。查询的响应时间要求在秒级范围内,关键字可以使用AND、OR和通配符,但是通配不能出现在第一个位置。 5.2.4 索引设置模块设计 索引设置模块界面如图5.10所示。用来设置建立本地索引时要建立索引的文件类型,将设置的结果写入ini文件中。 图5.10 索引设置模块界面 ini文件中只有一个字段type有八个关键字分别txt、html、php、asp、aspx、jsp、Word、Excel它们的值为true或false,true表示需要被索引,false表示不需要被索引。建立索引的时候先读取ini文件决定对何种类型的文件建立索引。打开设置对话框时先读取ini文件显示以前的设置,选择好后点击确定按钮进行设置。文件类型设置索引类型时要慎重,当建立Word、Excel文件的索引时需要消耗大量的时间,由于建立索引时获得Excel的行数和列数,将单元格的内容一行一行循环输出,如果Excel的数据量太大会使计算机处理速度变慢甚至死机,所以设置索引类型时需要注意。 5.2.5 错误日志模块设计 当下载网络资源产生异常时,即下载网页文件时线程作用在同一个文件上或URI(统一资源标识符)是无效的,以流的形式追加文本到日志文件中。 日志模块可以将下载网络资源时生成的异常文件读取到richtextbox中,也可以将生成的日志文件删除。读取日志文件时以流的形式打开日志文件,逐行读取内容将内容追加显示出来。 5.2.6 系统管理模块设计 系统管理模块有保存结果、清空结果、隐藏程序和退出功能。保存结果可以将richtextbox中的内容保存到txt文件中,便于以后分析查阅。 清空结果可以将richtextbox中的内容清空。在下载网络资源或对大量文本信息建立索引时会消耗较长的时间,“隐藏程序”可以隐藏应用程序到后台执行,需要进行操作时在Windows状态栏中找到程序图标使用上下文菜单显示程序即可。隐藏程序使用了notifyIcon控件,在控件Icon属性设置了图标并加入了上下文菜单添加显示程序的功能。 5.2.7 帮助模块设计 帮助模块分为“关于P-Searcher桌面搜索系统”和“帮助文档”。 “关于P-Searcher桌面搜索系统”有版权信息和技术支持,制作gif格式的动画图片动态显示系统的名称,可以发送E-mail获得技术支持,使用System.Diagnostics.Proces s.Start("mailto:pxl82 1102@126.com")方法启动outlook进程,如图5.11所示。 “帮助文档”是以静态网页形式提供基本的操作步骤,可以使用户在比较短的时间内掌握本搜索系统的使用。“帮助文档”是html格式文件,打开帮助文档时将自动启动浏览器显示软件的基本功能以及如何操作。 图5.11 “关于”对话框界面 6 运行与测试 为了保证软件的质量和可靠性,必须对软件进行测试分析。软件测试就是为了发现错误而执行程序的过程,测试是通过具有代表性的测试用例去检测软件是否存在问题。 6.1 测试用例 本软件是一个桌面搜索系统,包括建立本地索引、建立网络索引和搜索关键字功能,所以需要进行本地环境和网络环境的测试。 由于复杂文本格式文件需要先转换成临时纯文本文件,然后对临时纯文本文件建立索引,会消耗较长的时间,所以建立本地索引需要两个测试用例,一个是包括所有可建立索引文件格式文件的文件夹,但是其中需要转换的文件不多,另一个是大部分是复杂文本格式文件的文件夹。建立网络索引的测试用例一个是真正的网站,一个是本地搭建的模拟网络环境。 建立两个本地文件夹,一个存放各种文本格式的文件,包括txt、html、php、asp、aspx、jsp、word、excel,另一个主要存放Word文件,用来测试对纯文本文件和复杂文本格式文件建立本地索引。www.jxjq.org网站和本地搭建的php+apache+mysql模拟网络环境用来测试网络资源下载和建立网络索引。 测试所使用的计算机是笔记本电脑,CPU是celeronM主频1.4GHz,内存512M,硬盘4200转,Windows XP SP2操作系统。 6.2 测试分析 对本地一个1.63M存放各种文本格式的文件夹建立索引,共有文件82个,因为其中包括网页含有各种图片,所以对14个文件建立了索引,建立本地索引用时12秒。使用建立的索引文件搜索关键字“人民”用时0.0468750秒,达到了软件的性能需求。由于有两个测试用例,其中第二个测试用例处理过程长并且包含文件数量多更具有代表性,所以本测试用例没有截图。 对本地一个3.5M的文件夹建立索引,共为37个文件建立了索引,其中32个是具有复杂文本格式的Word文件,由于Word文件转化成txt文件需要消耗大量的时间,所以建立索引用时43.7343750秒,也达到了软件的性能需求。将建立索引的文件的信息实时显示了出来,结果如图6.1所示。 图6.1 建立本地索引结果 下面是从37个文件建立的索引文件中搜索关键字“超市”的结果,如图6.2所示,可以看到得到结果的时间很快只用了0.0625000秒。搜索到的结果显示为红色且有下划线。 图6.2 搜索关键字结果 测试网络索引用例曾经在www.jxjq.org测试过,测试结果达到了预期效果。使用本地搭建的php+apache+mysql模拟网络环境更为方便一些。所以展示的是建立模拟网络环境的用例,下载网页资源的过程如图6.3所示,下载时设置了4个线程,可看到下载时信息实时显示在richtextbox和状态栏里。 图6.3 下载网络资源过程 建立索引的过程如图6.4所示,共有文件51个,为14个网页文件建立了索引。建立索引使用了0.4218750秒。 图6.4 建立网络索引 因为使用的是模拟网络环境是建筑行业网站,所以搜索关键字“建材”可以看到搜索到的结果包括下载到本地的位置信息和网页的网址,搜索用时0.0625000秒。网址已经显示为超连接可以直接打开网站。搜索结果如图6.5所示。 图6.5 搜索网络索引结果 经过测试发现每次搜索使用的时间不相同,可能是和系统正在运行其它程序有关。基本上搜索的速度还是合乎要求的。通过上面的截图可以看到网址以超连接的形式显示,本地文件显示为红色并且带有下划线。点击超链接可以自动打开浏览器访问网址,选中文件路径点击鼠标右键可以通过上下文菜单打开文件。测试结果表明软件基本达到了预期的效果。在测试过程中发现了一些错误,经过修改调试已经解决。 否 结束 开始 启动Word进程 网络服务 搜索系统 应 用 接 口 二 次 开 发 磁盘索引文件 索引引擎 文本处理引擎 查询引擎 索引设置模块 错误日志模块 搜索关键字 建立网络索引 建立本地索引 基于Lucene的桌面搜索系统 公共语言规范 其他 C# C++ VB 菜单栏 结果显示区 功能操作区 标题栏 状态栏 搜索 关键字 结果 将变量保存为txt文件并释放资源 列数加1 否 是否小于使用列数 从第一行第一列读取单元格内容 是 行数加1 将Range转换类型追加到变量 是 是否小于使用行数 获取工作表使用的行数和列数 Worksheet接口获取工作表 是 是否存在工作表 否 显示 纯文本文件 建立 索引 临时txt文件 复杂文本格式文件 路径 遍历 打开 转换 文件数据流 网络数据包 Spider 创建 网址 访问请求信息 操作功能模块 帮助模块 系统管理模块 结果 查询 用户 队列 搜索引擎 接口 查询解析器 索引文件 索引文件 dotlucene的DLL 网页 网页 请求 Spider WWW 由Sheets接口取得工作表数量 索引文件 本地文本数据 网络服务器数据 Spider 下载 取得Excel文件工作表Sheets接口 读取此行列单元格数据到Range 开始 启动Excel进程打开Excel文件 结束 释放资源 退出Word 根据新文档接口类型保存txt文件 打开Word返回新文档接口 根据接口类型打开Word 得到Word文档接口类型 商品名称 Visual Studio .NET 公共语言执行环境 基础类函数库 数据和XML 用户界面 用户
/
本文档为【基于C#的桌面搜索系统文档搜索系统开发文档】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索