2006年04月07日

from:

http://www.discuz.net/viewthread.php?tid=139721

到 3.23.23 时,MySQL 开始支持全文索引和搜索。全文索引在 MySQL 中是一个 FULLTEXT 类型索引。FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、VARCHAR 或 TEXT 列上创建。对于大的数据库,将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 创建索引,这将是非常快的。将数据装载到一个已经有 FULLTEXT 索引的表中,将是非常慢的。

全文搜索通过 MATCH() 函数完成。

mysql> CREATE TABLE articles (
    ->   id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
    ->   title VARCHAR(200),
    ->   body TEXT,
    ->   FULLTEXT (title,body)
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO articles VALUES
    -> (NULL,’MySQL Tutorial’, ‘DBMS stands for DataBase …’),
    -> (NULL,’How To Use MySQL Efficiently’, ‘After you went through a …’),
    -> (NULL,’Optimising MySQL’,'In this tutorial we will show …’),
    -> (NULL,’1001 MySQL Tricks’,'1. Never run mysqld as root. 2. …’),
    -> (NULL,’MySQL vs. YourSQL’, ‘In the following database comparison …’),
    -> (NULL,’MySQL Security’, ‘When configured properly, MySQL …’);
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM articles
    ->          WHERE MATCH (title,body) AGAINST (‘database’);
+—-+——————-+——————————————+
| id | title             | body                                     |
+—-+——————-+——————————————+
|  5 | MySQL vs. YourSQL | In the following database comparison … |
|  1 | MySQL Tutorial    | DBMS stands for DataBase …             |
+—-+——————-+——————————————+
2 rows in set (0.00 sec)

函数 MATCH() 对照一个文本集(包含在一个 FULLTEXT 索引中的一个或多个列的列集)执行一个自然语言搜索一个字符串。搜索字符串做为 AGAINST() 的参数被给定。搜索以忽略字母大小写的方式执行。对于表中的每个记录行,MATCH() 返回一个相关性值。即,在搜索字符串与记录行在 MATCH() 列表中指定的列的文本之间的相似性尺度。

当 MATCH() 被使用在一个 WHERE 子句中时 (参看上面的例子),返回的记录行被自动地以相关性从高到底的次序排序。相关性值是非负的浮点数字。零相关性意味着不相似。相关性的计算是基于:词在记录行中的数目、在行中唯一词的数目、在集中词的全部数目和包含一个特殊词的文档(记录行)的数目。

它也可以执行一个逻辑模式的搜索。这在下面的章节中被描述。

前面的例子是函数 MATCH() 使用上的一些基本说明。记录行以相似性递减的顺序返回。

下一个示例显示如何检索一个明确的相似性值。如果即没有 WHERE 也没有 ORDER BY 子句,返回行是不排序的。

mysql> SELECT id,MATCH (title,body) AGAINST (‘Tutorial’) FROM articles;
+—-+—————————————–+
| id | MATCH (title,body) AGAINST (‘Tutorial’) |
+—-+—————————————–+
|  1 |                        0.64840710366884 |
|  2 |                                       0 |
|  3 |                        0.66266459031789 |
|  4 |                                       0 |
|  5 |                                       0 |
|  6 |                                       0 |
+—-+—————————————–+
6 rows in set (0.00 sec)

下面的示例更复杂一点。查询返回相似性并依然以相似度递减的次序返回记录行。为了完成这个结果,你应该指定 MATCH() 两次。这不会引起附加的开销,因为 MySQL 优化器会注意到两次同样的 MATCH() 调用,并只调用一次全文搜索代码。

mysql> SELECT id, body, MATCH (title,body) AGAINST
    -> (‘Security implications of running MySQL as root’) AS score
    -> FROM articles WHERE MATCH (title,body) AGAINST
    -> (‘Security implications of running MySQL as root’);
+—-+————————————-+—————–+
| id | body                                | score           |
+—-+————————————-+—————–+
|  4 | 1. Never run mysqld as root. 2. … | 1.5055546709332 |
|  6 | When configured properly, MySQL … |   1.31140957288 |
+—-+————————————-+—————–+
2 rows in set (0.00 sec)

MySQL 使用一个非常简单的剖析器来将文本分隔成词。一个“词”是由文字、数据、“’” 和 “_” 组成的任何字符序列。任何在 stopword 列表上出现的,或太短的(3 个字符或更少的)的 “word” 将被忽略。

在集和查询中的每个合适的词根据其在集与查询中的重要性衡量。这样,一个出现在多个文档中的词将有较低的权重(可能甚至有一个零权重),因为在这个特定的集中,它有较低的语义值。否则,如果词是较少的,它将得到一个较高的权重。然后,词的权重将被结合用于计算记录行的相似性。

这样一个技术工作可很好地工作与大的集(实际上,它会小心地与之谐调)。 对于非常小的表,词分类不足以充份地反应它们的语义值,有时这个模式可能产生奇怪的结果。

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST (‘MySQL’);
Empty set (0.00 sec)

在上面的例子中,搜索词 MySQL 却没有得到任何结果,因为这个词在超过一半的记录行中出现。同样的,它被有效地处理为一个 stopword (即,一个零语义值的词)。这是最理想的行为 — 一个自然语言的查询不应该从一个 1GB 的表中返回每个次行(second row)。

匹配表中一半记录行的词很少可能找到相关文档。实际上,它可能会发现许多不相关的文档。我们都知道,当我们在互联网上通过搜索引擎试图搜索某些东西时,这会经常发生。因为这个原因,在这个特殊的数据集中,这样的行被设置一个低的语义值。

到 4.0.1 时,MySQL 也可以使用 IN BOOLEAN MODE 修饰语来执行一个逻辑全文搜索。

mysql> SELECT * FROM articles WHERE MATCH (title,body)
    ->     AGAINST (‘+MySQL -YourSQL’ IN BOOLEAN MODE);
+—-+——————————+————————————-+
| id | title                        | body                                |
+—-+——————————+————————————-+
|  1 | MySQL Tutorial               | DBMS stands for DataBase …        |
|  2 | How To Use MySQL Efficiently | After you went through a …        |
|  3 | Optimising MySQL             | In this tutorial we will show …   |
|  4 | 1001 MySQL Tricks            | 1. Never run mysqld as root. 2. … |
|  6 | MySQL Security               | When configured properly, MySQL … |
+—-+——————————+————————————-+

这个查询返回所有包含词 MySQL 的记录行(注意: 50% 的阈值没有使用),但是它没有包含词 YourSQL。注意,一个逻辑模式的搜索不会自动地以相似值的降序排序记录行。你可以从上面的结果出看得出来,最高的相似值(包含 MySQL 两次的那个) 最列在最后,而不是第一位。一个逻辑全文搜索即使在没有一个 FULLTEXT 索引的情况下也可以工作,然而它 慢 些。

逻辑全文搜索支持下面的操作符:

+
一个领头的加号表示,该词必须出现在每个返回的记录行中。

-
一个领头的减号表示,该词必须不出现在每个返回的记录行中。

缺省的 (当既没有加号也没有负号被指定时)词是随意的,但是包含它的记录行将被排列地更高一点。这个模仿没有 IN BOOLEAN MODE 修饰词的 MATCH() … AGAINST() 的行为。

< >
这两个操作符用于改变一个词的相似性值的基值。< 操作符减少基值,> 操作符则增加它。参看下面的示例。

( )
圆括号用于对子表达式中的词分组。

~
一个领头的否定号的作用象一个否定操作符,引起行相似性的词的基值为负的。它对标记一个噪声词很有用。一个包含这样的词的记录将被排列得低一点,但是不会被完全的排除,因为这样可以使用 – 操作符。

*
一个星号是截断操作符。不想其它的操作符,它应该被追加到一个词后,不加在前面。

"
短语,被包围在双引号"中,只匹配包含这个短语(字面上的,就好像被键入的)的记录行。
这里是一些示例:

apple banana
找至少包含上面词中的一个的记录行
+apple +juice
… 两个词均在被包含
+apple macintosh
… 包含词 “apple”,但是如果同时包含 “macintosh”,它的排列将更高一些
+apple -macintosh
… 包含 “apple” 但不包含 “macintosh”
+apple +(>pie <strudel)
… 包含 “apple” 和 “pie”,或者包含的是 “apple” 和 “strudel” (以任何次序),但是 “apple pie” 排列得比 “apple strudel” 要高一点
apple*
… 包含 “apple”,“apples”,“applesauce” 和 “applet”
"some words"
… 可以包含 “some words of wisdom”,但不是 “some noise words”
6.8.1 全文的限制
MATCH() 函数的所有参数必须是从来自于同一张表的列,同时必须是同一个FULLTEXT 索引中的一部分,除非 MATCH() 是 IN BOOLEAN MODE 的。

MATCH() 列列表必须确切地匹配表的某一 FULLTEXT 索引中定义的列列表,除非 MATCH() 是 IN BOOLEAN MODE 的。

AGAINST() 的参数必须是一个常量字符串。
6.8.2 微调 MySQL 全文搜索
不幸地,全文搜索仍然只有很少的用户可调参数,虽然增加一些在 TODO 上排列很高。如果你有一个 MySQL 源码发行(查看章节 2.3 安装一个 MySQL 源码发行),你可以发挥对全文搜索的更多控制。

注意,全文搜索为最佳的搜索效果,被仔细地调整了。修改默认值的行为,在大多数情况下,只会使搜索结果更糟。不要修改 MySQL 的源代码,除非你知道你在做什么!

被索引的词的最小长度由 MySQL 变量 ft_min_word_len 指定。查看章节 4.5.6.4 SHOW VARIABLES。将它改为你所希望的值,并重建你的 FULLTEXT 索引。 (这个变量只从 MySQL 4.0 开始被支持)

stopword 列表可以从 ft_stopword_file 变量指定的文件中读取。查看章节 4.5.6.4 SHOW VARIABLES。在修改了 stopword 列表后,重建你的 FULLTEXT 索引。(这个变量只从 MySQL 4.0.10 开始被支持)

50% 阈值选择由所选择的特殊的衡量模式确定。为了禁止它,修改 `myisam/ftdefs.h’ 文件中下面的一行:
#define GWS_IN_USE GWS_PROB

改为:
#define GWS_IN_USE GWS_FREQ

然后重新编译 MySQL。在这种情况下,不需要重建索引。 注意:使用了这个,将严重地减少 MySQL 为 MATCH() 提供足够的相似性值的能力。如果你确实需要搜索这样的公共词,最好使用 IN BOOLEAN MODE 的搜索代替,它不遵守 50% 的阈值。

有时,搜索引擎维护员希望更改使用于逻辑全文搜索的操作符。这些由变量 ft_boolean_syntax 定义。查看章节 4.5.6.4 SHOW VARIABLES。然而,这个变量是只读的,它的值在 `myisam/ft_static.c’ 中被设置。
对于这些更改,要求你重建你的 FULLTEXT 索引,对于一个 MyISAM 表,最容易的重建索引文件的方式如下面的语句:

mysql> REPAIR TABLE tbl_name QUICK;

6.8.3 全文搜索 TODO
使所有对 FULLTEXT 索引的操作更快
邻近(Proximity)操作符
对 "always-index words" 的支持。他们可以是用户希望视为一个词处理的任意字符串,例如 "C++"、"AS/400"、"TCP/IP",等等
支持在 MERGE 表中的全文搜索
对多字节字符的支持
依照数据的语言建立 stopword 列表
Stemming (当然,依赖于数据的语言)
Generic user-suppliable UDF preparser.
使模式更加灵活 (通过为 CREATE/ALTER TABLE 中的 FULLTEXT 增加某些可调整参数)

from;   http://www.vckbase.com/document/viewdoc/?id=1173

全文信息检索介绍及算法分析

作者:杨老师

一、摘要
  
本文主要介绍了全文信息检索的概念、应用领域、算法分类、技术难点和算法比较。及一款实现全文检索的数据结构和算法。

、什么是全文数据库和全文信息检索
  保存在数据库中的记录数据,从类型上可以分为两种。其一是结构化数据,象字符、日期、数值、货币等,这些数据都是具有有限长度或固定格式的数据;其二是非结构化数据,也叫全文数据,象简历、简介、论文等,这些数据都是以不定长、非固定格式保存的字符型数据。
  现有的数据库系统,都是以结构化数据为检索的主要目标,因为实现相对简单。比如数值检索,可以建立一张排序好的索引表,以二分法实现查找,速度很快。但对于非结构化数据,即全文数据,要想实现检索,相对难度要大的很多了。
  当然,你也许会说:“这个多简单呀,把全文数据读到内存,然后进行比较查找不就可以了?”。不错,的确是一个很朴素想法。不过最严重的问题是,如果数据库中有1万条,10万条,100万条记录的话,可以想象一下检索所消耗的时间了吧?!如果一个全文数据库系统,对一条检索命令的响应时间超过了半分钟,那么没有用户是能够容忍的了。
  因此,全文检索的主要目的,就是实现对大容量的非结构化数据的快速查找。

三、应用领域
  现在,随着计算机使用的越来越普及,数据的积累越来越多,全文检索的要求也就越来越迫切了。目前,主要的应用领域是:图书馆数据库、情报数据库、专利数据库、医药数据库、办公自动化、历史资料库、电子出版系统、等等。

四、算法和算法比较
  目前,实现全文信息检索的算法有两大基本方案,词索引字索引
  词索引,以单词为索引单位的检索算法。这个技术是全文检索技术的鼻祖(60年代,就已经有产品问世)。道理很简单,计算机是适合于英语语言环境的,而英语又是以单词为语言要素。说的更通俗一些,就是每个英文单词之间都有一个空格。因此,在对全文数据库建立索引的时候,按照单词划分建立索引,是即简单又自然的。我们国家最开始引入全文检索技术的时候,是汉化英文的数据库系统,因此也就自然使用了词索引技术。但由于中英文环境中语素的不同特点,使得中文必须要解决分词的问题。比如对一句话“我是中国人”,那么必须要切分出“我 是 中国 人”这样的单词形式。如果是人的大脑来进行分词判断,那真是太简单了,只要有小学二年级的中文水平,就足够了。但是,如果想让计算机能够进行分词,却非常困难。计算机分词的大致算法是:由文章切分出段落,由段落切分出句子,由句子切分出短语,然后查找词库,根据动词、连词、形容词再进行切分得到所有的单词。在某些情况下,计算机是根本无法正确进行分词的。下面是计算机自动分词所闹的笑话:

  (1)我们要积极地主动作好计划生育工作
计算机愚蠢的分词结果:我们 要 积极 地主 动作 好 计划 生育 工作
评论:我胡汉三又回来啦
后果:检索“地主”的时候,产生误查结果

  (2)吉林省长春市的人民
计算机愚蠢的分词结果:吉林 省长 春市 的 人民
评论:我知道了,吉林有个省长叫“春市”
后果:检索“吉林省”的时候,产生漏查结果

  因此,词索引的技术难点是分词算法。Oracle 和 Notes 等汉化的数据库系统,虽然也都提供了部分全文检索功能,但都出现了这样或那样的问题。分词算法的提升空间还是有的,需要加入人工智能分析、上下文判断等技术。但还有一个致命的弱点,那就是对地名,人名的判断。

  字索引,以汉语单字为索引单位的检索算法。这个也是我推荐的算法,较词索引更适合于中文环境。这也就是为什么英文汉化版的全文检索软件没有占领中国市场的主要原因。(目前,本土民族化的软件,比如手写板,汉字扫描识别,中文全文信息检索……还是比国外的同类产品领先很多的。)但字索引也不是没有缺点,最主要的问题是:

  (1)、检索“华人”,会误查出“中华人民共和国”
  (2)、检索中药“大黄”,会误查出“大黄缄”,“大黄麻”等完全不同概念的药品。而这些单词在英文中是不会出现错误的,因为根本就是不同的拼写。

  字索引的多查错误,也是可以更正的。比如检索“大黄”的同时,也检索“大黄缄”,然后排除“大黄缄”的检索命中点,但这需要付出检索时间的代价。下表,是字、词索引方案各项性能的比较:

索引方式

索引比

索引速度

检索速度

误查

漏查

词索引

0.8 ~ 2.0

字索引

0.3 ~ 2.0

稍快

稍慢

五、一款中文全文信息检索算法的实现
  这个算法是1993年设计并实现的。十年过去了,新版本中使用了更高级的技术,因此该算法已经废弃,并得以公开给大家。计算机界有一个著名的命题:程序 = 数据结构 + 算法。而公开的这个设计,正是数据结构和算法的完美体现。呵呵,不吹牛了,看看如何实现的吧。

I 基本原理

  图(一) 展示了在数据结构中,最标准的一个单向链表的结构示意图。
  图(二) 在标准的单向链表中,如果结点内容A、B……N 完全相同的时候,那么我们可以进行变换了,用图(二)表示,为叙述方便,称为“单一结点内容链表”。即,只需要在头结点中表示出内容,链表中后续的结点只有 NEXT 指针域,而省略掉内容域。
  图(三) 在图二的“单一结点内容链表”中有一个缺点:如果我们得到了任意的一个非头结点指针的话,由于是单向链表,因此无法回溯得到该结点所表示的内容。因此再次变换,改进为图(三)的方式,称为“接续单向链表”。这样结构的链表有如下的特征:
  (1)从头结点出发,可以得到后续所有结点的地址;
  (2)从任意一个结点出发,当沿着指针跳转到“接续”结点的时候,就可以得到该结点所表示的内容;
  (3)“接续链表”的存储空间,比标准的单向链表的存储空间要小很多。

II 构造头结点
  设计一个数组,用来存储所有汉字链表的头结点。GB2312包容了汉字共7673个,用2个字节来表示一个汉字的内码,第一个字节的范围是A0~F7,第二个字节的范围是A0~FE。恰好的是,7673个汉字,加上一些常用符号,制表符号,再刨除一些未定义的空区,正好完全可以用16K字节的存储空间来全部表示出来。

  和带有接点内容的链表有所不同的是,在这个头结点中,只有指针而没有结点内容。结点内容(汉字)其实是用数组的偏移地址来间接表示的。如上图所示,数组中偏移为 0000 的指针所表示的汉字是 A0A0 (即,全角空格)。

III 链表结构
  由于每个指针只用2个字节表示,因此,链表指针的范围是 0000 – FFFF,64K大小。为了使链表能超越 64K 的范围,那么现在正好可以用“接续链表”构造出来了。下图表现了整个数据库的结构。


IV 实现检索
  在下图的一个数据库结构中,我们实现单字“中”的检索和单词“中国”的检索。三种颜色,分别表示数据库中的三条记录的内容区域。

  检索“中”。根据“中”的内码 D6D0 可以在头指针区域中定位到起点指针,然后按照链表分别在数据库第一条记录找到2个命中点,在第二条记录中找到1个命中点,而第三条记录没有命中。这时,指针到达“接续的头指针”区域,然后就可以继续检索下一个数据区了……直到结束。
  检索“中国”。根据“中”和“国”的内码,定位头指针。这一对指针连续在链表中跳转,如果两个指针在跳转的时候恰好在数据区的地址偏移中相邻,则表示命中这个单词了(第一条记录中,画红圈部分)。然后,这对指针继续向后跳转,直到结束。

V 提取记录内容
  由于记录内容中的汉字,已经用链表的指针表示了,那么如何提取还原出原始的汉字文章那?从数据区记录的开始,按照链表向后跳转,肯定会跳转到“接续头指针”的区域中,那么这时候根据指针所在地址,计算出相对偏移,就得到它表示的汉字了。重复操作,就能把原始的汉字文章全部还原出来。

VI 记录的入库
  不用多说了吧?把指向“接续头指针”的链表断开,连接上新的地址,而该地址的存储的指针指向“接续头指针”。

VII 算法特点
  (1)算法呈现出字索引方式。能够满足“查全”的功能。
  (2)原始文本数据追加入库时,由于入库就是构造指针的过程,并同时建立了索引。入库数据量和处理时间呈线性关系。速度很快。
  (3)文字信息在数据库中全部以指针存储,本身具有加密的功能。
  (4)如果有某个指针在存取过程中发生错误,则该指针的后续必将产生连续错误且无法纠正,这是该算法的主要缺陷。
  (5)数据区48K,头指针(接续)区16K,索引比为33%。这是全世界现有全文算法中,索引比最小的。
  (6)该算法只适合于GB2312字符集。由于GBK,UNICODE,BIG5包含更多的汉字,会导致头指针(接续)区域的扩大,而数据区被压缩,因此失去了算法意义。
  (7)检索时,需要按照64K为单位读取数据库文件(这正好适用于16位操作系统),检索效率会随着数据库的增大而减小。因此该算法适合于小型数据库的全文检索系统(10万条记录以内,总容量200M以下)。

六、结束语
  学习计算机软件设计,最重要的一门课程就是《数据结构》。这套全文检索算法,正是依靠精妙的数据结构构建出来的,其实说起来也很简单,就是链表数组。1993年的时候,PC机大多运行着 DOS + WINDOWS 3.1 + 中文环境(GB2312),这套算法正是适应当时的环境而设计的。现在十年过去了,随着计算机软硬环境的提升和全文数据量的增长,该算法虽然已经废弃,但通过该算法,大家一定能体会出“数据结构”的重要性。1998年,我又设计了新的全文检索算法,使用的是“数据结构”中的“散列表”。不过现在保密,也许10年后再公布吧,嘿嘿。

海量科技公司的主页:

http://www.hylanda.com/

使中文信息处理系统的开发者能够得到最先进的技术和服务,让优质的中文信息服务完善我们的生活。

海量科技公司的主页:

http://www.hylanda.com/

使中文信息处理系统的开发者能够得到最先进的技术和服务,让优质的中文信息服务完善我们的生活。

2006年04月06日

from;    http://www.amteam.org/docs/BDDocument.asp?Action=View&ID=%7B27CAEF06-5E46-448F-A445-A430CE9770AB%7D

Microsoft 全文搜索技术的产品(下)

 


以下各节讨论采用了 Microsoft 全文搜索技术的 Microsoft 产品。每节都包括产品概述、目标用户以及全文搜索技术与该产品的集成方式。

Microsoft Site Server
 
概述
Site Server 的设计目的是帮助您最佳利用企业 Intranet。Site Server 允许用户快捷地发布、查找和共享信息。它的功能包括巨大的搜索能力以及全面分析 Intranet 利用率和效率的多个工具。
Site Server Commerce Edition 是一个全面的 Internet 商务服务器,它允许您预定客户、进行商业交易并分析商务 Web 站点。Site Server Commerce Edition 具有高度的可伸缩性和安全性,简化并集成了您与分销商和供应商的在线交易。

目标
自 1998 年 5 月出现 Site Server 3.0 Standard Edition 和 Site Server 3.0 Commerce Edition 以来,Web 市场已经得到巨大发展。Site Server 3.0 Standard Edition 的目标是 Intranet 空间,它允许用户查找、分享信息并将信息发布到企业 Intranet 上。相比之下,Site Server 3.0 Commerce Edition 的目标是 Internet 空间,可以进行在线金融交易、分析交易并与消费者进行个性化互动。
 
从那以后,Intranet 市场需求发生了巨大变化,形成了一个门户市场,对核心服务和应用程序集成的需求越来越大,而且一直需要强健的企业范围搜索功能。因此,产品重点也发生了相应的变化。Site Server 3.0 Standard Edition 的搜索技术继续在 SharePoint Portal Server 中得以运用。Site Server 3.0 Commerce Edition 的电子商务和 Internet 功能现在可以用 Microsoft E-Commerce Business Solutions 得到最佳体现。

搜索功能

数据访问。Site Server 推出了收集概念和协议处理程序概念。Site Server 可以爬行 Exchange Server 5.5 计算机和 Web 站点。收集程序可以处理层次结构(文件系统)和 Web 空间 (HTTP)。Site Server 不支持自定义协议处理程序。它的接口不能扩展以支持新的文档存储。

Site Server 可以用呈现数据库中各行信息的 ASP 页爬行数据库信息。

筛选器。Site Server 使用的筛选器与索引服务相同。Site Server 使用操作系统上已经安装的筛选器,包括新闻和电子邮件 MIME 筛选器、Office 文档的 Office 筛选器以及 HTML 筛选器。

级别。Site Server 使用的级别与索引服务相同。Site Server 使用基于矢量空间模型的级别算法。这一算法的有关信息在 Platform SDK 中。使用的默认算法是 Jaccard 公式。

方案支持。Site Server 提供丰富、广泛的方案支持。用户可以用它特有的管理界面定义 OLE DB 数据类型的属性。
 
可扩展性和可编程性。Site Server 有自己的对象模型。
 
查询语言。Site Server 使用 Query Dialect 1 和 SQL 全文扩展。

Microsoft Exchange 2000 Server

概述
Exchange 2000 Server 与 Windows 2000 操作系统无缝地集成在一起,设计用于满足不同规模企业的消息传递和协作需求。与其客户端软件 Outlook 2000 一起使用时,Exchange 提供了一个非常可靠、可缩放并易于使用的消息传递和协作基础结构。

目标

如果您的主要用途是爬行电子邮件消息,则应该使用 Exchange 2000 Server。利用 Exchange 2000 全文搜索,服务器可以在个人邮箱和所有用户使用的公共文件夹中搜索传递的邮件。
 
如果您希望搜索电子邮件和其它来源,请使用 SharePoint Portal Server。但是 SharePoint Portal Server 不支持爬行专用邮箱。

搜索功能

Exchange 2000 Server 使用的搜索技术与 SharePoint Portal Server 相同。它使用群集能力经过证明的版本。

数据访问。数据访问限于存储在 Exchange 公共文件夹和邮箱中的信息。

筛选器。Exchange 全文搜索使用 MIME 筛选器来爬行传递的邮件。附件的处理要根据其内容类型使用可用的筛选器。 

 级别。Exchange 2000 Server 使用的高级概率级别算法与 SharePoint Portal Server 相同。此算法可保证在搜索结果顶部返回与查询相关性最强的文档,提高了用户的效率和满意度。
 
可扩展性和可编程性。Exchange 2000 Server 在搜索时使用 HTTPDAV 协议,特别是 DASL。

查询语言。Exchange 2000 中的全文搜索通过分布式编辑和版本控制 (DAV) 协议使用并支持 SQL 全文扩展。使用 Exchange 2000 时,Outlook 的高级搜索可以利用 Exchange 全文搜索。然后将自然语言查询直接提交到服务器。它没有 SQL 查询语言的客户端支持。

Microsoft Office XP 搜索

概述
世界领先的效率软件套件 Microsoft Office 可帮助您完成常见的工作任务,包括字处理、电子邮件、演示文稿、数据管理和分析等。

目标
如果您是 Office 用户,而且您希望在桌面工作,请使用 Office XP 搜索。Office XP 使您不仅可以搜索本地硬盘,而且还能搜索文件共享和 SharePoint Portal Server 计算机。

搜索功能

数据访问。在 Windows 2000 计算机上,如果启用了索引服务,它会创建一个本地磁盘索引。在运行 Microsoft Windows NT? 4.0 版本、Windows 98 或 Windows Millennium 的计算机上,Microsoft Office XP 提供一个 SharePoint Portal Server 上使用的搜索引擎版本,用于爬行本地磁盘。索引服务或 Office 搜索索引引擎则由用户自己激活。如果未启用索引,Office XP 则提供一个速度较慢、未建立索引形式的搜索。

用户界面。 Office XP 提供一个搜索任务窗格,可以通过 Word、Excel 和 PowerPoint 访问。

高级功能。任务窗格提供对用户本地硬盘、远程服务器(通过索引服务)、SharePoint Portal Server 计算机、SharePoint Team Services 站点(其全文搜索功能采用索引服务)和 Outlook 邮件(PST 文件或 Exchange 邮箱)的联合搜索。
查询代理组件将搜索命令分配给每个存储区的搜索提供程序。
 
可扩展性和可编程性。Office 应用程序可以通过一个类似 FindFast API 的 API 对这些搜索查询代理进行编程。

from:         http://www.playmedia.com.cn/NewsInfo.asp?id=165

PHP搜索引擎技术核心揭密
发布日期:[2005-8-25]    共阅[722]次
    编者按:这是一篇精彩的编程教学文章,不但详细地剖析了的原理,GOOGLE采用新一代的先进技术,根据互联网本身的链接结构对相关网站用自动方法进行分类,为您的每一个查询迅速提供准确的结果。Google以其独树一帜的网页级别 (PageRankTM,已申请专利)技术,打破了传统网络分类概念,带来网络搜索的革命。Google搜索速度极快,而且准确率极高。

  Google可贮存网页的快照,当网页服务器暂时中断时您仍可浏览到该网页的内容。若找不到服务器,则Google暂存的网页也可救急。从贮存网页快照中找寻资料要比常规链接快得多,尽管所获取的信息可能不是最新的。而且在很多情况下可免受"404 Not Found Error"(找不到网页的错误信息)之苦。

  网站登陆:

  Google经常在网上漫游,搜寻新资料。Google也可以让您提供新的网站信息。但Google会分析网站内容,所用时间长短不一,用以决定网站信息是否使用。首先输入网址,包括前缀http://,http://www.Google.com/。还可以加上网站简介,但此项说明仅供Google内部参考,并不影响Google对网页的编排。


  如果您的网页提供多种汉字代码的用户界面,请选择一个您认为最应该向大家介绍的那一个。


  注意:登录网址时,只须提交最上层的网页,其他各页由Googlebot自行查找。Google会定时自动检索并更新所有网站;对于失效网页则将其删除。


  关于 排名:


  作为组织管理工具,网页级别利用了互联网独特的民主特性及其巨大的链接结构。实质上,当从网页A链接到网页B时,Google就认为"网页A投了网页B一票"。Google根据网页的得票数评定其重要性。然而,除了考虑网页得票数(即链接)的纯数量之外, Google还要分析为其投票的网页。"重要"网页所投之票自然份量较重,有助于增强其他网页的"重要性"。


  重要的、高质量的网页可获得较高的网页级别,从而在搜索结果中可获较高的排位。这样,Google的重要性综合指标为网页级别,而不是根据某一个具体的查询。当然,这代表了该网页本身的特性,是由Google根据网络数据、采用评定链GOOGLE采用新一代的先进技术,根据互联网本身的链接结构对相关网站用自动方法进行分类,为您的每一个查询迅速提供准确的结果。Google以其独树一帜的网页级别 (PageRankTM,已申请专利)技术,打破了传统网络分类概念,带来网络搜索的革命。Google搜索速度极快,而且准确率极高。

  Google可贮存网页的快照,当网页服务器暂时中断时您仍可浏览到该网页的内容。若找不到服务器,则Google暂存的网页也可救急。从贮存网页快照中找寻资料要比常规链接快得多,尽管所获取的信息可能不是最新的。而且在很多情况下可免受"404 Not Found Error"(找不到网页的错误信息)之苦。


  网站登陆:


  Google经常在网上漫游,搜寻新资料。Google也可以让您提供新的网站信息。但Google会分析网站内容,所用时间长短不一,用以决定网站信息是否使用。首先输入网址,包括前缀http://,http://www.Google.com/。还可以加上网站简介,但此项说明仅供Google内部参考,并不影响Google对网页的编排。


  如果您的网页提供多种汉字代码的用户界面,请选择一个您认为最应该向大家介绍的那一个。


  注意:登录网址时,只须提交最上层的网页,其他各页由Googlebot自行查找。Google会定时自动检索并更新所有网站;对于失效网页则将其删除。


  关于 排名:


  作为组织管理工具,网页级别利用了互联网独特的民主特性及其巨大的链接结构。实质上,当从网页A链接到网页B时,Google就认为"网页A投了网页B一票"。Google根据网页的得票数评定其重要性。然而,除了考虑网页得票数(即链接)的纯数量之外, Google还要分析为其投票的网页。"重要"网页所投之票自然份量较重,有助于增强其他网页的"重要性"。


  重要的、高质量的网页可获得较高的网页级别,从而在搜索结果中可获较高的排位。这样,Google的重要性综合指标为网页级别,而不是根据某一个具体的查询。当然,这代表了该网页本身的特性,是由Google根据网络数据、采用评定链接结构的综合运算法则进行分析的结果。


  当然,如果与查询项目不匹配,再重要的网页也毫无意义。因此,Google采用完善的正文匹配技术,为您查找既重要又准确的网页。例如,Google在分析一个网页时,还会同时参考指向此网页的链接描述。


  与其他多数 搜索引擎的区别在于:Google只显示相关的网页,其正文或指向它的链接包含您所输入的所有关键字,而无须再受其他无关结果的烦扰。


  Google不仅搜索出包含所有关键字的结果,并且对网页关键字的接近度进行了分析。与其他多数搜索引擎的一大区别是:Google按照关键字的接近度区分搜索结果的优先次序,筛选与关键字较为接近的结果。

接结构的综合运算法则进行分析的结果。


  当然,如果与查询项目不匹配,再重要的网页也毫无意义。因此,Google采用完善的正文匹配技术,为您查找既重要又准确的网页。例如,Google在分析一个网页时,还会同时参考指向此网页的链接描述。


  与其他多数 搜索引擎的区别在于:Google只显示相关的网页,其正文或指向它的链接包含您所输入的所有关键字,而无须再受其他无关结果的烦扰。


  Google不仅搜索出包含所有关键字的结果,并且对网页关键字的接近度进行了分析。与其他多数搜索引擎的一大区别是:Google按照关键字的接近度区分搜索结果的优先次序,筛选与关键字较为接近的结果。

也提供了笔者自己对使用PHP编制搜索引擎的一些思路。整篇文章深入浅出,相信无论是高手还是菜鸟,都能从中得到不少的启发。
  谈到网页搜索引擎时,大多数人都会想到雅虎。的确,雅虎开创了一个互联网络的搜索时代。然而,雅虎目前用于搜索网页的技术却并非该公司原先自己开发的。2000年8月,雅虎采用了Google(www.Google.com)这家由斯坦福大学学生创建的风险公司的技术。理由非常简单,Google的搜索引擎比雅虎先前使用的技术能更快、更准确搜索到所需要的信息。
  让我们自己来设计、开发一个强劲、高效的搜索引擎和数据库恐怕短时间内在技术、资金等方面是不可能的,不过,既然雅虎都在使用别人的技术,那么我们是不是也可以使用别人现成的搜索引擎网站呢?
剖析编程思路
  我们可以这样设想:模拟一个查询,向某个搜索引擎网站发出相应格式的搜索命令,然后传回搜索结果,对结果的HTML代码进行分析,剥离多余的字符和代码,最后按所需要的格式显示在我们自己的网站页面里。
  这样,问题的关键就在于,我们要选定一个搜索信息准确(这样我们的搜索才会更有意义啊)、速度快(因为我们分析搜索结果并显示需要额外的时间),搜索结果简洁(便于进行HTML源代码分析和剥离)的搜索网站,由于新一代搜索引擎Google的各种优良特性,这里我们选择它为例,来看看用PHP怎样实现后台对Google(www.Google.com)搜索、前台个性化显示这一过程。
  我们先来看看Google的查询命令的构成。进入www.Google.com网站,在查询栏中输入“abcd”,点击查询按钮,我们可以发现浏览器的地址栏变成:"http://www.Google.com/search?q=abcd&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=",可见,Google是通过表单的get方式来传递查询参数并递交查询命令的。我们可以使用PHP中的file()函数来模拟这个查询过程。
了解File()函数
  语法: array file(string filename);
  返回值为数组,将文件全部读入数组变量中。这里的文件可以是本地的,也可以是远程的,远程文件必须指明所使用的协议。例如: result=file(http://www.Google.com/search?q=abcd&;btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=”),该语句将模拟我们在Google上查询单词“abcd”的过程,并将搜索结果以每行为元素,传回到数组变量 result中。因为这里读取的文件是远程的,所以协议名“http://”不能缺少。
  如果要让用户输入搜索字符进行任意搜索,我们可以做一个输入文本框和提交按钮,并将上文中的被搜索字符“abcd”用变量替换:
echo
; //没有参数的form,默认提交方式为get,提交到本身
echo ; //构造一个文本输入框
echo ; //构造一个提交查询按钮
echo
;
if (isset( keywords)) //提交后PHP会生成变量 kwywords,即要求下面的程序在提交后运行
{
urlencode( keywords); //对用户输入内容进行URL编码
result=file("http://www.Google.com/search?q=". keywords."&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=");
//对查询语句进行变量替换,将查询结果保存在数组变量 result中
result_string=join(" ", result); //将数组$result合并成字符串,各数组元素之间用空格粘和
… //进一步处理
}
?>
  上面的这段程序已经能按用户输入内容进行查询,并将返回的结果合成一个字符串变量$result_string。请注意要使用urlencode()函数将用户输入内容进行URL编码,才可以正常地对输入的汉字、空格以及其他特殊字符进行查询,这样做也是尽可能逼真地模拟Google的查询命令,保证搜索结果的正确性。
对Google的分析
  为了便于理解,现在假设我们所真正需要的东西是:搜索结果的标题。网址和简介等,这是一个简洁而典型的需求。这样,我们所要做的便是:去除Google搜索结果的台头和脚注,包括一个Google的标志、再次搜索的输入框和搜索结果说明等,并且在剩余的搜索结果各项条目中剥离原来的HTML格式标记,替换成我们想要的格式。
  要做到这一点,我们必须仔细地分析Google搜索结果的HTML源码,找到其中的规律。不难发现,在Google的搜索结果的正文总是包含在源码的第一个
标记和倒数第二个
标记之间,并且倒数第二个
标记后紧跟table字符,而且这个组合“
  以下所有程序均依次接续在上文程序的“进一步处理”处。
  result_string = strstr( result_string, "
"); //取 result_string从第一个
开始后的字符串,以去除Google台头
position= strpos( result_string,"
table符号的位置
result_string= substr( result_string,0, position);//截取第一个
table符号之前的字符串,以去除脚注
应用与实现
  OK,现在我们已经得到有用的HTML源码主干了,剩下的问题是如何自主地显示这些内容。我们再分析一下这些搜索结果条目,发现每个条目之间也是很有规律的用
分隔,也就是各成一个段落,按这个特点我们用explode()函数把每个条目切开:
  语法:explode(string separator, string string);
  返回一个数组,按separator切开后的各个小字串被保存在数组中。
  于是:
result_array=explode("
", result_string); //用字串"
"把结果切开
  我们就得到一个数组 result_array,其中每个元素都是一个搜索结果条目。我们所要做的仅仅是研究每个条目及其HTML显示格式代码,然后按要求替换就行了。下面用循环来处理 result_array中的每个条目。
for( i=0; i {
… //处理每个条目
}
  对于每个条目,我们也很容易找到一些特点:每个条目都由标题、摘要、简介、类别、网址等组成,每个部分都换行,即包含
标记,于是再次分割:(以下处理程序放在上文的循环中)
every_item=explode("
", result_array[ i]);
  这样我们得到一个数组 every_item,其中 every_item[0]就是标题, every_item[1]和 every_item[2]两行为摘要, every_item[3]和 every_item[4]等等的头部如果包含“简介:”、“< font size=-1 color=#6f6f6f>类别:< /font>”字符,则是简介或类别(因为有的结果条目没有该项),如果头部包含“< font color=green>”则肯定就是网址啦,这种对比判断我们常使用正则表达式(略),如果要替换也很方便,比如包含标题的$every_item[0],其本身是有链接的,我们希望修改这个链接属性,让它在新窗口打开链接:
echo eregi_replace( {
… //处理每个条目中除去第一项(第一项为标题,已经显示)的每一项
… //更多格式修改
}
  这样就修改了链接属性,其余很多显示格式的修改、剥离、替换都能用正则替换eregi_replace()来完成。
  至此我们已经得到了每个搜索条目的每一项,并能任意修改每项的格式,甚至可以给他套上漂亮的表格。然而一个好的程序应该能适应各种运行环境的,这里也不例外,我们其实还只是讨论了搜索结果的HTML剥离的一种框架方法,真正要做得完美,还要考虑很多内容,比如要显示一共搜索出多少结果,分成多少页等等,甚至还可以刨除与Google相关的那些“类别”、“简介”等代码,让客户根本看不到原始网站。不过这些内容和要求我们都能通过分析HTML进行剥离得到。现在大家完全能自己动手,做个极富个性化的搜索引擎啦。

from:     http://alexpc.diy.myrice.com/htm/01.htm

搜索引擎技术核心揭密


  编者按:这是一篇精彩的编程教学文章,不但详细地剖析了搜索引擎的原理,也提供了笔者自己对使用PHP编制搜索引擎的一些思路。整篇文章深入浅出,相信无论是高手还是菜鸟,都能从中得到不少的启发。

  谈到网页搜索引擎时,大多数人都会想到雅虎。的确,雅虎开创了一个互联网络的搜索时代。然而,雅虎目前用于搜索网页的技术却并非该公司原先自己开发的。2000年8月,雅虎采用了Google(www.google.com)这家由斯坦福大学学生创建的风险公司的技术。理由非常简单,Google的搜索引擎比雅虎先前使用的技术能更快、更准确搜索到所需要的信息。

  让我们自己来设计、开发一个强劲、高效的搜索引擎和数据库恐怕短时间内在技术、资金等方面是不可能的,不过,既然雅虎都在使用别人的技术,那么我们是不是也可以使用别人现成的搜索引擎网站呢?

剖析编程思路

  我们可以这样设想:模拟一个查询,向某个搜索引擎网站发出相应格式的搜索命令,然后传回搜索结果,对结果的HTML代码进行分析,剥离多余的字符和代码,最后按所需要的格式显示在我们自己的网站页面里。

  这样,问题的关键就在于,我们要选定一个搜索信息准确(这样我们的搜索才会更有意义啊)、速度快(因为我们分析搜索结果并显示需要额外的时间),搜索结果简洁(便于进行HTML源代码分析和剥离)的搜索网站,由于新一代搜索引擎Google的各种优良特性,这里我们选择它为例,来看看用PHP怎样实现后台对Google(www.google.com)搜索、前台个性化显示这一过程。

  我们先来看看Google的查询命令的构成。进入www.google.com网站,在查询栏中输入“abcd”,点击查询按钮,我们可以发现浏览器的地址栏变成:"http://www.google.com/search?q=abcd&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=",可见,Google是通过表单的get方式来传递查询参数并递交查询命令的。我们可以使用PHP中的file()函数来模拟这个查询过程。

了解File()函数

  语法: array file(string filename);

  返回值为数组,将文件全部读入数组变量中。这里的文件可以是本地的,也可以是远程的,远程文件必须指明所使用的协议。例如: result=file(“http://www.google.com/search?q=abcd&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=”),该语句将模拟我们在Google上查询单词“abcd”的过程,并将搜索结果以每行为元素,传回到数组变量 result中。因为这里读取的文件是远程的,所以协议名“http://”不能缺少。

  如果要让用户输入搜索字符进行任意搜索,我们可以做一个输入文本框和提交按钮,并将上文中的被搜索字符“abcd”用变量替换:
<?php
echo ‘<form>’; //没有参数的form,默认提交方式为get,提交到本身
echo ‘<input type="text" name="keywords">’; //构造一个文本输入框
echo ‘<input type="submit" value="查询">’; //构造一个提交查询按钮
echo ‘</form>’;

if (isset( keywords)) //提交后PHP会生成变量 kwywords,即要求下面的程序在提交后运行
{
urlencode( keywords); //对用户输入内容进行URL编码
result=file("http://www.google.com/search?q=". keywords."&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=");
//对查询语句进行变量替换,将查询结果保存在数组变量 result中
result_string=join(" ", result); //将数组$result合并成字符串,各数组元素之间用空格粘和
… //进一步处理
}
?>

  上面的这段程序已经能按用户输入内容进行查询,并将返回的结果合成一个字符串变量$result_string。请注意要使用urlencode()函数将用户输入内容进行URL编码,才可以正常地对输入的汉字、空格以及其他特殊字符进行查询,这样做也是尽可能逼真地模拟Google的查询命令,保证搜索结果的正确性。

对Google的分析

  为了便于理解,现在假设我们所真正需要的东西是:搜索结果的标题。网址和简介等,这是一个简洁而典型的需求。这样,我们所要做的便是:去除Google搜索结果的台头和脚注,包括一个Google的标志、再次搜索的输入框和搜索结果说明等,并且在剩余的搜索结果各项条目中剥离原来的HTML格式标记,替换成我们想要的格式。

  要做到这一点,我们必须仔细地分析Google搜索结果的HTML源码,找到其中的规律。不难发现,在Google的搜索结果的正文总是包含在源码的第一个<p>标记和倒数第二个<p>标记之间,并且倒数第二个<p>标记后紧跟table字符,而且这个组合“<p><table”在源码中也仅有一次,利用这个特点,我们可以这样去除Google的台头和脚注。

  以下所有程序均依次接续在上文程序的“进一步处理”处。

  result_string = strstr( result_string, "<p>"); //取 result_string从第一个<p>开始后的字符串,以去除Google台头
position= strpos( result_string,"<p>table符号的位置
result_string= substr( result_string,0, position);//截取第一个<p>table符号之前的字符串,以去除脚注

应用与实现

  OK,现在我们已经得到有用的HTML源码主干了,剩下的问题是如何自主地显示这些内容。我们再分析一下这些搜索结果条目,发现每个条目之间也是很有规律的用
分隔,也就是各成一个段落,按这个特点我们用explode()函数把每个条目切开:

  语法:explode(string separator, string string);

  返回一个数组,按separator切开后的各个小字串被保存在数组中。

  于是:
result_array=explode("<p>", result_string); //用字串"<p>"把结果切开

  我们就得到一个数组 result_array,其中每个元素都是一个搜索结果条目。我们所要做的仅仅是研究每个条目及其HTML显示格式代码,然后按要求替换就行了。下面用循环来处理 result_array中的每个条目。
for( i=0; ibr> {
… //处理每个条目
}

  对于每个条目,我们也很容易找到一些特点:每个条目都由标题、摘要、简介、类别、网址等组成,每个部分都换行,即包含<br>标记,于是再次分割:(以下处理程序放在上文的循环中)
every_item=explode("<br>", result_array[ i]);

  这样我们得到一个数组 every_item,其中 every_item[0]就是标题, every_item[1]和 every_item[2]两行为摘要, every_item[3]和 every_item[4]等等的头部如果包含“<font size=-1 color=#6f6f6f>简介:</font>”、“类别:”字符,则是简介或类别(因为有的结果条目没有该项),如果头部包含“”则肯定就是网址啦,这种对比判断我们常使用正则表达式(略),如果要替换也很方便,比如包含标题的$every_item[0],其本身是有链接的,我们希望修改这个链接属性,让它在新窗口打开链接:
echo eregi_replace(‘br> {
… //处理每个条目中除去第一项(第一项为标题,已经显示)的每一项
… //更多格式修改
}

  这样就修改了链接属性,其余很多显示格式的修改、剥离、替换都能用正则替换eregi_replace()来完成。

  至此我们已经得到了每个搜索条目的每一项,并能任意修改每项的格式,甚至可以给他套上漂亮的表格。然而一个好的程序应该能适应各种运行环境的,这里也不例外,我们其实还只是讨论了搜索结果的HTML剥离的一种框架方法,真正要做得完美,还要考虑很多内容,比如要显示一共搜索出多少结果,分成多少页等等,甚至还可以刨除与Google相关的那些“类别”、“简介”等代码,让客户根本看不到原始网站。不过这些内容和要求我们都能通过分析HTML进行剥离得到。现在大家完全能自己动手,做个极富个性化的搜索引擎啦。


阿历斯 计算机技术网
Copyright @2001 Alex.com lnc,All right reserved.
E-mail:ALEX.net@163.com

 

from;    http://www.microsoft.com/china/technet/prodtechnol/sharepoint/evaluate/featfunc/mssearch.asp

Microsoft 全文搜索技术

白皮书
发布时间:2001年6月

引言

本白皮书介绍了全文搜索的基本概念,并解释了不同 Microsoft® 产品是如何应用全文搜索的。这些信息可以帮助您确定哪个 Microsoft 产品最适合您的信息检索需求。

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) 的组成部分。有关详细信息,请参见“Using Custom Filters with Indexing Service”,网址是 http://msdn.microsoft.com/library/psdk/indexsrv/ixufilt_912d.htm

  • 断字程序和词干程序。断字程序是一个判断查询或待爬行文档的连续字符中字词边界的组件。词干程序从给定的词中提取词根。例如,“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

有关查询语言的详细信息,请参见“Platform SDK”,网址是 http://msdn.microsoft.com/library/psdk/indexsrv/ixqlang_92xx.htm

以下各节讨论采用了 Microsoft 全文搜索技术的 Microsoft 产品。每节都包括产品概述、目标用户以及全文搜索技术与该产品的集成方式。

Microsoft SharePoint Portal Server

概述

SharePoint Portal Server 是一个灵活的门户解决方案,允许您方便地查找、共享和发布信息。有了 SharePoint Portal Server,您可以有效地使用现有信息,并用适合您业务的新方法获得信息。此外,您可以快速部署现成的仪表盘站点,并方便地使用 Web 部件技术来自定义贵单位基于 Web 的视图。

有关 SharePoint Portal Server 的更多信息,请参见 http://www.microsoft.com/sharepoint

目标

SharePoint Portal Server 的目标是 Intranet 门户解决方案,从团队门户开始,直到企业门户。

搜索功能

SharePoint Portal Server 提供了最新、最丰富的搜索和信息查找功能。

    数据访问。SharePoint Portal Server 利用协议处理程序和收集程序来爬行不同内容来源的数据,并对这些数据进行搜索。现成的 SharePoint Portal Server 可以爬行以下来源的数据:

    • 文件系统
    • Web 站点
    • Exchange 2000 Server 和 Exchange Server 5.5 计算机
    • Lotus Notes 服务器
    • 其它 SharePoint Portal Server 工作区

    虽然 SharePoint Portal Server 不能直接访问 OLE DB、开放式数据库连接 (ODBC) 和其它关系数据访问标准,但它能使用 HTTP 爬行数据库信息。为此,您必须创建一个呈现数据库中每行信息的 Active Server Page (ASP) 页。

    Microsoft SharePoint Portal Server SDK 记录协议处理程序接口。这个接口允许开发人员为使用其它特有数据访问方法(比如文档管理系统或归档解决方案)的文档知识库编写协议处理程序。SharePoint Portal Server 的资源工具包中有一些协议处理程序,可以用于爬行文件传输协议 (FTP) 站点和 SharePoint Team Services 站点。

  • 筛选器。 SharePoint Portal Server 中还有用于 Microsoft Office 文档、HTML 文件、标记图形文件格式 (TIFF) 文件和文本文件的筛选器。TIFF 筛选器使 SharePoint Portal Server 可以爬行基于光学字符识别 (OCR) 技术的已保存的传真数据。从 Exchange 公共文件夹筛选消息时,SharePoint Portal Server 可使用多用途 Internet 邮件扩展 (MIME) 筛选器,此程序是与 Windows 2000 一起提供的。SharePoint Portal Server 还支持第三方和自定义文件类型,比如 Adobe PDF 筛选器。有关 PDF 筛选器的详细信息,请访问 Adobe Web 站点。
  • 级别。SharePoint Portal Server 提供了一个概率级别高级算法,它基于 Microsoft 研究队伍获得的信息检索成果。此算法可保证在搜索结果顶部返回与用户查询相关性最强的文档,提高了用户的效率和满意度。

    级别公式是由 Microsoft 研究人员和城市大学教授 Stephen Robertson 一起开发的,后者是著名的计算机专业兴趣组协会信息检索 (ACM SIGIR) 2000 Salton 奖项获得者。Microsoft 全文搜索采用的级别公式就是这项研究的直接成果。在计算文档的可能相关性时,此公式采用了以下几个因数:

    • 文档长度
    • 查询词在整个文档集合中出现的频率
    • 含有查询词的文档的数量
    • 整个文档集合中的文档数量
  • 最佳匹配。此功能让有相应权限的用户将单个文档标记为最适合特定查询或类别的文档。即使在最先进的概率级别环境中,某些文档还是缺乏文字信息,不能在特定查询词的搜索结果中突出出来。最佳匹配功能可以最有效地解决这个问题,它有两个方法,一是将特别标定的文档放在搜索结果列表的最上面,或者在用户浏览类别时突出显示这些文档。SharePoint Portal Server 的现成仪表盘站点也能在文档级别非常高时凸显出最佳匹配文档。
  • 自动分类。除了简单的搜索外,SharePoint Portal Server 还提供了自动分类。此功能允许用户定义类别层次,然后在层次结构内用文档集合示例作为培训示例。培训后,存储在服务器上的文档和爬行后的文档会被自动标记并显示在类别层次结构中。
  • 方案支持。SharePoint Portal Server 使用升级和降级方法提供了与 Office 兼容的简化了的方案管理工具。用户可以定义文档配置文件和相关属性。在升级过程中,Office 文档的属性值被复制到一个 SharePoint Portal Server 文档配置文件的属性中。在降级时,SharePoint Portal Server 文档配置文件中的属性值被复制到 Office 文档。SharePoint Portal Server 中的全文搜索与这个方案紧密集成。高级搜索使用属性和文档配置文件。
  • 可扩展性和可编程性。SharePoint Portal Server 仪表盘站点基于 Microsoft 数字仪表盘技术。Microsoft 数字仪表盘技术允许您将商业应用程序和自定义内容方便地与 SharePoint Portal Server 的内置全文搜索功能集成在一起。它以 Web 部件的形式提供查询提交和搜索结果,可以与自定义 Web 部件一起方便地在仪表盘站点上共存。但是,查询提交和搜索结果这两个 Web 部件必须相互依存才能使用,因此必须位于 SharePoint Portal Server 计算机上。SharePoint Portal Server SDK 支持通过记录搜索 API 来开发自定义搜索解决方案。您可以使用 ActiveX® 数据对象 (ADO)、OLE DB 或基于 Web 的分布式编辑和版本控制 (WebDAV) 协议来操作搜索。SharePoint Portal Server 没有为管理其搜索、文档管理和仪表盘站点功能提供自动接口。
  • 查询语言。SharePoint Portal Server 使用 SQL 全文扩展。查询用分布式编辑和版本控制搜索和定位 (DASL) 请求(HTTPDAV 的一部分)提交。有关详细信息,请参见 SharePoint Portal Server SDK。
  • 订阅。SharePoint Portal Server 订阅功能使用户可以订阅文档、文件夹、类别和搜索结果的更改信息。订阅将一直作为长期查询存在。出现更改时,订户将接到通知。要用编程方式添加订阅,请参见 SharePoint Portal Server SDK。订阅是使用 Persistent Query Service (PQS) 规则实施的。PQS 是一个反向查询处理器。它对单个文档评估一大组查询,判断哪些查询与该文档匹配。这样可以在每个新文档进入 SharePoint Portal Server 存储区时识别匹配的订阅。订阅提供了“推”模式,以匹配全文搜索的“拉”模式。
  • 适应性爬行。Site Server 3.0 推出了增量爬行,它用比较时间戳的方法来只加入自上一次更新索引后更改的文档。增量更新减少了重复爬行时的索引工作量。但是,增量更新不能取消每次爬行时比较以前已爬行文档的时间戳的工作。适应性爬行则更进一步。爬行时,适应性爬行算法收集每个文档更改率的统计信息。在以后的适应性爬行中,算法只针对那些可能已经被更改过的文档。

SharePoint Portal Server 并不完全取代 Site Server 的功能,但 SharePoint Portal Server 中使用的搜索技术比 Site Server 使用的搜索技术要新得多。此外,SharePoint Portal Server 使用高级级别算法,并有允许搜索现成仪表盘站点的高级功能。这些高级功能包括最佳匹配、类别和 Office 方案集成。

SharePoint Portal Server 通过提供多线程索引引擎,提供了比 Site Server 3.0 优越得多的索引性能,适应性爬行的使用也大大减少了执行增量索引所需的时间。

Microsoft 索引服务

概述

索引服务是 Microsoft Windows 2000 对文件系统和 Web 服务器的一项基本服务。它以前叫做 Index Server,原来的功能是爬行和创建 Internet Information Services (IIS) Web 服务器内容的类别。索引服务现在可创建文件系统及虚拟 Web 站点内容和属性的类别。

目标

作为一个操作系统组件,索引服务的目标用户与 Windows 的目标用户一样广泛。索引服务的目标是用户桌面,为个人用户带来搜索存储在本地磁盘上信息的增强体验。在 Windows 中,当您单击“开始”菜单中的“搜索”按钮,按 CTRL + F,单击 Windows 资源管理器中的“搜索”按钮以及单击 Office XP 中的搜索任务窗格的时候,索引服务就出现了。索引服务提供管理和查询对象,利用它们可以快速开发自定义搜索应用程序。索引服务类别可以扩展,以包括远程文件共享中的信息。这样的自定义应用程序可以用于垂直应用程序或用户组,并可以爬行多个位置的信息。

索引服务可以从 Internet 站点提供全文搜索。索引服务可以用于驱动自定义搜索 Web 应用程序。除了查询语言支持外,索引服务还提供了面向自定义应用程序开发人员的全面编程功能:用于查询和管理的脚本对象、OLE DB 提供程序以及 ADO 兼容性。

搜索功能

  • 数据访问。索引服务并不包括跨协议的收集组件。它可以访问文件系统中的所有数据,包括本地文件系统和远程计算机上的共享文件系统。索引服务利用 IIS 配置数据库 (Metabase) 来了解将哪些文件映射到 Web 站点内容,从而简化了 Web 站点内容的索引。然后索引服务根据 IIS 配置数据库的信息爬行本地 Web 站点。索引服务并不使用 HTTP 协议来爬行 Web 站点。因此,索引服务不能爬行动态呈现的内容(如引用数据库的 ASP 页)和每个用户各不相同的个性化内容。
  • 筛选器。索引服务使用操作系统上已经安装的筛选器,包括新闻和电子邮件 MIME 筛选器、Office 文档的 Office 筛选器以及 HTML 筛选器。
  • 级别。索引服务使用基于矢量空间模型的级别算法。该算法的有关信息在 Platform SDK 中。使用的默认算法是 Jaccard 公式。有关索引服务的级别公式的更多信息,请参见 http://msdn.microsoft.com/library/psdk/indexsrv/ixqlang_5dtf.htm
  • 方案支持。索引服务提供丰富广泛的方案支持。使用 Microsoft 管理控制台 (MMC),用户可以查看来自文档的所有建立了索引的属性,并指定哪些属性要保存到属性高速缓存,以便迅速检索。
  • 可扩展性和可编程性。索引服务为全文搜索应用程序提供了一个平台。它包括一个完整的编程接口集:用于管理和查询的脚本接口以及一个用于搜索的 OLE DB 提供程序。Platform SDK 中提供了与索引服务编程接口有关的更多信息。
  • 查询语言。索引服务通过灵活的查询语言提供了快速访问文件的途径。索引服务支持 Query Dialect 1、Query Dialect 2 和 SQL 全文扩展。

Platform SDK 中有一个索引服务 3.0(与 Windows 2000 一起提供)的新功能列表。详细信息请参见 http://msdn.microsoft.com/library/default.asp?url=/library/en-us
/indexsrv/hh/indexsrv/ixintro_24og.asp

开发自定义应用程序时要想提供对 Internet 站点内容的全文搜索,索引服务是一个高性能的解决方案。而对于主要采用结构化数据的应用程序,它就不太合适了。这类应用程序应考虑使用 Microsoft SQL Server 2000。若考虑的是立即就能使用,或者用于需要聚合不同来源和来源类型的内容的应用程序,SharePoint Portal Server 是合适的选择。

索引服务是一个可选的操作系统组件。文件系统内容的初始索引需要大量资源,会影响桌面应用程序的性能。因此,默认情况下并未启用索引服务。

Microsoft SQL Server 2000

概述

SQL Server 2000 是一个产品系列,它满足最大的数据处理系统和商业 Web 站点的数据存储和分析要求。SQL Server 2000 可以为个人或小企业提供便于使用的数据存储和分析服务。

有关 SQL Server 2000 的更多信息,请参见 http://www.microsoft.com/sql

目标

SQL 2000 中的全文搜索目标是对以结构化数据为主、但同时包括文字信息和非结构化信息的数据进行搜索。

搜索功能

SQL Server 2000 采用的搜索引擎与 SharePoint Portal Server 相同,利用了同样的高级级别算法的优点,并使用了 SharePoint Portal Server 使用的针对 SQL 的全文扩展子集。

  • 数据访问。SQL server 中的全文搜索只能用于搜索存储在 SQL 列中的内容。
  • 筛选器。SQL Server 2000 使用服务器上已经安装的筛选器来处理存储在数据库列中的文档。用户可以使用 IMAGE 类型的列来存储文档,然后另外用一列来指定文档类型。接着由全文搜索根据文档类型来应用相应的筛选器,比如 HTML、Office 或者第三方筛选器。此外,全文搜索可以应用于 [N]CHAR、[N]VARCHAR 和 [N]TEXT 类型的列内容。
  • 可扩展性和可编程性。全文搜索 SQL 扩展与 T-SQL 语言集成在一起。用户可以指定 SQL 查询,这些查询跨越 SQL 表的结构化数据、以及 SQL 列中、列中嵌入的文档中以及来自文件系统的非结构化数据。

有关 SQL Server 全文搜索功能的更多信息,请参见 http://www.microsoft.com/SQL/evaluation/features/fulltext.asp

全文搜索是作为 SQL Server 7.0 的一个 SQL 服务器功能出现的。有关 SQL 7.0 中全文搜索的更多信息,请参见标题为“Textual Searches on Database Data Using SQL Server 7.0”的白皮书,网址是
http://www.microsoft.com/SQL/techinfo/development/70/textsearch.asp。有关用 SQL Server 全文搜索将文件系统和 SQL 表结合在一起的信息,请参见标题为“Textual Searches on File Data Using Microsoft SQL Server 7.0”的白皮书,网址是
http://www.microsoft.com/SQL/techinfo/administration/70/filedata.asp

Microsoft Site Server

概述

Site Server 的设计目的是帮助您最佳利用企业 Intranet。Site Server 允许用户快捷地发布、查找和共享信息。它的功能包括巨大的搜索能力以及全面分析 Intranet 利用率和效率的多个工具。

Site Server Commerce Edition 是一个全面的 Internet 商务服务器,它允许您预定客户、进行商业交易并分析商务 Web 站点。Site Server Commerce Edition 具有高度的可伸缩性和安全性,简化并集成了您与分销商和供应商的在线交易。

详细信息请参见 http://www.microsoft.com/siteserver

目标

自 1998 年 5 月出现 Site Server 3.0 Standard Edition 和 Site Server 3.0 Commerce Edition 以来,Web 市场已经得到巨大发展。Site Server 3.0 Standard Edition 的目标是 Intranet 空间,它允许用户查找、分享信息并将信息发布到企业 Intranet 上。相比之下,Site Server 3.0 Commerce Edition 的目标是 Internet 空间,可以进行在线金融交易、分析交易并与消费者进行个性化互动。

从那以后,Intranet 市场需求发生了巨大变化,形成了一个门户市场,对核心服务和应用程序集成的需求越来越大,而且一直需要强健的企业范围搜索功能。因此,产品重点也发生了相应的变化。Site Server 3.0 Standard Edition 的搜索技术继续在 SharePoint Portal Server 中得以运用。Site Server 3.0 Commerce Edition 的电子商务和 Internet 功能现在可以用 Microsoft E-Commerce Business Solutions 得到最佳体现。详细信息请参见 http://www.microsoft.com/business/

搜索功能

  • 数据访问。Site Server 推出了收集概念和协议处理程序概念。Site Server 可以爬行 Exchange Server 5.5 计算机和 Web 站点。收集程序可以处理层次结构(文件系统)和 Web 空间 (HTTP)。Site Server 不支持自定义协议处理程序。它的接口不能扩展以支持新的文档存储。

    Site Server 可以用呈现数据库中各行信息的 ASP 页爬行数据库信息。

  • 筛选器。Site Server 使用的筛选器与索引服务相同。Site Server 使用操作系统上已经安装的筛选器,包括新闻和电子邮件 MIME 筛选器、Office 文档的 Office 筛选器以及 HTML 筛选器。
  • 级别。Site Server 使用的级别与索引服务相同。Site Server 使用基于矢量空间模型的级别算法。这一算法的有关信息在 Platform SDK 中。使用的默认算法是 Jaccard 公式。
  • 方案支持。Site Server 提供丰富、广泛的方案支持。用户可以用它特有的管理界面定义 OLE DB 数据类型的属性。
  • 可扩展性和可编程性。Site Server 有自己的对象模型。详细信息请参见
    http://www.microsoft.com/siteserver/site/DeployAdmin/SearchDatabase.htm
  • 查询语言。Site Server 使用 Query Dialect 1 和 SQL 全文扩展。

Microsoft Exchange 2000 Server

概述

Exchange 2000 Server 与 Windows 2000 操作系统无缝地集成在一起,设计用于满足不同规模企业的消息传递和协作需求。与其客户端软件 Outlook 2000 一起使用时,Exchange 提供了一个非常可靠、可缩放并易于使用的消息传递和协作基础结构。

详细信息请参见 http://www.microsoft.com/exchange

目标

如果您的主要用途是爬行电子邮件消息,则应该使用 Exchange 2000 Server。利用 Exchange 2000 全文搜索,服务器可以在个人邮箱和所有用户使用的公共文件夹中搜索传递的邮件。

如果您希望搜索电子邮件和其它来源,请使用 SharePoint Portal Server。但是 SharePoint Portal Server 不支持爬行专用邮箱。

搜索功能

Exchange 2000 Server 使用的搜索技术与 SharePoint Portal Server 相同。它使用群集能力经过证明的版本。

  • 数据访问。数据访问限于存储在 Exchange 公共文件夹和邮箱中的信息。
  • 筛选器。Exchange 全文搜索使用 MIME 筛选器来爬行传递的邮件。附件的处理要根据其内容类型使用可用的筛选器。
  • 级别。Exchange 2000 Server 使用的高级概率级别算法与 SharePoint Portal Server 相同。此算法可保证在搜索结果顶部返回与查询相关性最强的文档,提高了用户的效率和满意度。
  • 可扩展性和可编程性。Exchange 2000 Server 在搜索时使用 HTTPDAV 协议,特别是 DASL。详细信息请参见
    http://msdn.microsoft.com/library/backgrnd/html/webstorewp.htm
  • 查询语言。Exchange 2000 中的全文搜索通过分布式编辑和版本控制 (DAV) 协议使用并支持 SQL 全文扩展。使用 Exchange 2000 时,Outlook 的高级搜索可以利用 Exchange 全文搜索。然后将自然语言查询直接提交到服务器。它没有 SQL 查询语言的客户端支持。

有关详细信息,请参见标题为“Best Practices for Deploying Full-Text Indexing”的白皮书,网址是
http://www.microsoft.com/exchange/techinfo/deployment/2000/BestIndexing.doc

Microsoft Office XP 搜索

概述

世界领先的效率软件套件 Microsoft Office 可帮助您完成常见的工作任务,包括字处理、电子邮件、演示文稿、数据管理和分析等。

目标

如果您是 Office 用户,而且您希望在桌面工作,请使用 Office XP 搜索。Office XP 使您不仅可以搜索本地硬盘,而且还能搜索文件共享和 SharePoint Portal Server 计算机。

搜索功能

  • 数据访问。在 Windows 2000 计算机上,如果启用了索引服务,它会创建一个本地磁盘索引。在运行 Microsoft Windows NT® 4.0 版本、Windows 98 或 Windows Millennium 的计算机上,Microsoft Office XP 提供一个 SharePoint Portal Server 上使用的搜索引擎版本,用于爬行本地磁盘。索引服务或 Office 搜索索引引擎则由用户自己激活。如果未启用索引,Office XP 则提供一个速度较慢、未建立索引形式的搜索。
  • 用户界面。 Office XP 提供一个搜索任务窗格,可以通过 Word、Excel 和 PowerPoint 访问。
  • 高级功能。任务窗格提供对用户本地硬盘、远程服务器(通过索引服务)、SharePoint Portal Server 计算机、SharePoint Team Services 站点(其全文搜索功能采用索引服务)和 Outlook 邮件(PST 文件或 Exchange 邮箱)的联合搜索。查询代理组件将搜索命令分配给每个存储区的搜索提供程序。
  • 可扩展性和可编程性。Office 应用程序可以通过一个类似 FindFast API 的 API 对这些搜索查询代理进行编程。详细信息请参见
    http://www.microsoft.com/office/ork/xp/five/wgtd01.htm

结论

本白皮书介绍了全文搜索的基本概念,并解释了不同 Microsoft 产品是如何应用全文搜索的。这些信息可以帮助您确哪些 Microsoft 产品最适合您的信息检索需求。

附录 A 提供了以下产品的技术对比和功能对比:

  • SharePoint Portal Server
  • 索引服务
  • Site Server
  • SQL Server 2000
  • Exchange 2000 Server
  • Office XP

附录 A – 对比表

下面的这些表格显示了以下产品的技术对比和功能对比:

  • SharePoint Portal Server
  • 索引服务
  • Site Server
  • SQL Server 2000
  • Exchange 2000 Server
  • Office XP

技术对比


SharePoint Portal Server
索引服务
Site Server
SQL Server 2000
Exchange 2000 Server
Windows 2000 上的 Office XP
Windows 98 或 Millennium Edition 上的 Office XP
使用专门查询语言的全文搜索


对钩

对钩



对钩

对钩

使用 SQL 全文扩展的全文搜索

对钩

对钩

对钩

对钩

对钩



布尔型级别算法

对钩

对钩

对钩





高级概率级别算法

对钩



对钩

对钩


对钩

使用多个数据访问协议

对钩


对钩





功能比较


SharePoint Portal Server
索引服务
Site Server
SQL Server 2000
Exchange 2000 Server
Windows 2000 上的 Office XP
Windows 98 或 Millennium Edition 上的 Office XP
爬行:








文件系统

对钩

对钩

对钩



对钩
仅本地

对钩
仅本地

Web 站点

对钩

对钩
仅本地,通过文件系统

对钩





Lotus Notes

对钩







Exchange 5,5

对钩
公共文件夹


对钩





Exchange 2000

对钩
公共文件夹




对钩
公共文件夹和专用邮箱



SQL 表

对钩
通过 ASP


对钩
通过 ASP

对钩




SharePoint Portal Server 工作区

对钩





对钩

对钩

第三方协议

对钩







最佳匹配

对钩







类别

对钩







最终用户界面

仪表盘站点

Windows 2000 上的 Windows 资源管理器和自定义

自定义

自定义

Outlook(通过高级查找),自定义

Office 搜索任务窗格

Office 搜索任务窗格

有关详细信息,请参阅: http://www.microsoft.com/sharepoint/
http://www.microsoft.com/technet/prodtechnol/sharepoint/default.asp

本文档所包含的信息代表了在发布之日,Microsoft Corporation 对所讨论问题的当前看法。因为 Microsoft 必须顺应不断变化的市场条件,故该文档不应理解为 Microsoft 一方的承诺,Microsoft 不保证所给信息在发布之日以后的准确性。

本白皮书仅供参考。在本文档中,MICROSOFT 不做任何明示或暗示的保证。

用户必须遵守所有适用的版权法。在不对版权法所规定的权利加以限制的情况下,未得到 Microsoft 公司明确的书面许可,不得为任何目的、以任何形式或手段(电子的、机械的、影印、录制等等)复制、传播本文的任何部分,也不得将其存储或引入到检索系统中。

Microsoft 可能拥有本文档主题涉及到的专利、专利使用、商标、版权或其它知识产权。除非在 Microsoft 书面许可协议中明确提到,否则购买本文档并不向您提供其中的任何专利、商标、版本或其他知识产权。

此处作为例子提到的公司、组织、产品、人和事件均属虚构。决不意指任何实际的公司、机构、产品、人员和事件。

© 2001 Microsoft Corporation。保留所有权利。

Microsoft、ActiveX、Outlook、PowerPoint、SharePoint、Windows 和 Windows NT 是 Microsoft Corporation 在美国和/或其它国家(地区)的注册商标或商标。

此处提到的实际公司和产品名称可能是其各自所有者的商标。

from:     http://www.fullsearcher.com/n200491114034735.asp

中文搜索引擎技术揭密:系统架构
http://FullSearch.Com 中文全文检索网 2004-9-18 23:15:24 winter
关键词:中文搜索引擎技术揭密

     互联网发展的今天,一方面离不开其开放、共享的特性带给人们的全新体验,另一方面也离不开数以亿计的为其提供各类丰富内容的网络节点。互联网被普及前,人们查阅资料第一想到的便是拥有大量书籍资料的图书馆,到了今天你怎么想?或许今天的很多人都会选择一种更方便、快捷、全面、准确的方式——互联网。你可以坐在家里轻点几下鼠标就查到想要的各类信息,这在互联网没有被普及之前,还都仅是一个梦而已,但如今这一切已成为了可能。

  而帮助你通过整个互联网快速查找到目标信息的就是越来越被重视的搜索引擎。有关搜索引擎的技术资料网络上已经很多,关于搜索引擎经济的多方面报道各大媒体也都已经铺天盖地,因此在这里小编并不想过多的谈论这些方面的感受,只想在本次“中文搜索引擎技术揭密”系列文章全部完成之际来聊一下搜索引擎对小编的深远影响。


  记得2000年左右网络上开始大量出现免费个人主页空间,当时的小编还只是一个刚刚进入IT圈的小朋友,看着这些空间那叫一个口水横流,于是乎立刻申请了一个。又经过了一个多月的刻苦修炼和先后三次的改版,自己有生以来的第一个个人主页诞生了。可看着每天寥寥无几的访问量,心里那叫一个难受,可一时间也想不到好办法解决问题。突然有天发现一篇介绍如何在搜索引擎注册自己个人网站的文章,于是小编就照着文章所讲的分别在SOHU、网易等搜索引擎的相关分类目录下注册了自己的个人主页。直至今日,小编才确切的知道了当时盛行的搜索引擎都属“目录搜索引擎”。这实际上是小编第一次使用、认识搜索引擎,再后来通过每天个人主页不断上升的数字小编感觉到了搜索引擎的神奇。


  其实正是由于搜索引擎,才使小编的个人主页被更多的人所熟识,以至于后来有多份工作都是因为这个个人主页所带来的机会。其实这些经历或许很多人都有切身的体会,同样也有很多人因此去全身投入到互联网工作中。这正像那句话讲的“世界真奇妙,不看不知道”,小编在此多加一句“到底怎么看,搜索引擎帮你忙!”


  互联网在近10年的得到飞速发展,互联网正在逐渐深入人们的生活,改变人们的生活。互联网经济也经历了风风雨雨,从缓慢起步到急速膨胀,从泡沫破灭到逐步回暖;从“网络广告”到“拇指经济”,从“网络游戏”到“搜索力经济”。目前,搜索引擎成为最受人们关注的焦点之一,也成为亿万富翁的制造摇篮。越来越多的公司都希望在搜索引擎这座金矿中挖到筐金子,其中许多人会选择拥有自己的搜索引擎。国内著名搜索引擎公司百度(http://www.baidu.com)总裁李彦宏说:搜索引擎不是人人都能做的领域,进入的门槛比较高。


  搜索引擎的门槛到底有多高?搜索引擎的门槛主要是技术门槛,包括网页数据的快速采集、海量数据的索引和存储、搜索结果的相关性排序、搜索效率的毫秒级要求、分布式处理和负载均衡、自然语言的理解技术等等,这些都是搜索引擎的门槛。对于一个复杂的系统来说,各方面的技术固然重要,但整个系统的架构设计也同样不可忽视,搜索引擎也不例外。


 


  搜索引擎技术和分类


  搜索引擎的技术基础是全文检索技术,从20世纪60年代,国外对全文检索技术就开始有研究。全文检索通常指文本全文检索,包括信息的存储、组织、表现、查询、存取等各个方面,其核心为文本信息的索引和检索,一般用于企事业单位。随着互联网信息的发展,搜索引擎在全文检索技术上逐渐发展起来,并得到广泛的应用,但搜索引擎还是不同于全文检索。搜索引擎和常规意义上的全文检索主要区别有以下几点:


  1、数据量


  传统全文检索系统面向的是企业本身的数据或者和企业相关的数据,一般索引库规模多在GB级,数据量大的也只有几百万条;但互联网网页搜索需要处理几十亿的网页,搜索引擎的策略都是采用服务器群集和分布式计算技术。


  2、内容相关性


  信息太多,查准和排序就特别重要,Google等搜索引擎采用网页链接分析技术,根据互联网上网页被链接次数作为重要性评判的依据;但全文检索的数据源中相互链接的程度并不高,不能作为判别重要性的依据,只能基于内容的相关性排序。


  3、安全性


  互联网搜索引擎的数据来源都是互联网上公开的信息,而且除了文本正文以外,其它信息都不太重要;但企业全文检索的数据源都是企业内部的信息,有等级、权限等限制,对查询方式也有更严格的要求,因此其数据一般会安全和集中地存放在数据仓库中以保证数据安全和管理的要求。


  4、个性化和智能化


  搜索引擎面向的是互联网访问者,由于其数据量和客户数量的限制,自然语言处理技术、知识检索、知识挖掘等计算密集的智能计算技术很难应用,这也是目前搜索引擎技术努力的方向;而全文检索数据量小,检索需求明确,客户量少,在智能化和个性可走得更远。


  搜索引擎与全文检索除了以上的区别外,还结合互联网信息的特点形成了三个不同的类型:


  全文检索搜索引擎:全文搜索引擎是名副其实的搜索引擎,国外具代表性的有Google (http://www.google.com) 、yahoo(http://search.yahoo.com) 、AllTheWeb (http://www.alltheweb.com ) 等,国内著名的有百度(http://www.Baidu.com)、中搜(http://www.zhongsou.com)。它们都是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户,也是目前常规意义上的搜索引擎。


  目录搜索引擎:目录索引虽然有搜索功能,但在严格意义上算不上是真正的搜索引擎,仅仅是按目录分类的网站链接列表而已。用户完全可以不用进行关键词查询,仅靠分类目录也可找到需要的信息。国外比较著名的目录索引搜索引擎有yahoo(http://www.yahoo.com)Open Directory Project(DMOZ)(http://www.dmoz.com/)、LookSmart(http://www.looksmart.com)等。国内的搜狐(http://www.sohu.com)、新浪(http://www.sina.com)、网易(http://www.163.com)搜索也都具有这一类功能。


  元搜索引擎:元搜索引擎在接受用户查询请求时,同时在其它多个引擎上进行搜索,并将结果返回给用户。著名的元搜索引擎有Dogpile(http://www.dogpile.com)、Vivisimo(http://www.vivisimo.com)等,国内元搜索引擎中具代表性的有搜星搜索引擎(http://www.soseen.com/),优客搜索(http://www.yok.com)。在搜索结果排列方面,有的直接按来源引擎排列搜索结果,如Dogpile,有的则按自定的规则将结果重新排列组合,如Vivisimo。


  其他的像新浪(http://search.sina.com.cn)、网易(http://search.163.com)、A9(http://www.A9.com)等搜索引擎都是调用其它全文检索搜索引擎,或者在其搜索结果的基础上做了二次开发。


 


    搜索引擎的系统架构


  这里主要针对全文检索搜索引擎的系统架构进行说明,下文中提到的搜索引擎如果没有特殊说明也是指全文检索搜索引擎。搜索引擎的实现原理,可以看作四步:从互联网上抓取网页→建立索引数据库→在索引数据库中搜索→对搜索结果进行处理和排序。  


  1、从互联网上抓取网页


  利用能够从互联网上自动收集网页的网络蜘蛛程序,自动访问互联网,并沿着任何网页中的所有URL爬到其它网页,重复这过程,并把爬过的所有网页收集到服务器中。


  2、建立索引数据库


  由索引系统程序对收集回来的网页进行分析,提取相关网页信息(包括网页所在URL、编码类型、页面内容包含的关键词、关键词位置、生成时间、大小、与其它网页的链接关系等),根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度(或重要性),然后用这些相关信息建立网页索引数据库。


  3、在索引数据库中搜索


  当用户输入关键词搜索后,分解搜索请求,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页。


  4、对搜索结果进行处理排序


  所有相关网页针对该关键词的相关信息在索引库中都有记录,只需综合相关信息和网页级别形成相关度数值,然后进行排序,相关度越高,排名越靠前。最后由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来返回给用户。


  下图是一个典型的搜索引擎系统架构图,搜索引擎的各部分都会相互交错相互依赖。其处理流程按照如下描述:


搜索引擎系统架构


  “网络蜘蛛”从互联网上抓取网页,把网页送入“网页数据库”,从网页中“提取URL”,把URL送入“URL数据库”,“蜘蛛控制”得到网页的URL,控制“网络蜘蛛”抓取其它网页,反复循环直到把所有的网页抓取完成。


  系统从“网页数据库”中得到文本信息,送入“文本索引”模块建立索引,形成“索引数据库”。同时进行“链接信息提取”,把链接信息(包括锚文本、链接本身等信息)送入“链接数据库”,为“网页评级”提供依据。


  “用户”通过提交查询请求给“查询服务器”,服务器在“索引数据库”中进行相关网页的查找,同时“网页评级”把查询请求和链接信息结合起来对搜索结果进行相关度的评价,通过“查询服务器”按照相关度进行排序,并提取关键词的内容摘要,组织最后的页面返回给“用户”。


 


  搜索引擎的索引和搜索


  对于网络蜘蛛技术和排序技术请参考作者其它文章[1][2],这里以Google搜索引擎为例主要介绍搜索引擎的数据索引和搜索过程。


  数据的索引分为三个步骤:网页内容的提取、词的识别、标引库的建立。


  互联网上大部分信息都是以HTML格式存在,对于索引来说,只处理文本信息。因此需要把网页中文本内容提取出来,过滤掉一些脚本标示符和一些无用的广告信息,同时记录文本的版面格式信息[1]。词的识别是搜索引擎中非常关键的一部分,通过字典文件对网页内的词进行识别。对于西文信息来说,需要识别词的不同形式,例如:单复数、过去式、组合词、词根等,对于一些亚洲语言(中文、日文、韩文等)需要进行分词处理[3]。识别出网页中的每个词,并分配唯一的wordID号,用于为数据索引中的标引模块服务。


  标引库的建立是数据索引中结构最复杂的一部分。一般需要建立两种标引:文档标引和关键词标引。文档标引分配每个网页一个唯一的docID号,根据docID标引出在这个网页中出现过多少过wordID,每个wordID出现的次数、位置、大小写格式等,形成docID对应wordID的数据列表;关键词标引其实是对文档标引的逆标引,根据wordID标引出这个词出现在那些网页(用wordID表示),出现在每个网页的次数、位置、大小写格式等,形成wordID对应docID的列表。


  关于索引数据的详细数据结构,有兴趣的朋友可以参看文献[4]。


  搜索的处理过程是对用户的搜索请求进行满足的过程,通过用户输入搜索关键字,搜索服务器对应关键词字典,把搜索关键词转化为wordID,然后在标引库中得到docID列表,对docID列表进行扫描和wordID的匹配,提取满足条件的网页,然后计算网页和关键词的相关度,根据相关度的数值返回前K篇结果(不同的搜索引擎每页的搜索结果数不同)返回给用户。如果用户查看的第二页或者第多少页,重新进行搜索,把排序结果中在第K+1到2*K的网页组织返回给用户。其处理流程如下图所示:


搜索引擎,全文检索


 


  搜索引擎细化趋势


  随着搜索引擎市场空间越来越大,搜索引擎也分得越来越细。互联网没有国界,百度总裁李彦宏所讲:搜索引擎市场是赢家通吃的市场。如果一个搜索引擎要想在搜索市场上有自己的一席之地,必须拥有自己的特色。而且,数以亿计的网民,搜索需求不可能都一样,不同类型的用户需要不同类型的搜索引擎,网页搜索只是搜索需求中的一种,这就决定了搜索引擎会不断细化,各具特色的搜索引擎也陆续出现。


  从技术上讲,各种搜索引擎都具有类似的系统架构,其不同在于搜索的数据源的不同。除了上面提到的网页搜索引擎以外,下面列举几个典型的搜索引擎:


  新闻搜索引擎


  看新闻是许多网民上网的主要目的,新闻搜索也就成了查看新闻的重要工具。新闻搜索引擎实现的过程比较简单,一般是扫描国内外有名的新闻网站,抓取新闻网页,建立自己的新闻数据库,然后提供搜索,只是对新闻网页抓取的频率要求很高,有的需要做到几分钟扫描一次。现在许多大型的网页搜索引擎都提供相应的新闻搜索功能,如:Google新闻搜索(http://news.google.com),中搜新闻搜索(http://news.zhongsou.com),百度新闻搜索(http://news.baidu.com)等。


  音乐搜索引擎


  有了互联网以后,音乐得到了广泛的传播,对于喜欢音乐的网民来说,音乐搜索引擎成了最钟爱的工具。音乐搜索引擎需要监控互联网上大型的音乐网站,抓取其音乐数据的描述信息,形成自己的数据库,音乐的下载和试听都会在其原来的音乐网站上进行。目前有:搜刮网(http://www.sougua.com),百度mp3搜索(http://mp3.baidu.com),1234567搜索(http://www.1234567.com)等。


  图像搜索引擎


  通过图像搜索引擎可以找到自己感兴趣的图片链接,各大搜索引擎也提供了图像搜索功能。图像文件本身不能够被搜索引擎索引,但搜索引擎可以通过链接文本分析和图片注解等得到图片的信息。目前有:Google图像搜索(http://images.google.com/),VisionNext搜索(http://www.eefind.com),百度图像搜索(http://images.baidu.com)等。


  商机搜索引擎


  电子商务一直是互联网的热点,商机搜索对电子商务的发展也起到了巨大的推动作用,商机搜索让互联网经济和传统经营紧密结合在一起,给传统的企业提供了一个新的销售模式。商机搜索引擎,通过抓取电子商务网站的商品信息和其他商业信息,给访问者提供统一的搜索平台。目前有:soaso价格搜索引擎(http://www.soaso.com),8848购物搜索(http://www.8848.com),阿里巴巴商机搜索(http://www.alibaba.com)等。


  其他特色的搜索引擎还有专利搜索、软件搜索、ftp搜索、游戏搜索、法律搜索等等。

 



  标引库的建立是数据索引中结构最复杂的一部分。一般需要建立两种标引:文档标引和关键词标引。文档标引分配每个网页一个唯一的docID号,根据docID标引出在这个网页中出现过多少过wordID,每个wordID出现的次数、位置、大小写格式等,形成docID对应wordID的数据列表;关键词标引其实是对文档标引的逆标引,根据wordID标引出这个词出现在那些网页(用wordID表示),出现在每个网页的次数、位置、大小写格式等,形成wordID对应docID的列表。


  关于索引数据的详细数据结构,有兴趣的朋友可以参看文献[4]。


  搜索的处理过程是对用户的搜索请求进行满足的过程,通过用户输入搜索关键字,搜索服务器对应关键词字典,把搜索关键词转化为wordID,然后在标引库中得到docID列表,对docID列表进行扫描和wordID的匹配,提取满足条件的网页,然后计算网页和关键词的相关度,根据相关度的数值返回前K篇结果(不同的搜索引擎每页的搜索结果数不同)返回给用户。如果用户查看的第二页或者第多少页,重新进行搜索,把排序结果中在第K+1到2*K的网页组织返回给用户。其处理流程如下图所示:


搜索引擎,全文检索


 


  搜索引擎细化趋势


  随着搜索引擎市场空间越来越大,搜索引擎也分得越来越细。互联网没有国界,百度总裁李彦宏所讲:搜索引擎市场是赢家通吃的市场。如果一个搜索引擎要想在搜索市场上有自己的一席之地,必须拥有自己的特色。而且,数以亿计的网民,搜索需求不可能都一样,不同类型的用户需要不同类型的搜索引擎,网页搜索只是搜索需求中的一种,这就决定了搜索引擎会不断细化,各具特色的搜索引擎也陆续出现。


  从技术上讲,各种搜索引擎都具有类似的系统架构,其不同在于搜索的数据源的不同。除了上面提到的网页搜索引擎以外,下面列举几个典型的搜索引擎:


  新闻搜索引擎


  看新闻是许多网民上网的主要目的,新闻搜索也就成了查看新闻的重要工具。新闻搜索引擎实现的过程比较简单,一般是扫描国内外有名的新闻网站,抓取新闻网页,建立自己的新闻数据库,然后提供搜索,只是对新闻网页抓取的频率要求很高,有的需要做到几分钟扫描一次。现在许多大型的网页搜索引擎都提供相应的新闻搜索功能,如:Google新闻搜索(http://news.google.com),中搜新闻搜索(http://news.zhongsou.com),百度新闻搜索(http://news.baidu.com)等。


  音乐搜索引擎


  有了互联网以后,音乐得到了广泛的传播,对于喜欢音乐的网民来说,音乐搜索引擎成了最钟爱的工具。音乐搜索引擎需要监控互联网上大型的音乐网站,抓取其音乐数据的描述信息,形成自己的数据库,音乐的下载和试听都会在其原来的音乐网站上进行。目前有:搜刮网(http://www.sougua.com),百度mp3搜索(http://mp3.baidu.com),1234567搜索(http://www.1234567.com)等。


  图像搜索引擎


  通过图像搜索引擎可以找到自己感兴趣的图片链接,各大搜索引擎也提供了图像搜索功能。图像文件本身不能够被搜索引擎索引,但搜索引擎可以通过链接文本分析和图片注解等得到图片的信息。目前有:Google图像搜索(http://images.google.com/),VisionNext搜索(http://www.eefind.com),百度图像搜索(http://images.baidu.com)等。


  商机搜索引擎


  电子商务一直是互联网的热点,商机搜索对电子商务的发展也起到了巨大的推动作用,商机搜索让互联网经济和传统经营紧密结合在一起,给传统的企业提供了一个新的销售模式。商机搜索引擎,通过抓取电子商务网站的商品信息和其他商业信息,给访问者提供统一的搜索平台。目前有:soaso价格搜索引擎(http://www.soaso.com),8848购物搜索(http://www.8848.com),阿里巴巴商机搜索(http://www.alibaba.com)等。


  其他特色的搜索引擎还有专利搜索、软件搜索、ftp搜索、游戏搜索、法律搜索等等。

 

本文地址:http://www.FullSearcher.Com/n200491114034735.asp
网站地址:http://www.FullSearcher.Com/
文章来源:donews
 

from:    http://www.fullsearcher.com/n2004911142713735.asp

中文搜索引擎技术揭密:网络蜘蛛
http://FullSearch.Com 中文全文检索网 2004-9-18 23:15:33 winter
关键词:中文搜索引擎技术揭密


    随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等;作为普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎查找资料;作为学者,会把有代表性的搜索引擎作为研究对象……

    而作为一个网站的经营者,其更关心的或许是如何通过网络载体让更多的网民知道自己的网站,进而获得更高的流量和知名度。这其中,搜索引擎已经成了一个重要的且是免费的宣传途径。一方面,搜索引擎会主动出击,寻找网络上的各种网页数据,并在后台按相关条件进行索引;另一方面,各大网站为了能让自己的内容更多的通过搜索引擎向网民展示,都开始对网站结构进行重大调整,其中包括扁平化结构设计、动态(网页)转静态(网页)、Sitemap等。


    这些看来不经意的举动都让我们切身感受到搜索引擎对我们网络使用方式的改变起到了重要作用。并且,正因为搜索引擎的兴起以及社会各界对其重视程度日渐高涨,还由此创造了一个全新的职位——SEO。实际上,搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机。网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖掘的金矿。


    搜索引擎一直专注于提升用户的体验度,其用户体验度则反映在三个方面: 准、全、快 。用专业术语讲是:查准率、查全率和搜索速度(即搜索耗时)。其中最易达到的是搜索速度,因为对于搜索耗时在1秒以下的系统来说,访问者很难辨别其快慢了,更何况还有网络速度的影响。因此,对搜索引擎的评价就集中在了前两者:准、全。中文搜索引擎的“准”,需要保证搜索的前几十条结果都和搜索词十分相关,这需由“ 分词技术 ”和“ 排序技术 ”来决定;中文搜索引擎的“全”则需保证不遗漏某些重要的结果,而且能找到最新的网页,这需要搜索引擎有一个强大的网页收集器,一般称为“网络蜘蛛”,也有叫“网页机器人”。



    研究搜索引擎技术的文章不少,但大部分讨论的是如何评价网页的重要性,对于网络蜘蛛研究的文章不多。网络蜘蛛技术并不是一项十分高深的技术,但要做一个强大的网络蜘蛛,却非易事。在目前磁盘容量已经不是瓶颈的时候,搜索引擎一直在扩大自己的网页数量。最大的搜索引擎Google( http://www.google.com )从2002年的10亿网页增加到现在近40亿网页;最近雅虎搜索引擎( http://search.yahoo.com/ )号称收录了45亿个网页;国内的中文搜索引擎百度( http://www.baidu.com )的中文页面从两年前的七千万页增加到了现在的两亿多。据估计,整个互联网的网页数达到100多亿,而且每年还在快速增长。因此一个优秀的搜索引擎,需要不断的优化网络蜘蛛的算法,提升其性能。


    或许有些人有疑问,为何搜索引擎需要用网络蜘蛛抓取网站所有的网页,为什么不在搜索者输入关键词后只把那些需要的结果抓取过来?这实际上是效率问题,搜索引擎不可能在搜索时实时去检查每个网页,而是需要把网页先抓取下来,按照关键词建立好索引,每次搜索的结果都会直接从搜索引擎建立好索引的数据库中查找,然后把结果返回给访问者。 关于搜索引擎系统架构方面的知识, 本文主要介绍网络蜘蛛的相关技术。



网络蜘蛛基本原理


    网络蜘蛛即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。


    对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到;另一个原因是存储技术和处理技术的问题,如果按照每个页面的平均大小为20K计算(包含图片),100亿网页的容量是100×2000G字节,即使能够存储,下载也存在问题(按照一台机器每秒下载20K计算,需要340台机器不停的下载一年时间,才能把所有网页下载完毕)。同时,由于数据量太大,在提供搜索时也会有效率方面的影响。因此,许多搜索引擎的网络蜘蛛只是抓取那些重要的网页,而在抓取的时候评价重要性主要的依据是某个网页的链接深度。


    在抓取网页的时候,网络蜘蛛一般有两种策略:广度优先和深度优先(如下图所示)。广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。深度优先是指网络蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这个方法有个优点是网络蜘蛛在设计的时候比较容易。两种策略的区别,下图的说明会更加明确。


中文搜索引擎技术揭密:网络蜘蛛


    由于不可能抓取所有的网页,有些网络蜘蛛对一些不太重要的网站,设置了访问的层数。例如,在上图中,A为起始网页,属于0层,B、C、D、E、F属于第1层,G、H属于第2层,I属于第3层。如果网络蜘蛛设置的访问层数为2的话,网页I是不会被访问到的。这也让有些网站上一部分网页能够在搜索引擎上搜索到,另外一部分不能被搜索到。 对于网站设计者来说,扁平化的网站结构设计有助于搜索引擎抓取其更多的网页。


    网络蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页是需要会员权限才能访问。当然,网站的所有者可以通过协议让网络蜘蛛不去抓取(下小节会介绍),但对于一些出售报告的网站,他们希望搜索引擎能搜索到他们的报告,但又不能完全免费的让搜索者查看,这样就需要给网络蜘蛛提供相应的用户名和密码。网络蜘蛛可以通过所给的权限对这些网页进行网页抓取,从而提供搜索。而当搜索者点击查看该网页的时候,同样需要搜索者提供相应的权限验证。



网站与网络蜘蛛


    网络蜘蛛需要抓取网页,不同于一般的访问,如果控制不好,则会引起网站服务器负担过重。今年4月,淘宝网( http://www.taobao.com )就因为雅虎搜索引擎的网络蜘蛛抓取其数据引起淘宝网服务器的不稳定。网站是否就无法和网络蜘蛛交流呢?其实不然,有多种方法可以让网站和网络蜘蛛进行交流。一方面让网站管理员了解网络蜘蛛都来自哪儿,做了些什么,另一方面也告诉网络蜘蛛哪些网页不应该抓取,哪些网页应该更新。


    每个网络蜘蛛都有自己的名字,在抓取网页的时候,都会向网站标明自己的身份。网络蜘蛛在抓取网页的时候会发送一个请求,这个请求中就有一个字段为User-agent,用于标识此网络蜘蛛的身份。例如Google网络蜘蛛的标识为GoogleBot,Baidu网络蜘蛛的标识为BaiDuSpider,Yahoo网络蜘蛛的标识为Inktomi Slurp。如果在网站上有访问日志记录,网站管理员就能知道,哪些搜索引擎的网络蜘蛛过来过,什么时候过来的,以及读了多少数据等等。如果网站管理员发现某个蜘蛛有问题,就通过其标识来和其所有者联系。下面是博客中国( http://www.blogchina.com )2004年5月15日的搜索引擎访问日志:


中文搜索引擎技术揭密:网络蜘蛛
    网络蜘蛛进入一个网站,一般会访问一个特殊的文本文件Robots.txt,这个文件一般放在网站服务器的根目录下,如: http://www.blogchina.com/robots.txt 。网站管理员可以通过robots.txt来定义哪些目录网络蜘蛛不能访问,或者哪些目录对于某些特定的网络蜘蛛不能访问。例如有些网站的可执行文件目录和临时文件目录不希望被搜索引擎搜索到,那么网站管理员就可以把这些目录定义为拒绝访问目录。Robots.txt语法很简单,例如如果对目录没有任何限制,可以用以下两行来描述: User-agent: * Disallow:


    当然,Robots.txt只是一个协议,如果网络蜘蛛的设计者不遵循这个协议,网站管理员也无法阻止网络蜘蛛对于某些页面的访问,但一般的网络蜘蛛都会遵循这些协议,而且网站管理员还可以通过其它方式来拒绝网络蜘蛛对某些网页的抓取。


    网络蜘蛛在下载网页的时候,会去识别网页的HTML代码,在其代码的部分,会有META标识。通过这些标识,可以告诉网络蜘蛛本网页是否需要被抓取,还可以告诉网络蜘蛛本网页中的链接是否需要被继续跟踪。例如: 表示本网页不需要被抓取,但是网页内的链接需要被跟踪。


    关于Robots.txt的语法和META Tag语法,有兴趣的读者查看文献[4]


    现在一般的网站都希望搜索引擎能更全面的抓取自己网站的网页,因为这样可以让更多的访问者能通过搜索引擎找到此网站。为了让本网站的网页更全面被抓取到,网站管理员可以建立一个网站地图,即Site Map。许多网络蜘蛛会把sitemap.htm文件作为一个网站网页爬取的入口,网站管理员可以把网站内部所有网页的链接放在这个文件里面,那么网络蜘蛛可以很方便的把整个网站抓取下来,避免遗漏某些网页,也会减小对网站服务器的负担。



内容提取


    搜索引擎建立网页索引,处理的对象是文本文件。对于网络蜘蛛来说,抓取下来网页包括各种格式,包括html、图片、doc、pdf、多媒体、动态网页及其它格式等。这些文件抓取下来后,需要把这些文件中的文本信息提取出来。准确提取这些文档的信息,一方面对搜索引擎的搜索准确性有重要作用,另一方面对于网络蜘蛛正确跟踪其它链接有一定影响。


    对于doc、pdf等文档,这种由专业厂商提供的软件生成的文档,厂商都会提供相应的文本提取接口。网络蜘蛛只需要调用这些插件的接口,就可以轻松的提取文档中的文本信息和文件其它相关的信息。


    HTML等文档不一样,HTML有一套自己的语法,通过不同的命令标识符来表示不同的字体、颜色、位置等版式,如:、、 等,提取文本信息时需要把这些标识符都过滤掉。过滤标识符并非难事,因为这些标识符都有一定的规则,只要按照不同的标识符取得相应的信息即可。但在识别这些信息的时候,需要同步记录许多版式信息,例如文字的字体大小、是否是标题、是否是加粗显示、是否是页面的关键词等,这些信息有助于计算单词在网页中的重要程度。同时,对于HTML网页来说,除了标题和正文以外,会有许多广告链接以及公共的频道链接,这些链接和文本正文一点关系也没有,在提取网页内容的时候,也需要过滤这些无用的链接。例如某个网站有“产品介绍”频道,因为导航条在网站内每个网页都有,若不过滤导航条链接,在搜索“产品介绍”的时候,则网站内每个网页都会搜索到,无疑会带来大量垃圾信息。过滤这些无效链接需要统计大量的网页结构规律,抽取一些共性,统一过滤;对于一些重要而结果特殊的网站,还需要个别处理。这就需要网络蜘蛛的设计有一定的扩展性。


    对于多媒体、图片等文件,一般是通过链接的锚文本(即,链接文本)和相关的文件注释来判断这些文件的内容。例如有一个链接文字为“张曼玉照片”,其链接指向一张bmp格式的图片,那么网络蜘蛛就知道这张图片的内容是“张曼玉的照片”。这样,在搜索“张曼玉”和“照片”的时候都能让搜索引擎找到这张图片。另外,许多多媒体文件中有文件属性,考虑这些属性也可以更好的了解文件的内容。
    动态网页一直是网络蜘蛛面临的难题。所谓动态网页,是相对于静态网页而言,是由程序自动生成的页面,这样的好处是可以快速统一更改网页风格,也可以减少网页所占服务器的空间,但同样给网络蜘蛛的抓取带来一些麻烦。由于开发语言不断的增多,动态网页的类型也越来越多,如:asp、jsp、php等。这些类型的网页对于网络蜘蛛来说,可能还稍微容易一些。网络蜘蛛比较难于处理的是一些脚本语言(如VBScript和JavaScript)生成的网页,如果要完善的处理好这些网页,网络蜘蛛需要有自己的脚本解释程序。对于许多数据是放在数据库的网站,需要通过本网站的数据库搜索才能获得信息,这些给网络蜘蛛的抓取带来很大的困难。对于这类网站,如果网站设计者希望这些数据能被搜索引擎搜索,则需要提供一种可以遍历整个数据库内容的方法。


    对于网页内容的提取,一直是网络蜘蛛中重要的技术。整个系统一般采用插件的形式,通过一个插件管理服务程序,遇到不同格式的网页采用不同的插件处理。这种方式的好处在于扩充性好,以后每发现一种新的类型,就可以把其处理方式做成一个插件补充到插件管理服务程序之中。



更新周期


    由于网站的内容经常在变化,因此网络蜘蛛也需不断的更新其抓取网页的内容,这就需要网络蜘蛛按照一定的周期去扫描网站,查看哪些页面是需要更新的页面,哪些页面是新增页面,哪些页面是已经过期的死链接。
    搜索引擎的更新周期对搜索引擎搜索的查全率有很大影响。如果更新周期太长,则总会有一部分新生成的网页搜索不到;周期过短,技术实现会有一定难度,而且会对带宽、服务器的资源都有浪费。搜索引擎的网络蜘蛛并不是所有的网站都采用同一个周期进行更新,对于一些重要的更新量大的网站,更新的周期短,如有些新闻网站,几个小时就更新一次;相反对于一些不重要的网站,更新的周期就长,可能一两个月才更新一次。
    一般来说,网络蜘蛛在更新网站内容的时候,不用把网站网页重新抓取一遍,对于大部分的网页,只需要判断网页的属性(主要是日期),把得到的属性和上次抓取的属性相比较,如果一样则不用更新。



结论


    本文主要讨论了网络蜘蛛相关的技术要点,如果要设计好的网络蜘蛛, 需要了解更多的技术细节,可以参考文献


    网络蜘蛛在搜索引擎中占有重要位置,对搜索引擎的查全、查准都有影响,决定了搜索引擎数据容量的大小,而且网络蜘蛛的好坏直接影响搜索结果页中的死链接(即链接所指向的网页已经不存在)的个数。目前如何发现更多的网页、如何正确提取网页内容、如果下载动态网页、如何提供抓取速度、如何识别网站内内容相同的网页等都是网络蜘蛛需要进一步改进的问题。

本文地址:http://www.FullSearcher.Com/n2004911142713735.asp
网站地址:http://www.FullSearcher.Com/