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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

智能搜索引擎的设计与实现
[摘要]探讨搜索引擎技术的概念与原理,分析了各个部分的功能及设计要点。

通过设计并实现了一个搜索引擎,探讨索引擎的设计与实现的方法。

[关键词]搜索引擎;网络机器人;词语切分;相关度
一、前言
搜索引擎技术,是当代计算机技术中的一个热门领域。

元搜索引擎常常作为搜索引擎原理及技术的学习案例,但元搜索引擎并不具备典型搜索引擎所有主要元素,参考价值有限。

本文分析了搜索引擎原理及技术,设计并实现了一个完整的页面搜索引擎,着重研究了搜索引擎在智能化、人性化方面的技术。

二、搜索引擎概述
搜索引擎是指能够响应用户提交的搜索请求,返回相应的查询结果信息的技术和系统,按工作原理来划分,搜索引擎有四种基本类型:
(一)分类目录将网站系统地分类整理,提供一个按类别编排的网站目录。

在每类中,排列着属于这一类别的网站的站名、网址链接、内容提要,以及子分类目录,如同电话号码簿。

(二)页面搜索允许根据关键字进行全文检索,而不必知道信息位于哪个站点。

页面搜索引擎已经成为主流,其中Google是全球最大的页面搜索引擎,而Baidu则在中文搜索领域处于领先地位。

(三)图形图像搜索一种新兴的搜索引擎,用于搜索图形图像等多媒体信息。

(四)元搜索元搜索引擎并不收集网站或网页信息,通常也没有自己的数据库,而是将搜索请求同时发送到其它搜索引擎,然后对反馈结果进行再处理。

二、页面搜索引擎原理
页面搜索引擎通过Robot程序自动在互联网中访问Web站点,搜集和发现信息,提取站点上的网页,并根据网页中的链接进一步搜集其它网页。

页面搜索引擎主要包括4个模块:搜索器,索引器,检索器,用户接口。

从信息学的角度看,分别对应:信息的获取,信息的表示,信息的检索,信息的展示。

(一)搜索器搜索器即Robot,一般有两种搜集策略:
1.从一个起始URL集合开始,以广度优先或深度优先方式在互联网中发现信息,并从信息中获取更多URL。

2.将Web空间按照域名、IP地址或国家域名划分,对子空间的穷尽搜索。

一个完善的Robot能搜索HTML、XML、FTP文件等多种信息,并采用分布式、并行计算技术提高处理速度。

如Yahoo的Robot程序每天获取超过500万个新网页。

(二)索引器索引器对Robot获取的信息进行准确和细致的领域划分,将信息放入相应的领域数据库。

索引器为信息建立索引项,用于表示文档以及生成文档库的索引表。

索引项有客观索引项和内容索引项两种:客观项与文档的语意内容无关,如作者名、URL、更新时间、编码、长度、链接流行度(Link Popularity)等;内容索引项是用来反映文档内容的,如关键词及其权重、短语、单字等。

每个索引项具有一个权值,以表示该索引项对文档的区分度,同时用来计算查询结果的相关度。

获得权值的方法可采用统计法、概率法和语言学法等。

(三)检索器检索器根据用户的查询在索引库中检索文档。

并进行文档与查询的相关度评价,对输出的结果进行排序。

最简单的检索算法只允许用户输入一个关键词,而智能检索算法基于自然语言理解,从用户输入的自然语言中分析用户的查询意图。

更普遍的做法则是允许用户输入多个关键字,允许使用与、或、非的逻辑表示。

一个完备的检索器一般具有以下功能:
1.搜索同义词
应该强调的是搜索“同义词”而不是“近义词”或”相关词”。

因为词语的近义词或相关词关系并不确定,对它们的搜索往往会带来太多的无用信息,与用户的目的背道而驰。

2.英文单词的大小写匹配
多数单词对大小写的要求并不严格,但也有例外。

例如“SET”与“set”完全不同,“SET”是一个安全协议,而“set”表示“设备、装置”。

3.复合词排除
简单的关键词匹配将带来大量信息“垃圾”。

例如查询“中国”,可能返回“发展中国家”相关信息。

较好的做法是进行复合词排除,即在查询“华人”时,将包含“中华人民共和国”却不包含单独的“华人”这个词的信息排除掉。

4.排名算法
排名算法有多种,最著名的莫过于Google的PageRank算法。

其实,无论Google的PageRank,还是Baidu的“超链分析”,其算法都相似:统计每个网页被其它网页链接指向的情况,次数越多则级别越高,排名也就越靠前。

(四)用户接口
用户接口的作用是输入用户查询、显示查询结果、提供用户相关性反馈机制。

用户输入接口分为简单接口和复杂接口,简单接口只提供用户输入查询串的文本框;复杂接口可以支持逻辑运算(not、and、or)、域名范围(如.edu、tom)、出现位置(如标题、正文)等。

三、搜索引擎的设计
基于以上对搜索引擎原理的分析,笔者设计并实现了完整的搜索引擎,包括了搜索引擎整个运作过程所需的各个部分。

主要采用ASP+SQL Server 2000,其中检索器和用户接口是实现的重点,并着重实现了一些“智能”:
(一)搜索器
搜索器采用PHP实现,主要的考虑是PHP具有大量的文件函数和字符串函数,便于信息的存取和分析。

搜索器支持对http和flp的搜索,输入一个起始URL,使用fopen函数打开相应的页面并存储在本地文件系统中。

分析页面信息,从中提取出所有的超链(Hy.perlink),清除掉重复的超链并将剩下的超链放入临时数组中。

以临时数组中的URL作为起始URL,重复以上的步骤。

最终实现深度最多为3层的深度优先方式信息搜索。

(二)索引器
设计索引器的主要困难是对信息的分类和建立主观索引项,这些困难包括:
1.信息的类别可能是交叉,有些信息所属类别并没有清晰的划分界限。

2.很多信息即使是人也容易混淆,难以用计算机进行理解和自动处理。

3.词语的切分也是一个难点,特别是在中文搜索上。

词语切分系统把词语分成虚词、实词,过虑虚词,形成一个反映文章整体内容的实词集。

北京大学的“汉语词语切分与词性标注软件”,其切词的准确率对封闭测试语料可达96.06%,对开放测试语料可达到95.82%。

词语切分需要构造庞大、全面的虚词、实词表,而且容易出现谬误。

例如,处理人名“阿的江”时:“阿”、“的”是虚词,“江”是实词,这样实词集中只有“江”字,显然是错误的。

解决这个问题,除了要有完备的虚词、实词表,更重要的是对上下文的理解。

(三)检索器
检索器实现了以下几种功能:
1.支持对关键字出现在不同位置时的搜索
搜索关键字可以指定位置,包括标题、作者名、摘要、原文四处,这样可以大大缩小搜索范围。

2.支持关键字的逻辑运算(not,and,or)
其中or运算用“I”表示,and运算用空格表示,not运算则是在“关键字排除框”中输入。

3.查找同义词
当用户需要查找同义词时,搜索引擎分析用户输入的关键词以及它们之间的逻辑关系,从同义词表中找出各个关键词的所有的同义词并保持它们之间原有的逻辑关系,最后形成一个完整的搜索条件。

4.英文大小写匹配
允许用户选择自己输入的英文关键字是否严格按照大小写进行匹配。

5.复合词排除
通过建立复合词表,在搜索关键字时排除其对应的所有复合词。

这样在用户输入“中国”时不会返回“发展中国家”相关信息,更符合用户的意图。

(四)用户接口
本智能搜索引擎通过对用户的个性化服务来跟踪用户的搜索行为,研究用户的搜索习惯和兴趣,把它们作为对搜索结果进行相关度评分时的重要参数。

个性化服务方面:
1.采用用户注册的机制,作为个性化搜索服务的基础,允许用户对搜索喜好、排名权值等进行设置。

2.搜索引擎总保持用户前一次的使用时对搜索引擎的可选项的设定,包括搜索信息类别、是否搜索同义词、编码形式、是否排除复合词等,便于用户操作。

3.对用户行为进行分析,统计分析当前用户个人历史关键字,以及全体用户的历史关键字。

4.跟踪用户对搜索结果的使用情况,记录信息使用次数。

相关度评分方面:
主要的参数包括用户(包括当前用户和全体用户)历史关键字、当前用户对该页面所属领域的感兴趣程度、输入的关键字在出现在信息中的位置、该信息被使用的次数。

各参数设定相应权值,用于计算相关度评分。

四、搜索引擎的实现
搜索引擎的实现,主要包括数据库设计、Robot、检索器、索引器、用户接口等。

本案例采用ASP编写,但Robot程序用的是PHP编写,主要是考虑到PHP 对文件的处理比ASP更容易实现。

1.数据库设计
设计了页面信息表、同义词表、用户信息表、关键字表、关键字集表、关键字统计表、关键字临时表、复合词表、查询结果表等9个数据库表结构。

2.Robot的实现
Robot程序采用PHP编写,程序的核心代码是searchweb($filepath)函数,其参数$filepath是搜索的起始URL,例如:http://.www edu263.net/features /feature010416.htm。

从起始页面$filepath开始不断获取页面内容及页面中的超链接。

限于篇幅,数据库设计及源代码不在此一一列举。

搜索引擎的设计是一个庞大的系统工程,本文只是实现了各主要功能模块,可以作为一个探讨和验证的原型,不断扩充研究。

相关文档
最新文档