您好,欢迎来到爱站旅游。
搜索
您的当前位置:首页使用SQL SERVER 2000的全文检索功能

使用SQL SERVER 2000的全文检索功能

来源:爱站旅游
 

使用SQL SERVER 2000的全文检索功能

步骤:

 

 

3、  这时,我们可以使用Transact-SQL进行全文检索了,我们使用CONTAINSFREETEXT等谓词。如:

 

检索ProductName中,即包含b又包含c的所有列

SELECT *

FROM Products

WHERE CONTAINS(ProductName, '"c*" and "b*" ')

 

检索ProductName中,即包含chai chang tofu之一的所有列

SELECT *

FROM Products

WHERE FREETEXT(ProductName, 'chai chang tofu ')

 

我们还可以使用CONTAINSTABLEFREETEXTTABLE

 

4、  我们可以用.NET创建WEBForm客户端,提供一个良好的全文检索界面,使自己的应用程序得到扩展

 

 

 

参考:

全文查询有关的系统存储过程

 

 

 

全文查询支持

Microsoft? SQL Server? 2000 在接收带全文构造的 Transact-SQL 语句时,使用全文提供程序从 Microsoft 搜索服务检索所需信息。全文构造是 CONTAINS FREETEXT 谓词,或者是 CONTAINSTABLE FREETEXTTABLE 行集函数。如果不知道包含搜索条件的列,全文构造可以在全文索引中引用多列。该进程的流程如下图所示。

这一进程涉及的步骤包括:

应用程序给 SQL Server 实例发送带全文构造的 Transact-SQL 语句。

SQL Server 关系引擎通过查询系统表验证全文构造,确定全文索引是否覆盖列引用。关系引擎将每个 SQL 语句简化为一系列行集操作,并使用 OLE DB 将这些操作传递给基础组件,通常是存储引擎。关系引擎通过全文提供程序而不是存储引擎,将任何全文构造转换成对行集的请求。请求的行集是满足搜索条件和等级的键集,而这个等级表示每个键的数据满足搜索条件的程度。向全文提供程序发送的行集请求命令包括全文检索条件。

全文提供程序验证请求并将搜索条件更改为由Microsoft 搜索服务的查询支持组件使用的形式。将请求发送到搜索服务。

查询支持组件使用搜索引擎组件从全文索引析取所请求的数据。然后以行集的形式将这些数据传递回全文提供程序。

全文提供程序将这个行集返回给关系引擎。

关系引擎将它从存储引擎和全文提供程序收到的所有行集进行组合,以生成发送回客户端的最终结果集。

 

Microsoft? SQL Server? 2000 全文索引为在字符串数据中进行复杂的词搜索提供有效支持。全文索引存储关于重要词和这些词在特定列中的位置的信息。全文查询利用这些信息,可快速搜索包含具体某个词或一组词的行。

全文索引必须在基表上定义,而不能在视图、系统表或临时表上定义。 全文索引的定义包括:

能唯一标识表中各行的列(主键或候选键),而且不允许 NULL 值。

索引所覆盖的一个或多个字符串列。

全文索引由键值填充。每个键的项提供与该键相关联的重要词(干扰词或终止词除外)、它们所在的列和它们在列中的位置等有关信息。

格式化文本字符串(如 Microsoft? Word? 文档文件或 HTML 文件)不能存储在字符串或 Unicode 列中,因为这些文件中的许多字节包含不构成有效字符的数据结构。数据库应用程序可能仍需要访问这些数据并对其应用全文检索。因为 image 列并不要求每一字节都构成一个有效字符,所以许多站点将这类数据存储在 image 列中。SQL Server 2000 引入了对存储在 image 列中的这些类型的数据执行全文检索的能力。SQL Server 2000 提供筛选,可从 Microsoft Office? 文件(.doc.xls .ppt 文件)、文本文件(.txt 文件)及 HTML 文件(.htm 文件)中析取文本化数据。设计表时除包括保存数据的 image 列外,还需包括绑定列来保存存储在 image 列中的数据格式的文件扩展名。可以创建引用 image 列和绑定列的全文索引,以便在存储于 image 列中的文本化信息上启用全文检索。SQL Server 2000 全文检索引擎使用绑定列中的文件扩展名信息,选择从列中析取文本化数据的合适的筛选。

全文索引是用于执行两个 Transact-SQL 谓词的组件,以便根据全文检索条件对行进行测试:

CONTAINS

FREETEXT

Transact-SQL 还包含两个返回符合全文检索条件的行集的函数:

CONTAINSTABLE

FREETEXTTABLE

SQL Server 在内部将搜索条件发送给 Microsoft 搜索服务。Microsoft 搜索服务查找所有符合全文检索条件的键并将它们返回给 SQL ServerSQL Server 随后使用键的列表来确定表中要处理的行。

全文索引

Microsoft? SQL Server? 2000 数据的全文支持涉及两个功能:对字符数据发出查询的能力和创建及维护基础索引以简化这些查询的能力。

全文索引在许多地方与普通的 SQL 索引不同。

普通 SQL 索引

全文索引

存储时受定义它们所在的数据库的控制。

存储在文件系统中,但通过数据库管理。

每个表允许有若干个普通索引。

每个表只允许有一个全文索引。

当对作为其基础的数据进行插入、更新或删除时,它们自动更新。

将数据添加到全文索引称为填充,全文索引可通过调度或特定请求来请求,也可以在添加新数据时自动发生。

不分组。

使用 SQL Server 企业管理器、向导或 Transact-SQL 语句创建和除去。

使用 SQL Server 企业管理器、向导或存储过程创建、管理和除去。

 

这些差异使大量管理任务变得不可缺少。全文管理是在几个层次上实施的:

服务器

可以对服务器范围的某些属性(如 resource_usage)加以设置,以便增加或减少全文服务所使用的系统资源数量。

说明  全文引擎作为名为 Microsoft 搜索的服务在 Microsoft Windows NT? Server Microsoft Windows? 2000 Server 上运行。对于 Microsoft SQL Server 个人版,Microsoft 搜索服务不可用。尽管这意味着 Microsoft 搜索服务既未安装在 Microsoft Windows 95/98 上,也未安装在 Windows NT 工作站或 Windows 2000 Professional 客户端上,但这些客户端在连接到 SQL Server 标准版安装或企业版实例时可以使用这项服务。

数据库

说明  Windows NT 故障转移群集环境完全支持全文索引。有关更多信息,请参见

可以从非活动的注册表中添加或除去支持全文查询的列。

在所有这些级别上,可使用工具检索元数据和状态信息。

和常规 SQL 索引一样,当在相关表中修改数据时,可自动更新全文索引。或者,也可以适当的间隔手工重新填充全文索引。这种重写可能既耗时又大量占用资源,因此,在数据库活动较少时,这通常是在后台运行的异步进程。

始终选择可用于全文唯一键的最小唯一索引。(4 个字节且基于整数的索引是最佳的。)这将显著减少文件系统中 Microsoft 搜索服务所需要的资源。如果主键很大(超过 100 字节),可以考虑选择表中其它唯一索引(或创建另一个唯一索引)作为全文唯一键。否则,如果全文唯一键的大小达到允许的上限(450 字节),全文填充将无法继续进行。

请参见

CONTAINS

一个谓词,用于搜索包含基于字符的数据类型的列,该列与单个词和短语,以及与另一个词一定范围之内的近似词精确或模糊(不太精确的)匹配或者加权匹配。CONTAINS 可以搜索:

词或短语。

词或短语的前缀。

另一个词附近的词。

由另一个词的词尾变化生成的词(例如,词 drive drivesdrovedriving driven 词尾变化的词干)。

比另一个词具有更高加权的词。

语法

CONTAINS
    ( { column | * } , '< contains_search_condition >'     )

 

FREETEXT

是个谓词,用于搜索含有基于字符的数据类型的列,其中的值符合在搜索条件中所指定文本的含义,但不符合表达方式。使用 FREETEXT 时,全文查询引擎内部将 freetext_string 拆分为若干个搜索词,并赋予每个词以不同的加权,然后查找匹配。

语法

FREETEXT ( { column | * } , 'freetext_string' )

 

CONTAINSTABLE FREETEXTTABLE 函数用来指定返回每行的相对排名的全文查询。这两个函数与全文谓词 CONTAINS FREETEXT 很相似,但是用法不同。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- azee.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务