首页 > 范文大全 > 正文

中文智能搜索引擎的设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇中文智能搜索引擎的设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:大数据时代网上信息量快速增长,智能搜索系统可以帮助用户快速定位查询的资源。文章主要探讨了搜索引擎的原理,阐述了使用Lucene与Ajax实现智能搜索的方法。对Lucene的搜索引擎模型、数据库设计、模块设计进行了详细分析,对构建搜索引擎原理的关键问题进行了研究。

关键词:Lucene;异步更新;Ajax;搜索引擎

计算机技术和互联网技术迅速发展,造成的互联网络泡沫迅速膨胀,给搜索结果精确程度带来了巨大的挑战。想要把如此庞大而又复杂的网络环境中对自己有用的信息提炼出来,必须使用搜索引擎来完成。想要很方便的构建一个根据自己的需要而专门定制的搜索引擎,可以通过本设计所使用的。本文阐述了较为简单的中文智能搜索引擎.的开发过程的关键问题,对目前的搜索以及编程方面的新技术进行了研究。

1 开发环境

中午智能搜索引擎采用微软提供的NET是一种面向Web服务的开发平台,由.NET企业服务器、框架、Web服务等几部分组成,可以提供较为全面的解决方案。因此在本系统的开发中,采用ASRNET作为本设计的开发工具。我们选择了微软公司的.NET作为开发平台。同时,选择C#作为开发语言,使用Microsoft Visum 2005作为开发平台;使用Microsoft SQL Server 2005作为后台数据库。使用Ajax程序对搜索引擎系统进行优化,可以实现浏览器页面的局部刷新功能。Lucene作为一个高性能的信息检索工具库,能够为搜索引擎应用提供一个工具包,同时配合完成,它可以嵌入到程序中为程序提供关键词搜索功能,也可以用来对文档建立索引。

2 构建搜索引擎原理

搜索引擎的工作过程分为3个步骤:一是抓取网页,二是建立索引数据库,三是搜索索引数据库。在全文搜索中,在程序之中预先定义一个或者一定地址范围内网站,由程序中的Spider程序模块从这个预先定义的网站开始采集网页资料,并且沿着这个(或这些)网站上的链接进行跳转,并循环该过程。Spider采集的网页,首先要进行程序分析过程,根据预先给定的算法运算后,其结果添加到索引数据库中。而用户日常平时进行的全文搜索引擎,呈现给用户的仅是一个检索的界面。其工作过程是,首先根据用户检索的内容提取关键词,然后搜索引擎根据该关键词在数据库中找出与其相符的所有的相关网页,最后按照预先设定的规则,将得到的网页列表结果显示出来。由于存在各种各样的搜索引擎,它们预先设定的规则以及索引数据库不尽相同,因此用户看到的最后搜索结果也因而不同。

根据预先设定的初始网页,Spider程序可以自动的访问网络,对这个页面进行访问,并且能够提取该网页上的所有URL。而且,Spider程序还能够依次跳转到URL所对应的其他页面,继续提取这个二级页面上的URL,最后不断的重复这个过程,直到达到其程序限定的级数停止。Spider程序爬出的所有网页都经过分析索引程序对其进行分析,程序会提取网页页面的相关信息,这些信息包括网页的网址,网页内容的所使用的编码类型,网页代码头中所包含的网站关键字等等一系列信息。然后根据提取的这些相关信息构造网页索引数据库,并采用预先设定的排序算法对其进行排序,因此当用户进行搜索时,搜索程序会检测用户所输入的关键词,然后根据这个关键词查找服务器后台的索引数据库,将所有符合这个关键词的相关网页都提取入栈。最后,页面生成系统将调用包含了查询到的网页的栈,提取栈内网页的地址和含有高亮关键词部分的页面摘要内容整合成一个页面呈现给用户。由于每个搜索引擎的网页索引数据库不同,而且搜索引擎只能搜到数据库里储存过的内容,所以用户在不同的搜索引擎下进行搜索,所得的结果也不会完全相同。

3 搜索引擎的设计与实现

3.1 搜索引擎模型

模型包括爬虫、索引生成、查询及系统配置部分。爬虫包括:网页抓取模块、网页减肥模块、爬虫维持模块。索引生成包括:基于文本文件的索引、基于数据库的索引。查询部分有A]ax、后台处理、前台界面模块如图1所示。

3.2 数据库设计

本课题包含一张用于存放抓取回来的网页信息如表1所示。

3.3 模块设计与实现

该模型按照功能划分了3个部分,一是爬虫抓取网页部分,二是从数据库建立索引部分,三是从前台页面查询部分。从一个或几个初始网页开始,获得初始网页上的URL,并加入队列,直到满足系统限定的诸如域名空间或者是网页抓取级数的停止条件。实际应用中主要以绝对地址和相对地址来的形式来表现获取到的URL。一个准确的、无歧义的Internet资源的位置,包含域名(主机名)、路径名和文件名叫做绝对地址。但是相对地址只是绝对地址的一部分。得到的信息包括网页标题、内容、链接、抓取时间等,然后将这些信息经过系统程序算法的筛选,保存到数据库中。程序计算后去掉多余的HTML标签、Javascript等多余信息,如果不经过处理就会使搜索变得不精确。

想要爬虫程序能继续运行下去,就得抓取网页上的其它URL,所以要用正则将这个网页上的所有URL提取出来放到一个队列里。通过多线程技术用同样的方法,依照队列次序继续抓取网页。

Lucene提供了Document,Field,IndexWriter,Analyzer,Directory五个基础类对文档进行索引。一个Document对象由多个Field对象组成。Document用来描述包括HTML页面、电子邮件或者是文本文件等类型的文档。如果用数据库记录来理解每个Document对象,那么每个Field对象就是记录对应的某个字段。Analyzer类是一个有多个实现的抽象类。在索引文档之前,需要先由Analyzer进行分词处理。可以针对不同的语言和应用选择适合的Analyzer。Analyzer把分词后的内容交给IndexWriter建立索引。

方便用户查询是所有搜索引擎的目标。在查询页面输入关键字后提交给系统,由程序处理后以列表形式显示。在使用Lucene的搜索引擎中,需用到Lucene提供的方法,可从所建立的索引文档中得到结果。

在配置网页爬虫程序时,预先将一个一个有效的URL输入在控制面板里,然后由这个URL开始依照级别遍历相关的链接,然后在网页数据库里经这些连接存贮下来,然后就由索引生成程序读取,对每条记录生成索引记录,存放于生成的索引库文件里。生成索引需要调用类。索引生成后可以直接在查询页面上输入关键字,对系统生成的索引库的查询,并反馈信息,还可以精确定位到信息的出处。

4 结语

在这个网络泡沫迅速膨胀时代,网络中有成千上亿个网页,仅仅通过人工方式对网页进行收集和整理的工作量的巨大难以想象的。所以通过智能搜索来收集网络上的网页资料,由系统建立索引数据库来代替庞大的、不可能完成的人工操作。用户在浏览网页需要搜索相关内容的时候,就会通过选择关键词进行搜索,智能搜索引擎就需要为用户显示包含该关键词的所有网页呈现给用户,程序需要根据索引数据库中所存储词条与关键词的相关度进行排序。这个过程需要一系列的复杂的算法进行大量计算,从而将用户需要的信息显示在反馈的网页上面,这样用户就能快速的得到检索结果。