SQL Server 2000全文检索
上一篇 / 下一篇 2007-06-06 15:07:11 / 个人分类:SQL
SQL Server 2000全文检索
@Z9V7{D;~rD051Testing软件测试网*f9s&Y'm,fS0V5\J
一、如何在SQL中启用全文检索功能51Testing软件测试网vu8o*UE4JPv
1、证全文检索服务是否安装51Testing软件测试网x4I LGf#G7_x$P
通过储存过程FULLTEXTSERVICEPROPERTY(返回有关全文服务级别属性的信息)来验证搜索服务(全文组件)是否安装。如Select fulltextserviceproperty (‘IsFullTextInstalled’):返回1表示已安装全文组件;返回0表示未安装全文组件;返回Null表示输入无效或发生错误。
b%m%|'G&y*N3h/u,e02、启动全文检索服务(MircoSoft Search)51Testing软件测试网 QT;L2U.e
3、打开数据库全文索引的支持51Testing软件测试网"wOqOU5i$RLd|
为全文索引启用数据库:51Testing软件测试网1K"Z6onn3B,C:wk
Use Northwind
q"d_ zG-LP0Exec sp_fulltext_database ‘enable’51Testing软件测试网2F [P I7az7s
从数据库中删除所有目录:
+Z[-js-Dl0Use Northwind51Testing软件测试网p}?7G|"O
Exec sp_fulltext_database ‘disable’
/CI G+r Ej0二、建立全文目录
y*u9}#T Q01、创建全文目录
4Jg%jr|~0Use Northwind51Testing软件测试网)}"\Y`K(np
Exec sp_fulltext_catalog @#ft_ Catalog @#, @#create@#51Testing软件测试网-szh S!X#C
2、重建全文目录51Testing软件测试网4N^2Dk5\\9lVI |.v
Use Northwind51Testing软件测试网8JG Pwn*c
Exec sp_fulltext_catalog @#ft_ Catalog @#, @# rebulid@#51Testing软件测试网,ke&zBMl'v0i8pk
3、启动全文目录的填充51Testing软件测试网X(e;ylw l o
Use Northwind
OJn Gc9\X:]0Exec sp_fulltext_catalog @#ft_ Catalog @#, @#start_full@#51Testing软件测试网%gO1H:o _7z?
4、停止全文目录的填充51Testing软件测试网KeaP Tf C3Ya
Use Northwind
;o f0`M+RQ(j0Exec sp_fulltext_catalog @#ft_ Catalog @#, @#stop@#51Testing软件测试网*X(B U ae1_ @9n*G
5、删除全文目录51Testing软件测试网 JqHf#p]
Use Northwind51Testing软件测试网6cU*U9G,k~|m%J%C!g
PK_Products51Testing软件测试网c!I(Tr5H$fyno q
Exec sp_fulltext_catalog @#ft_ Catalog @#, @#drop@#51Testing软件测试网`5~B dx7~9B |
三、为表建立全文索引数据元51Testing软件测试网QLU Cvh"Eb4K
1、建立的唯一索引51Testing软件测试网*_ ikK5M'h)q?0`:m
Use Northwind51Testing软件测试网*]9g_T,IS$CM
Exec sp_fulltext_table @#Products@#,@#create@#, @#ft_ Catalog@#, @# PK_Products @#51Testing软件测试网uy J0|XV
2、设置全文索引列名
8kP#j0n'H(u ^D U0Use Northwind51Testing软件测试网k*e{K7o:E0b2y B^Q
Exec sp_fulltext_table @#Products@#,@#create@#, @#ft_ Catalog@#, @# PK_Products @#51Testing软件测试网j iaIXB_
3、设置全文索引列名
*@/P8Q2F3_9N)TN)t0Use Northwind
)Sdd7Q3p0Exec sp_fulltext_column @# Products @#, ProductName@#, @#add@#51Testing软件测试网Z&lP;mG] ot
Go
M+T;LV!yC~"G0Exec sp_fulltext_column @# Products @#, QuantityPerUnit@#, @#add@#51Testing软件测试网F3d![.RQ!j6G/d3jz
Go
#SeA3rE^7P l/h-X-M#\L04、激活全文索引
!O4t7o i [ | XLz0Use Northwind51Testing软件测试网q&NO#b0bp7[bA
Exec sp_fulltext_table @#Products@#,@#activate51Testing软件测试网TH,Kks
5、填充全文索引目录
"Iin@ye$d0Use Northwind51Testing软件测试网#c:}k'Q-a.r
Exec sp_fulltext_catalog @#ft_ Catalog @#, @#start_full@#
'A#Cw2R$l W O.o0四、使用Transact-SQL进行全文检索,我们使用CONTAINS、FREETEXT等谓词
1]8c+}E wl01、检索ProductName中,即包含b又包含c的所有列51Testing软件测试网"dC q*vv3|B7Cu6E
Use Northwind
Jo.^ [Ob0SELECT *
P'H%X&m n0FROM Products
rnAbf xF0WHERE CONTAINS(ProductName, @#"c*" and "b*" @#)
?8G{ a R#d02、检索ProductName中,即包含chai chang tofu之一的所有列
UD~0R~o'N0Use Northwind
4U^:Ue})QaB+p0SELECT *51Testing软件测试网7h#l6sZ| `6n
FROM Products
&Rr-{` VR.F,[0WHERE FREETEXT(ProductName, @#chai chang tofu @#)51Testing软件测试网-fp l(B#q"~;V
五、全文查询有关的系统存储过程
,W] PU#?;]_sm0(1)启动数据库的全文处理功能(sp_fulltext_datebase);
^r^#zT-PAqz:L*|k0(2)建立全文目录(sp_fulltext_catalog);51Testing软件测试网6h#V2E?8V2eL _
(3)在全文目录中注册需要全文索引的表(sp_fulltext_table);51Testing软件测试网le%@|HZ
(4)指出表中需要全文检索的列名(sp_fulltext_column)51Testing软件测试网.n6A4a:B6j4cB
(5)为表创建全文索引(sp_fulltext_table);
8@5V!s}-l _li0(6)填充全文索引(sp_fulltext_catalog)。51Testing软件测试网nO q2a SS4l aK@
xczIdv0全文查询支持
zd;[,H3[H0Microsoft® SQL Server™ 2000 在接收带全文构造的 Transact-SQL 语句时,使用全文提供程序从 Microsoft 搜索服务检索所需信息。全文构造是 CONTAINS 或 FREETEXT 谓词,或者是 CONTAINSTABLE 或 FREETEXTTABLE 行集函数。如果不知道包含搜索条件的列,全文构造可以在全文索引中引用多列。该进程的流程如下图所示。51Testing软件测试网.f(]}4VF!j:xc!r
51Testing软件测试网/NQ-x1C!s-S9[
这一进程涉及的步骤包括:
(Eg7oR{$gNC0应用程序给 SQL Server 实例发送带全文构造的 Transact-SQL 语句。
'K~E3h A$E7u$OO9u8d&i0SQL Server 关系引擎通过查询系统表验证全文构造,确定全文索引是否覆盖列引用。关系引擎将每个 SQL 语句简化为一系列行集操作,并使用 OLE DB 将这些操作传递给基础组件,通常是存储引擎。关系引擎通过全文提供程序而不是存储引擎,将任何全文构造转换成对行集的请求。请求的行集是满足搜索条件和等级的键集,而这个等级表示每个键的数据满足搜索条件的程度。向全文提供程序发送的行集请求命令包括全文检索条件。
'PD'@ rl%m'A0全文提供程序验证请求并将搜索条件更改为由Microsoft 搜索服务的查询支持组件使用的形式。将请求发送到搜索服务。
_-W\*X-r'ClZ/O0查询支持组件使用搜索引擎组件从全文索引析取所请求的数据。然后以行集的形式将这些数据传递回全文提供程序。51Testing软件测试网w0c$q {.a*RQg
全文提供程序将这个行集返回给关系引擎。
q6FzA7N5f*gw0关系引擎将它从存储引擎和全文提供程序收到的所有行集进行组合,以生成发送回客户端的最终结果集。51Testing软件测试网,_ V }QbNj
)t.M4u:I[%_O0全文目录和索引51Testing软件测试网oFZu5g(D v*R
Microsoft® SQL Server™ 2000 全文索引为在字符串数据中进行复杂的词搜索提供有效支持。全文索引存储关于重要词和这些词在特定列中的位置的信息。全文查询利用这些信息,可快速搜索包含具体某个词或一组词的行。
@Z9V7{D;~rD051Testing软件测试网*f9s&Y'm,fS0V5\J
一、如何在SQL中启用全文检索功能51Testing软件测试网vu8o*UE4JPv
1、证全文检索服务是否安装51Testing软件测试网x4I LGf#G7_x$P
通过储存过程FULLTEXTSERVICEPROPERTY(返回有关全文服务级别属性的信息)来验证搜索服务(全文组件)是否安装。如Select fulltextserviceproperty (‘IsFullTextInstalled’):返回1表示已安装全文组件;返回0表示未安装全文组件;返回Null表示输入无效或发生错误。
b%m%|'G&y*N3h/u,e02、启动全文检索服务(MircoSoft Search)51Testing软件测试网 QT;L2U.e
3、打开数据库全文索引的支持51Testing软件测试网"wOqOU5i$RLd|
为全文索引启用数据库:51Testing软件测试网1K"Z6onn3B,C:wk
Use Northwind
q"d_ zG-LP0Exec sp_fulltext_database ‘enable’51Testing软件测试网2F [P I7az7s
从数据库中删除所有目录:
+Z[-js-Dl0Use Northwind51Testing软件测试网p}?7G|"O
Exec sp_fulltext_database ‘disable’
/CI G+r Ej0二、建立全文目录
y*u9}#T Q01、创建全文目录
4Jg%jr|~0Use Northwind51Testing软件测试网)}"\Y`K(np
Exec sp_fulltext_catalog @#ft_ Catalog @#, @#create@#51Testing软件测试网-szh S!X#C
2、重建全文目录51Testing软件测试网4N^2Dk5\\9lVI |.v
Use Northwind51Testing软件测试网8JG Pwn*c
Exec sp_fulltext_catalog @#ft_ Catalog @#, @# rebulid@#51Testing软件测试网,ke&zBMl'v0i8pk
3、启动全文目录的填充51Testing软件测试网X(e;ylw l o
Use Northwind
OJn Gc9\X:]0Exec sp_fulltext_catalog @#ft_ Catalog @#, @#start_full@#51Testing软件测试网%gO1H:o _7z?
4、停止全文目录的填充51Testing软件测试网KeaP Tf C3Ya
Use Northwind
;o f0`M+RQ(j0Exec sp_fulltext_catalog @#ft_ Catalog @#, @#stop@#51Testing软件测试网*X(B U ae1_ @9n*G
5、删除全文目录51Testing软件测试网 JqHf#p]
Use Northwind51Testing软件测试网6cU*U9G,k~|m%J%C!g
PK_Products51Testing软件测试网c!I(Tr5H$fyno q
Exec sp_fulltext_catalog @#ft_ Catalog @#, @#drop@#51Testing软件测试网`5~B dx7~9B |
三、为表建立全文索引数据元51Testing软件测试网QLU Cvh"Eb4K
1、建立的唯一索引51Testing软件测试网*_ ikK5M'h)q?0`:m
Use Northwind51Testing软件测试网*]9g_T,IS$CM
Exec sp_fulltext_table @#Products@#,@#create@#, @#ft_ Catalog@#, @# PK_Products @#51Testing软件测试网uy J0|XV
2、设置全文索引列名
8kP#j0n'H(u ^D U0Use Northwind51Testing软件测试网k*e{K7o:E0b2y B^Q
Exec sp_fulltext_table @#Products@#,@#create@#, @#ft_ Catalog@#, @# PK_Products @#51Testing软件测试网j iaIXB_
3、设置全文索引列名
*@/P8Q2F3_9N)TN)t0Use Northwind
)Sdd7Q3p0Exec sp_fulltext_column @# Products @#, ProductName@#, @#add@#51Testing软件测试网Z&lP;mG] ot
Go
M+T;LV!yC~"G0Exec sp_fulltext_column @# Products @#, QuantityPerUnit@#, @#add@#51Testing软件测试网F3d![.RQ!j6G/d3jz
Go
#SeA3rE^7P l/h-X-M#\L04、激活全文索引
!O4t7o i [ | XLz0Use Northwind51Testing软件测试网q&NO#b0bp7[bA
Exec sp_fulltext_table @#Products@#,@#activate51Testing软件测试网TH,Kks
5、填充全文索引目录
"Iin@ye$d0Use Northwind51Testing软件测试网#c:}k'Q-a.r
Exec sp_fulltext_catalog @#ft_ Catalog @#, @#start_full@#
'A#Cw2R$l W O.o0四、使用Transact-SQL进行全文检索,我们使用CONTAINS、FREETEXT等谓词
1]8c+}E wl01、检索ProductName中,即包含b又包含c的所有列51Testing软件测试网"dC q*vv3|B7Cu6E
Use Northwind
Jo.^ [Ob0SELECT *
P'H%X&m n0FROM Products
rnAbf xF0WHERE CONTAINS(ProductName, @#"c*" and "b*" @#)
?8G{ a R#d02、检索ProductName中,即包含chai chang tofu之一的所有列
UD~0R~o'N0Use Northwind
4U^:Ue})QaB+p0SELECT *51Testing软件测试网7h#l6sZ| `6n
FROM Products
&Rr-{` VR.F,[0WHERE FREETEXT(ProductName, @#chai chang tofu @#)51Testing软件测试网-fp l(B#q"~;V
五、全文查询有关的系统存储过程
,W] PU#?;]_sm0(1)启动数据库的全文处理功能(sp_fulltext_datebase);
^r^#zT-PAqz:L*|k0(2)建立全文目录(sp_fulltext_catalog);51Testing软件测试网6h#V2E?8V2eL _
(3)在全文目录中注册需要全文索引的表(sp_fulltext_table);51Testing软件测试网le%@|HZ
(4)指出表中需要全文检索的列名(sp_fulltext_column)51Testing软件测试网.n6A4a:B6j4cB
(5)为表创建全文索引(sp_fulltext_table);
8@5V!s}-l _li0(6)填充全文索引(sp_fulltext_catalog)。51Testing软件测试网nO q2a SS4l aK@
xczIdv0全文查询支持
zd;[,H3[H0Microsoft® SQL Server™ 2000 在接收带全文构造的 Transact-SQL 语句时,使用全文提供程序从 Microsoft 搜索服务检索所需信息。全文构造是 CONTAINS 或 FREETEXT 谓词,或者是 CONTAINSTABLE 或 FREETEXTTABLE 行集函数。如果不知道包含搜索条件的列,全文构造可以在全文索引中引用多列。该进程的流程如下图所示。51Testing软件测试网.f(]}4VF!j:xc!r
51Testing软件测试网/NQ-x1C!s-S9[
这一进程涉及的步骤包括:
(Eg7oR{$gNC0应用程序给 SQL Server 实例发送带全文构造的 Transact-SQL 语句。
'K~E3h A$E7u$OO9u8d&i0SQL Server 关系引擎通过查询系统表验证全文构造,确定全文索引是否覆盖列引用。关系引擎将每个 SQL 语句简化为一系列行集操作,并使用 OLE DB 将这些操作传递给基础组件,通常是存储引擎。关系引擎通过全文提供程序而不是存储引擎,将任何全文构造转换成对行集的请求。请求的行集是满足搜索条件和等级的键集,而这个等级表示每个键的数据满足搜索条件的程度。向全文提供程序发送的行集请求命令包括全文检索条件。
'PD'@ rl%m'A0全文提供程序验证请求并将搜索条件更改为由Microsoft 搜索服务的查询支持组件使用的形式。将请求发送到搜索服务。
_-W\*X-r'ClZ/O0查询支持组件使用搜索引擎组件从全文索引析取所请求的数据。然后以行集的形式将这些数据传递回全文提供程序。51Testing软件测试网w0c$q {.a*RQg
全文提供程序将这个行集返回给关系引擎。
q6FzA7N5f*gw0关系引擎将它从存储引擎和全文提供程序收到的所有行集进行组合,以生成发送回客户端的最终结果集。51Testing软件测试网,_ V }QbNj
)t.M4u:I[%_O0全文目录和索引51Testing软件测试网oFZu5g(D v*R
Microsoft® SQL Server™ 2000 全文索引为在字符串数据中进行复杂的词搜索提供有效支持。全文索引存储关于重要词和这些词在特定列中的位置的信息。全文查询利用这些信息,可快速搜索包含具体某个词或一组词的行。