搜索引擎技术评述

来源:互联网 发布:vb计算器编程 编辑:程序博客网 时间:2024/04/29 01:05
搜索引擎技术评述 一、 搜索引擎及其分类  搜索引擎是一种浏览和检索数据集的工具。传统搜索的范围基本上局限于企业数据库,增值网络服务(VAN),桌面文件。但Internet的迅猛发展,使得搜索范围扩大到整个网络。面向Internet的搜索引擎是从各种网络资源中浏览和检索信息的工具。这些网络资源包括:Web、FTP文档、新闻组、Gopher、E-MAIL,以及多媒体信息等。按照搜索引擎提供的功能和使用的技术来分,目前Internet上的搜索引擎大致可以分成三类: 1、 一般搜索引擎:利用网络蜘蛛对Internet资源进行索引,一般无须人工干预。所谓的网络蜘蛛是一个程序,通过自动读取一篇文档遍历Web的超链接结构,从而递归获得被引用的所有文档。不同的搜索引擎搜索的内容不尽相同:有的着重站点搜索;而有的搜索可能包括Gropher、新闻组、E-MAIL等。一般搜索引擎的性能主要取决于:索引数据库的容量、存放内容、以及更新速度,搜索速度,用户界面的友好程度以及是否易用等。这类的引擎的代表包括国外的:Alta Vista(http://www.altavista.digital.com) ,InfoSeek(http://www.infoseek.com)等。 2、 元搜索引擎:接受一个搜索请求,然后将该请求转交给其他若干个搜索引擎同时处理。最后对多个引擎的搜索结果进行整和处理后返回给查询者。整和处理包括诸如消除重复、对来自多个引擎的结果进行排序等。 3、 专用引擎:譬如人物搜索、旅行路线搜索、产品搜索等。这些搜索都依赖于具体的数据库。   引擎的其他分类方法还有:按照自动化程度分为人工与自动引擎;按照是否有智能分智能与非智能引擎;按照搜索内容分文本搜索引擎、语音搜索引擎、图形搜索引擎、视频搜索引擎等。 二、 搜索引擎面临的挑战  网络信息量迅猛增加。人工无法对它们进行有效的分类,索引和利用。现在的Internet网络为实现多种交互和交易提供了电子通信平台。对企业而言,他们需要处理比以往更多的信息,传统处理方式已经不能承受如此重负。这使得决策缓慢,效率低下。对普通用户而言,简单的关键字搜索,返回的信息数量之大,往往让用户无法承受。  网络信息无序组织的本性。Internet用户面对的是非常多的随机的未良好组织的信息。从如此庞杂的信息海洋中取出对用户最有用的信息,是搜索引擎面临的一项挑战,而信息的有序化组织也是搜索引擎高效工作的前提。  信息有用性评价困难。一些站点在网页中大量重复某些关键字,使得容易被某些著名的搜索引擎选中,以期借此提高站点的地位,但事实上可能没有提供任何对用户有价值的信息。搜索需要辨识种种假象,通过采取各种搜索策略,真正挑出有用的信息。  网络信息日新月异的更变。人们总是期望挑出最新的信息,然而网络信息时刻变动,实时搜索几乎不可能。就是刚刚浏览过的网页,也随时都有都有更新、过期、删除的可能。一方面信息庞杂,另一方面又剧烈变化,好的搜索引擎必须在速度和效率上进行仔细的权衡。  信息媒体多样化。迄今为止,搜索对象主要是文本。多媒体技术的发展,对搜索引擎提出了更多的要求。人们期望引擎不仅能挑出自己需要的文章,还能挑出自己所关心的图片,电影,音乐等。  带宽等其他因素的制约。搜索引擎的关键问题之一就是如何将网络信息收集,整理,也就是如何将网络信息有序化。为此,搜索引擎需要定期不断的访问网络资源。然而遍历如此庞杂的网络本身是一件非常困难的事。目前网络带宽不足,网络速度不够理想,使得搜索引擎索引网络资源的速度较慢。举个例子,假定网络连接良好,连接一个网站需要三秒钟,那么处理一个B类网段如清华的166.111.0.0——166.111.255.255共65536个IP地址就需要65536*3秒=1996608秒=54.61小时,也就是说,即使是在网络速度比较快的情况下,把整个B类网段遍历一次,就需要两天多的时间。 三、 搜索引擎工作机理  一般的,搜索引擎通过某种界面跟用户交互,接受用户查询特定信息的请求,然后对用户查询请求进行分析,譬如将查询请求分解成若干关键字,在分析用户请求之后,就在索引数据库中不断进行匹配,挑出符合条件的信息,同时按照匹配程度的高低对结果进行排序,最后将排序后的结果返回给用户。因为网络信息时刻变动,所以搜索引擎在后台通过通过所谓的网络蜘蛛漫游Internet。它们负责收集网络信息,自动对收集到的信息进行分析,并按照一定的格式,将收集到的信息保存到本地索引数据库中。  搜索引擎必须解决的两个关键问题:一是如何建立索引数据库;二是如何分析、匹配用户的查询。建立索引数据库要用到网络蜘蛛。初始化时,它们一般指向有一个URL(Uniform Resource Locators)池。在遍历Internet的过程中,按照深度优先或广度优先或其他其他启发式算法从URL池中取出若干URL处理,同时将遇到的未访问的URL放入URL池中,这样处理直到URL池空为止。在访问页面的过程中,完成对Web文档的索引。对文档索引可能根据文档的标题、首段落甚至整个页面内容进行。这取决于搜索服务的数据收集策略。蜘蛛在漫游的过程中,根据页面的标题,头,链接等生成摘要放在索引数据库中。如果是全文搜索,还需要将整个页面的内容保存到本地数据库。为了缓解网络拥塞,可以选网络负载较轻的时候进行网络漫游。  用户最关心的是搜索结果最能够满足自己的需要。尤其是当引擎可以获得的信息资源非常多的情况下。目前搜索引擎仍不能很好的理解人的查询请求。一种常见的策略是,将用户的查询请求分解成若干关键字,根据这些关键字计算Web文档跟用户请求的匹配程度,从而挑出若干匹配的文档。匹配程度的衡量准则很多:一种是根据根据关键字在文档中出现的频率确定它对用户请求的匹配程度。另一种页面计算匹配程度的方法是计算关键词出现次数和页面总词数之比。其他一些方法还考虑了页面其他一些性质,如指向它的链接数目以及它所引出的链接数目、关键词在文档中出现的位置。不同的搜索引擎采取的匹配策略是不同的。Google是一个表现出色的搜索引擎。在匹配用户请求的过程中,它考虑到了关键词的频率、位置、甚至格式等信息衡量文档对用户请求的匹配程度。  但是基于关键字匹配的搜索技术有较大的局限性:首先,它不能区分同形异义。其次,不能联想到关键字的同义词。现在一种有生命力的搜索引擎技术就是基于内容的搜索引擎。基于内容的搜索不是根据字形,而是试图理解用户的请求,同时根据文挡的内容选出符合用户要求的文档。所谓的理解包括:用户查询的理解和文档内容的理解。它允许用户以非常自然的形式提出查询请求,引擎采取语义网络、汉语分词技术等分析用户的请求,了解用户真正的需求。对文章内容的理解是一个复杂课题。简单的内容理解可以根据重要词语出现的频率来判断。如果某一领域的词汇在一篇文章中出现的频率较高,那么可以大致判断文章的主题。 四、 搜索引擎设计与开发  搜索引擎设计追求目标是:从可以获得网络资源中中检索出对用户最有价值的信息。具体而言,设计一个好的搜索引擎应该考虑如下几点: 1、 线信息索引。如上所述,信息动态更替无时无刻不在进行,即使在搜索过程中,文档会被添加、删除、改变。需要精心设计网络蜘蛛,自动完成在线索引。 2、 有衡量文档相似度的合理标准。能够根据与用户查询相匹配的程度,对文档排序。 3、 具有跨平台工作和处理多种混合文档结构的能力。譬如既能处理HTML(超文本连接标示语言:Hypertext Markup Language)文档又能处理SGML(通用标记语言标准:Standard for General Markup Language)、XML(扩展标记语言:eXtended Marked Language)文档。这里对XML稍作提及。它是HTML的一个超集,SGML的一个子集。一方面可以兼容现有的HTML文档,又允许自定义文档模式(DOM:DOcument Modal)。它将信息按照一定的结构良好组织,为搜索提供了较大的方便。搜索引擎应对其予以有效的支持。除此之外,引擎还应该处理其他类型的文档,譬如Word,WPS等,在Intranet环境中,这一点尤为重要。 4、 搜索引擎应该能在Internet或Intranet的任何地方工作,从而挖掘、获得尽可能多的信息。网络蜘蛛既可收集特定站点的信息,又能遍历整个万维网,对整个Internet进行索引。为了提高搜索速度,应该允许多个搜索引擎并行工作,将各个引擎的搜索结果整合,作为一个整体存放到数据库中。 5、 能过滤器、处理非标准或者不支持的格式,对文档实行加密、解密;能提取文档内容进行后端处理等。 6、 高的召回率和准确率。所谓召回率是指一次搜索结果集中符合用户要求的数目与和用户查询相关的总数之比。所谓准确率是指一次搜索结果集中符合用户要求的数目与该次搜索结果总数之比。理想的搜索引擎应该使的这两个指标尽可能的提高。 7、 多语言搜索支持。最基本的能支持英文和中文信息搜索。 8、 智能化等等。 搜索引擎开发大致包括如下三个模块的实现: 1、 息有序化组织模块。这是搜索引擎工作的基础。主要要考虑索引数据库结构设计、网络蜘蛛设计等。数据库设计关键问题是要考虑文档如何存储。现在一般采取Word—Document矩阵存储网络蜘蛛得到的全文信息。如果不经过压缩处理,这种方法需要巨大的存储容量。可以采取SVD(奇异值分解:Singular Value Decomposition)等矩阵分解技术,构造出新的基向量组,从该向量组中挑出若干主要基向量构成新的向量空间,将原来的向量向新的向量空间投影。这样可以大大减少存储量,提高处理速度。网络蜘蛛的任务是对网络信息进行索引,并将索引信息存放到索引数据库中。网络蜘蛛设计要考虑的主要问题:首先是采取什么样的搜索策略。譬如是深度优先还是广度优先,或者采取其他的启发式搜索策略。然后要考虑如何处理获得信息。譬如是将全文存放到索引数据库,还是仅仅提取文档的若干关键字,在索引库中存放关键字本身及其置信息等。 2、 用户查询分析和数据库匹配模块。通过采取汉语分词、同义词表、等方法,提取出用户查询的关键词语。如有必要可以进一步对用户请求进行语法和语义分析。查询分析的任务就是尽量了解用户真正的需求。然后要将用户的请求转化为操作数据库的查询请求。最后根据数据库查询请求得到用户需要的信息。由于用户很多情况下也不清楚自己究竟想查询什么,还要允许用户对返回的结果进行选择,挑出真正所需,然后引擎根据用户挑出的文档,对查询条件进行修正,进行二次查询。 3、 用户界面设计。用户界面要简洁明快。要考虑通过界面将搜索引擎的各个部分有机的结合起来,为用户提供最好的服务。 五、 未来发展方向——智能搜索引擎  传统的引擎不能适应信息技术的高速发展,新一代智能搜索引擎作为一种高效搜索引擎技术的在当今的网络信息时代日益引起业界人士的关注。  智能搜索的智能体现在三个方面:(1)网络蜘蛛的智能化(2)为特定用户主动提供相关信息。(3)搜索引擎人机接口的智能化。  网络蜘蛛通过启发式的学习采取最有效的搜索策略。选择最佳时机获取从Internet上自动收集、整理信息。  智能搜索引擎能通过观察用户的行为,学习用户的兴趣爱好,用户只要提出请求,它就能站在用户的角度,主动获得相关信息。另外能通过不断的训练学习增长智能。每次用户对引擎返回的信息进行评价,智能引擎根据用户的评价调整自己的行为。智能搜索引擎还能对搜索结果的进行合理的解释。智能搜索引擎具有主动性:在任何特定的时候用各种方法的与用户取得联系。这些特定的时刻可能是用户最关心的信息发生了某种变化等,而这些方法包括电子邮件,电话,传真,寻呼机,移动电话等。搜索引擎根据用户特定时刻的位置信息,选择恰当的方法跟用户通信。  智能搜索引擎可以通过自然语言和用户交互。它采取诸如语义网络等智能技术,通过汉语分词,句法分析以及统计学习理论有效的理解用户的请求,甚至能体会出用户的弦外之音,最大程度的了解用户的需求。