Microsoft 全文搜索技术

2004-9-1 14:12:24【作者】 畅享网 【进入论坛】
广告

全文搜索的基本概念

Microsoft 全文搜索技术已经应用于多个服务器和客户端产品。提供的具体功能取决于每个产品的具体要求。这些不同也反映出该技术的发展。但是,所有产品都因为利用全文索引来有效检索非结构化的文本数据的共同优点而受益。

下列 Microsoft 产品利用了不同的 Microsoft 全文搜索技术:
Index Server,用于Microsoft Windows? 的索引服务
Microsoft SharePoint? Portal Server 2001
Microsoft SQL Server? 7.0 和 SQL Server 2000
Microsoft Exchange Server 2000
Microsoft Site Server 3.0
Microsoft Office XP

您选择什么产品取决于您的用途。例如,您可能是要搜索 Intranet 站点或 Internet 站点、Exchange 公共文件夹,或者要搜索结构化数据或非结构化数据。您可能需要迎合内部团队,或者需要通过 Extranet 站点满足客户需求。这些考虑和其他考虑可帮助您决定什么产品是适合您的最佳产品。
 
全文搜索

全文搜索的任务是根据用户的需求,提供一组来源中的相关信息。对此需求的表达通常是文本查询,在此组来源的每个文档中搜索每个(或所有)查询词。处理查询时有一个简单的方法可打开并扫描每个文档,寻找每个查询词。但是,在处理查询时打开每个文档并搜索查询词会很费时间。此方法并不比个人用户自己在少量文档中搜索高明。

一个简单的解决方案是事先完成大部分工作。实现方法是,提出每个文档中的术语信息并用一种便于检索的方法保存此信息。那么处理查询时就不用扫描每个文档了。唯一的要求是用反向索引相互比较文档,并选择与查询最有关联的文档。

事先完成大部分工作这个原则是全文搜索技术(包括 Microsoft 全文搜索)的基础。要想高效,搜索技术必须:
 
从各种文档存储区获得文档。
从各种文档格式中提取文字。
用文档术语更新索引。
给文档排序,把最相关的文档放在列表最前面。
 
好的搜索技术可以对各种语言、不同类型以及存储在多种文档知识库中的文档执行这些任务。好的搜索技术必须返回真正与用户需求相关的文档。最佳情况下,全文搜索技术是个完整的知识解决方案,获得的直接文本查询正是用户所需要的。用户需要的信息用高级机制解释,并返回结构化和非结构化信息。

Microsoft 全文搜索技术中的以下组件提供了绝佳的全文搜索解决方案:

协议处理程序。协议处理程序可以通过特定协议或从特定存储区访问数据。常见的协议处理程序包括文件协议、超文本传输协议 (HTTP)、消息处理应用程序编程接口 (MAPI) 以及 HTTP 分布式编辑和版本控制 (HTTPDAV)。协议处理程序处理收集程序传递给它的 URL。
 
收集程序。收集程序维护将通过协议访问的 URL 队列。例如,爬行一个 Web 站点可能包括数百个页面,而且会因为每次访问一个 Web 页而造成网络通信流量。为了更有效,收集程序会交叉排列远程 Web 位置的 URL 与其它 Web 位置的 URL,或者交叉排列远程 Web 位置的 URL 与对文件系统文档或其它存储区的访问。收集程序可能会使用额外的逻辑来提高爬行效率,比如 SharePoint Portal Server 适应性爬行。它会对收集进程给爬行目标服务器造成的负载保持平衡。收集程序维持着待处理的 URL 队列,并管理联合爬行。对访问的每个文档,收集程序连续从协议处理程序获得内容,并传递给相应的筛选器。

筛选器。 筛选器(也叫做 Ifilter)从特定的文档格式中提取文字信息,比如 Microsoft Word 文档或文本文件。例如,Microsoft 提供了 Microsoft Office 筛选器,它可从 Word、Microsoft Excel 和 Microsoft PowerPoint? 文件中提取术语。其它筛选器处理 HTML 或电子邮件。还有第三方筛选器,比如 Adobe 提供的 PDF 筛选器。

筛选器的任务是从文档中提取文字信息流,放弃非文字信息和格式信息。筛选器生成文字串和属性/值对,并把它传递给索引引擎。所有筛选器都是针对某个应用程序编程接口 (API) 编写的,它是 Microsoft 平台软件开发工具包 (SDK) 的组成部分。

断字程序和词干程序。断字程序是一个判断查询或待爬行文档的连续字符中字词边界的组件。词干程序从给定的词中提取词根。例如,“running”、“ran”和“runner”都是“run”的变体。有些语言中,词干程序可以将词的词根形式扩展为另外的形式。

SharePoint Portal Server 提供了英语、法语、西班牙语、日语、泰语、朝鲜语、繁体中文和简体中文的断字程序。Windows 2000 Server 索引服务的断字程序用于荷兰语、意大利语、瑞典语和德语。当 SharePoint Portal Server 爬行多语种文档时,每种语言的自定义断字程序可以使最后的术语整理结果对该语言来说更精确。如果只有某个语系的断字程序,而没有特定语言的断字程序,则使用主要语言。例如,法语断字程序会被用于处理加拿大法语文本。如果没有特定语言的断字程序,则使用中性断字程序。字词按中性字符(比如空格和标点符号)来断字。判断在何处断字的代码是 Microsoft Search (MSSearch) 服务内置的,不可更改。

索引引擎。索引引擎的作用是准备内容的反向索引。反向索引是每个术语一行的数据结构。此行中有关于出现此术语的文档的信息、出现次数以及该术语在每个文档中的相关位置。反向索引可以应用统计和概率公式,以便快速计算文档的相关性。

诸如 Windows 或 Microsoft Outlook? 这样没有使用全文搜索的应用程序需要在查询时访问每个文档。这些应用程序要遍历每个文档,用筛选器或其它老技术查找查询词。与反向索引相比,这个过程很慢。反向索引提供了直接访问级别公式(而不是访问源文档)的能力。

级别。查询评估最终将形成一组相关文档。在关系数据库中,每一行都会在或不在结果集合中。例如,当用户查询“所有余额小于或等于 $30,000 的帐户”时,它明确表达了应返回帐户表中的哪些行。而全文搜索任务却更微妙。查询并未明白体现所需的信息,而且检索到的文档在相关性方面也各不相同。相关性最强的文档排在结果集合的最上面,而相关性较差的文档对用户仍然有用,所以排在下面。

在排列这个级别的时候,不同 Microsoft 全文搜索产品使用的算法也各不相同。Index Server 和 Site Server 3.0 使用基于矢量的级别算法,而后期的产品则采用先进的概率算法。

查询语言

要想向系统表达信息请求,用户要用一种语言来描述对查询词的限制和条件。例如,用户可能对上周发布的所有文档感兴趣。要想查询这些文档,用户必须同时表达文档的“发布”概念和精确的时间范围(比如从上个周一开始,到上个周日为止)。

Microsoft 全文搜索产品的发展经历了三种不同的查询语言:
 
Query Dialect 1
结构化查询语言 (SQL) 全文扩展
Query Dialect 2

如果您希望与本文章的作者或其所在机构,进一步交流,请联系:畅享网 姜小姐
jill.jiang@amt.com.cn | 021-51096826-112 | 在线联系
ITSM-适境而为[原创]ITIL软着陆需要合适的ITS..

ITIL要实现“软着陆”,ITSM工具必不可少。现有ITSM工具大到Remedy、MRO,小到国内各种自主系统。

企业信息化杂谈[原创]空降CIO的变与不变

CIO需要尽快适应新公司的权力分配体系。在两家公司可能职位名称是一样的,但是对这个职位的责权利可能是很大的不同。

CIO职场,强者生存?

在2008年,我们将继续看到CIO向商业运营方向发展。与此同时,我们也会看到商业管理人员将与技术管理人员一起竞争CIO岗位。 IT领导者的就职机会虽有不少,但其难度将会大幅提高。2……

防震减灾,IT当关

今天,任何的防震救灾体系,都离不开IT技术。地震观测台是数字化的,震害防御需要对以往的地震信息进行数据分析,应急救援要需要现代多样化的通讯技术。如果说,在许多行业,信息技术还只是一……