SQL Server同Index Server的结合应用3/3——选自《用BackOffice建立Intranet/Extranet应用》一书

SQL Server同Index Server的结合应用3/3——选自《用BackOffice建立Intranet/Extranet应用》一书 - 应用软件 - 电脑教程网

SQL Server同Index Server的结合应用3/3——选自《用BackOffice建立Intranet/Extranet应用》一书

日期:2007-07-21   荐:
  本段文章节选自铁道出版社新出的《用Backoffice建立Intranet/Extranet应用》一书(现已在各书店有售。如海淀图书城、西单图书大厦等。外地或者需要送货上门的读者可以到www.wanbook.com.cn或www.e-bookshop.com.cn上在线购买。本书书号为ISBN7113039448)。本书详尽地讲述了如何使用微软Backoffice系列产品来组建Intranet/Extranet应用。通过它您将掌握NT的安装和设置、使用IIS建立Web站点、通过ILS建立网络会议系统、用Exchange建立企业的邮件和协作系统、用SQL Server建立Web数据库应用、用Proxy Server建立同Internet安全可靠的连接、用Media Server建立网络电视台/广播站、用Chart server建立功能强大的聊天室、用Site Server建立个性化的邮件列表和分析网站的访问情况、用Commerce Server建立B2B或B2C的电子商务网站。此外本书还对网络的安全性进行了讨论,从而指导您建立一个更为健壮和安全的网络应用。阅读本书之后,您将发现实现丰富多彩的网络应用原来这样简单…… 绝对原创,欢迎转载。但请务必保留以上文字。 6.11.2. 通过SQL Server查询Index Server 如果要通过SQL Server查询Index Server,须使用OPENQUERY函数。其语法结构如下。 OPENQUERY(linked_server, 'query') 其中linked_server参数为连接的名称。而query参数为要进行的查询,它将以一个字符串的形式传送给OPENQUERY函数。此函数返回的将是一个虚拟表,从而可以让我们对其做进一步的查询。 下面的语句查找内容包含中SQL这个单词的所有文件: SELECT * FROM OpenQuery(FileSystem, 'SELECT Directory, FileName, DocAuthor, Size, Create FROM SCOPE() WHERE CONTAINS( Contents, ''SQL'' ) ' ) 对于Index Server的查询,其FROM语句的语法格式于普通的SQL语句是有所区别的。其语法结构如下: FROM [ Catalog_Name.. ] { SCOPE( [ 'Scope_Arguments' ] ) } 其中的Catalog_Name参数用于指明要进行查询的索引目录。由于我们在定义连接时只能选择一个索引目录,所以此参数在此将被省略。而SCOPE函数用于指明要进行查询的文件所在的目录。SCOPE函数的语法结构如下图所示。 图6.11.2-1SCOPE函数语法结构图 其中DEEP TRAVERSAL OF关键字指明将查询目录中所有的文件,包括其子目录中的所有文件。而SHALLOW TRAVERSAL OF关键字则指明只查询顶级目录中的文件,而不包括子目录中的那些文件。如果不指明查询的目录深度,则默认为DEEP TRAVERSAL OF。 physical_path和virtual_directory分别为物理目录和虚拟目录。其中各自的含义在图中已经标示的非常明白了,在此就不再进一步说明了。 Index Server共支持50种文件属性,而可以用来作为查询条件或返回结果的常用文件属性见下表: 属性名称 数据类型 注释 可否用于ORDER BY子句 可否用于SELECT语句中 Access datetime 文件的最后访问时间。 可 可 Characterization nvarchar或ntext 文档的描述或摘要,由Index Server使用。 否 可 Create datetime 文件的创建时间。 可 可 Directory Nvarchar 文件的物理路径,不包含文件名。 可 可 DocAppName nvarchar 创建文件的应用程序的名称。如Microsoft word 9.0。 可 可 DocAuthor nvarchar 文档的作者。 可 可 DocComments nvarchar 关于文档的注释。 可 可 DocCompany nvarchar 写作文档的公司的名称。 可 可 DocLastAuthor nvarchar 最近编辑文档的用户。 可 可 DocLastPrinted datetime 文档的最近一次打印时间。 可 否 DocPageCount integer 文档的页数。 可 否 DocParaCount integer 文档的图形数量。 可 否 DocRevNumber integer 文档的当前版本。 可 可 DocSubject nvarchar 文档的主题。 可 可 DocTemplate nvarchar 文档的模板。 可 可 DocTitle nvarchar 文档的标题。 可 可 DocwordCount integer 文档的字数。 可 否 FileIndex Decimal(19,0) 文件的唯一标识。 可 可 FileName nvarchar 文件名。 可 可 HitCount integer 文件中的命中次数(单词匹配查询)。即文件中有多少个查询条件中的单词。 可 可 Path nvarchar 文件的物理路径,包含文件名。 可 可 Rank integer 行的等级,范围从 0 到 1000,数字越大表示越匹配。 可 可 ShortFileName nvarchar 短文件名(8.3格式)。 可 可 Size Decimal(19,0) 文件大小,单位是字节。 可 可 VPath nvarchar 指向文件的完整虚拟路径,包括文件名。如果有多个可能的路径,将选择最符合查询的一个。 可 可 Write datetime 最近一次写文件的时间。 可 可 可以在Where子句中使用以上各种属性作为查询的条件。当条件中包含全文检索条件时,需要使用CONTAINS和FREETEXT语句,其用法同SQL Server的全文检索相同。要注意的是,在对Index Server的查询中,不能使用GROUP BY和HAVING子句。因为这不被Index Server所支持。 此外,在查询的SELECT子句中,不能使用*来选择所有的属性。*只有在对视图进行查询时才可以使用。视图实际上可以理解为从一个查询导出的虚拟表。通过对视图的查询,可以实现对查询结果的再次查询。视图一般应用于需要经常被其他查询作为FROM子句中的数据源时使用。建立视图使用CREATE VIEW语句,其语法结构如下: CREATE VIEW view_name [(column ][,...n])] AS select_statement 其中view_name为要建立的视图的名称,而AS子句后面的就是建立视图的查询语句。而此语句有以下限制:不能包含ORDER BY、COMPUTE和COMPUTE BY等子句;不能包含INTO关键字;不能涉及临时表。 而column则用于为视图中的各个字段命名。一般只有在这些字段是表达式或函数及常数时才需要为其命名。 在SQL Server中,也同样可以使用CREATE VIEW语句来建立视图。 下面我们通过一个例子来了解对Index Server查询的全部过程。 我们将在虚拟目录\Corpus和C:\temp目录中查找那些作者在writer表中存在记录且文档字数超过5000字的文件。并返回作者的名字、文档题目以及作者的身份。其查询语句和具体操作过程如下图所示。 图6
标签: