本节书摘来自华章出版社《大规模元搜索引擎技》一书中的第1章,第1节,作者 [美]孟卫一(Weiyi Meng), 纽约州立大学, 宾汉姆顿分校於德(Clement T.Yu),伊利诺伊大学芝加哥分校,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
‖第1章
绪言
近年来,万维网(World Wide Web,环球信息网,环球网,网络或Web)已经成为最大的信息源。世界各地的人们经常使用Web查找所需要的信息。实际上,Web已经成为人们日常生活的重要组成部分。
从1990年Web出现以来,它一直在非常迅速地发展。Web可以分为表层网(surface Web)和深层网(deep Web,也称为深网;
或hidden Web,隐藏网)。表层网是指可以公开和直接访问的,而无须通过注册、登录或搜索引擎接口的Web页面(Web page,或称为网页)集合。通常,每个这样的网页都有一个静态逻辑地址,称为统一资源定位符(Uniform Resource Locator,URL)。表层网中的网页通常被超链接(hyperlink)链接起来。通过超链接,这些网页可以被普通Web爬虫(Web crawler) Web爬虫将在1.3.2节讨论。访问到。表层网的准确大小尚未可知,然而被索引的Web是表层网的一个子集,根据2010年8月http://www.worldwidewebsize.com/的估计,这一子集所含的网页数目可达550亿之多。深网的网页不能被一般的Web爬虫爬取。这些网页包含的Web内容或者不能被公开访问或者是动态生成的。例如,考虑如下情形,某出版商收集了很多以数字格式存放的文章,但是没有把它们放在表层网(即没有针对它们的静态URL),访问它们只能通过出版商的搜索引擎,因而这些文章属于深网。使用数据库系统存储的数据动态生成的网页也属于深网。截至2009年[Zillman,P.,2009],深网的网页大概有1万亿(1 trillion)。表层网和深网都在迅速扩展。
从20世纪90年代早期开始,如何帮助普通用户从Web查找到所需信息已经成为Web技术领域的中心议题之一。这些年来,众多的研究者和开发者创建了许多搜索引擎,它们已经成为深受人们喜爱的可在Web上查找所需信息的工具。搜索引擎通常是拥有一个简单查询接口的易于使用的工具。用户在搜索引擎的查询界面输入其查询——通常是反映用户信息需求的几个单词,然后搜索引擎从其文档或数据库中找出最佳匹配。根据搜索数据的类型,搜索引擎可分为文档驱动的搜索引擎和数据库驱动的搜索引擎。前者搜索文档(网页),而后者通过基于Web的搜索接口从数据库系统搜索数据项。数据库驱动的搜索引擎主要应用于电子商务,如购买汽车或书籍。本书仅关注于搜索文本文档的情形。
由于Web规模巨大且扩张快速,每个搜索引擎仅能覆盖其一小部分。例如,最大的网络搜索引擎之一的Google(http://www.google.com/)能够搜索多达350亿网页(http://www.worldwidewebsize.com/),但这仍然是整个Web的一小部分。人们普遍观察到的一个现象是不同搜索引擎覆盖Web的不同部分,虽然这些部分有重叠。一个增加网络搜索范围的有效方法是组合多个搜索引擎的搜索范围。执行这种组合的系统称为元搜索引擎(metasearch engine)。一个元搜索引擎可视为支持统一访问多个现有搜索引擎的系统。在一个使用元搜索引擎的典型场景中,用户提交查询给元搜索引擎,元搜索引擎将查询传递给它的成员搜索引擎;当元搜索引擎从成员搜索引擎收到返回的搜索结果时,就将这些结果合并为一个排序列表,并将它们展示给用户。
虽然本书主要介绍大规模元搜索引擎技术,但是读者了解典型的搜索引擎如何工作仍然是重要的。搜索引擎的核心技术源自计算机科学领域中所熟知的信息检索(information retrieval)或文本检索(text retrieval)。本章首先简要讨论在Web上查找信息的不同方法,然后回顾文本检索和搜索引擎技术的一些基本概念和算法。本章最后一节将给出本书其余部分的概述。
1.1 Web上查找信息
Web上查找信息有两种基本模式:浏览(browsing)和搜索(searching)。绝大多数Web用户(如果不是全部的话)都使用过这两种方法从网上查找所需信息。本节就这两种模式展开讨论。
1.1.1 浏览
浏览包含两个步骤:找到一个开始页面和跟随当前页面里的链接。若用户已经知道开始页面的URL,则可直接在Web浏览器的地址栏输入该页面的URL。许多用户把经常访问页面的URL保存在浏览器的书签或收藏夹列表里。在此情况下,用户也可以从书签列表启动开始页。用户可以记住或保存在书签列表中的URL数目是非常有限的。另一个广泛使用的寻找开始页面的技术是搜索(searching),其中搜索是通过一组词(term)来进行的,然后将搜索引擎返回结果中的一个页面作为开始页面。因此,用户在查找所需信息时经常同时使用搜索和浏览。确定开始页面后,该页面成为当前页面,用户可以点击当前页面中任何可点击文本,进而展示嵌入该可点击文本下的URL所对应的页面。可点击文本也称为锚文本(anchor text),因为这个文本是写在HTML锚标签〈a href="URL"〉和〈/a〉之间的文本。锚文本可能提供关于其所对应页面内容的线索。
为了方便浏览,门户网站、Web站点和网页的开发者有责任使基于浏览的信息查找尽可能容易。雅虎(Yahoo!)可能是最流行的Web门户网站,它把数以百万计的网页和Web站点分门别类,并且把它们组织成层次结构。因为类别的层次结构可以通过从一个层次到下一个层次迅速缩小信息的范围,从而减少查找信息的时间。许多Web站点还提供一个站点地图
(sitemap),它以层次的方式展示可访问页面使得浏览更容易。在具体的网页中,每个链接的锚文本应该提供被链接页面内容的足够信息。
1.1.2 搜索
搜索是因特网(Internet,或国际互联网)上第二个最常见的活动,仅次于发送和接收电子邮件。搜索由三步组成:确定所用的搜索引擎;形成一个查询;浏览返回结果列表以确定相关结果。第三步是相当直接的,因为大多数搜索引擎返回的结果都包含足够的信息让用户确定是否值得进一步检查完整的页面。下面我们将讨论如何确定合适的搜索引擎以及如何形成适当的查询。
1.确定合适的搜索引擎
大多数用户都熟悉Web上的一个或多个主流搜索引擎。根据comScore (http://www.comscore.com/) 2010年8月发布的报告[comScore report,2010],在美国最受欢迎的搜索引擎是:Google(http://www.google.com/)、Yahoo!(http://www.yahoo.com/)、Bing(http://www.bing.com/)、Ask(http://www.ask.com/)和AOL(http://www.aol.com/)。它们分别占据了65.4%、17.4%、11.1%、3.8%和2.3%的搜索市场。然而,Web搜索引擎实际上数以百万计,只有少量的通用搜索引擎致力于提供针对整个Web的搜索覆盖。大多数搜索引擎限定在小范围搜索。例如,大多数机构,如大学、报纸和图书出版商都有自己的搜索引擎,仅覆盖与其自身相关的Web内容。作为另一个例子,还有很多专业领域或垂直搜索引擎覆盖一个特定领域或子领域Web内容,如医药、新闻、电影和体育。另外,还有搜索引擎覆盖深网的内容。特定的小领域的搜索引擎常常会比主流搜索引擎返回更相关和更新的结果,因为它们的搜索范围更集中且较小的数据集更容易更新。此外,深网搜索引擎返回的结果往往从主流搜索引擎无法得到,因为主流搜索引擎主要搜索表层网。
从上面对搜索引擎的分析可以看出,对于给定的信息需求,选定一个合适的搜索引擎为我所用并非易事。首先,大多数用户甚至不知道存在大量的搜索引擎。目前Web上所有搜索引擎的完整目录尚不存在。在CompletePlanet (http://aip.completeplanet.com/) 上列出的当前最完整目录中大约有70 000个搜索引擎,其中有一小部分被认为是可用的。其次,对Web上所有搜索引擎没有系统的质量评价。因此,对于普通用户而言很难知道哪个搜索引擎最适合其信息需求。由于这些困难,大多数用户仅使用一些流行的搜索引擎解决其搜索需求。具有较多经验的用户通常根据个人的经验和别人的建议可以找到更合适的搜索引擎。然而,拥有一个所有搜索引擎的完整目录及这些搜索引擎质量评价的信息并使之成为Web基础设施的一部分是一件很好的事。如果能有一个像常规搜索引擎一样易用的搜索引擎推荐系统,那就更好了。
2.形成适当的搜索查询
文档驱动的搜索引擎通常有一个简单的查询接口——一个允许用户输入查询的文本框和一个提交按钮。对提交给搜索引擎的用户查询的分析表明大多数用户提交简短的查询——这暗示大多数用户很少或根本没有培训过如何填写好的查询。例如,通过对1998年提交给AltaVista搜索引擎(http://www.altavista.com/)的大约10亿个查询的分析,显示了以下关于Web搜索查询的有趣特征[Silverstein et al.,1999]:
查询通常很短:查询词的平均个数是2.35,约26%的查询只有单个词,不到13%的查询超过3个词。
大多数查询不包含算符:大约80%的查询没有使用任何算符。
一些算符被搜索引擎广泛支持,包括布尔AND,即一个网页必须包含所有的查询条件才能满足查询;布尔OR,即一个网页必须包含至少一个查询条件;布尔NOT,即一个网页必须不包含NOT所限定的查询词。一些搜索引擎也支持某些形式的邻近查询(proximity query),这种查询把 “指定查询中的一些词需要在Web页面中彼此接近” 作为查询条件。
用户可以按照以下建议提高其查询的质量:
1)避免提交歧义查询。一个查询如果有多个非常不同的解释就是歧义的。例如,查询“windows”可能被解释为微软的Windows操作系统或建筑的窗户。避免歧义查询的有效方法是避免使用过短的查询。使用较长的查询就有更多的词通过上下文帮助确定每个查询词的正确含义。有证据表明,越来越多的用户提交较长的查询。到2007年年底,提交给Google的查询词的平均个数首次达到4个[Ussery,B.,2008]。
2)使用合适的算符。如果用户打算经常使用某个搜索引擎,那么他就值得努力找出该搜索引擎支持的算符。不同搜索引擎的算符往往有不同的格式。此外,如果没有指定算符,许多搜索引擎使用默认算符。例如,Google使用布尔AND作为默认算符。
在另一项研究中,根据对用户的调查,Broder[Broder,A.,2002]分析了用户查询所蕴含的需求,发现用户提交查询给搜索引擎时经常有各种不同的需求。基于这项研究,Broder根据搜索需求把Web查询分为以下三类。
1)导航查询。这种类型的查询旨在找到一个用户心中特定的Web页面或Web站点。例如,查询“Binghamton University”的目的是找到Binghamton大学的主页,也就是说,http://www.binghamton.edu/。这个主页以外的任何页面将不认为是正确的。通常,用户提交这种查询时知道他们所寻找的那些Web页面,或许由于他们以前访问过那些页面。
2)信息查询。这类查询旨在从Web上找到具体的信息,该信息可能分布在多个页面。只要检索出包含所需信息的页面中的一个,通常就能满足提交此类查询的用户。
3)事务查询。这类查询的目的是找到一个能完成某些事务的Web站点。事务的例子包括购物、下载音乐和电影、注册某些服务。
根据对1000个查询的分析,48%的查询是信息查询,30%是事务查询,20%是导航查询[Broder,A.,2002]。
分析用户查询的目的是设计更好的查询处理技术。