SharePoint 搜索 SQL 查询语言信息
上次修改时间: 2010年4月21日
适用范围: SharePoint Server 2010
本文内容
标识符
文字
区分大小写
不区分重音
了解关联值
使用本地化搜索
本节内容
Microsoft SharePoint Server 2010 搜索提供了支持全文搜索的内容爬网和搜索功能。SharePoint Server 搜索使用的查询语言扩展了标准 SQL-92 和 SQL-99 数据库查询语法,使其能够更好地用于基于文本的搜索。
标识符
标识符指定列(有时称为属性)、目录和别名的名称。相比之下,文字指定字符串和数字值。
可以创建最大长度为 128 个字符的标识符,并且标识符属于以下类型之一(通过标识符名称中使用的字符来区分):
规则标识符 仅包含字符 A-Z、a-z、0-9 和下划线字符,并且以字母开头。无需将常规标识符包含在双引号内。
分隔标识符 可以包含任何有效的 Unicode 字符,并且必须包含在双引号内。
作为统一资源名称 (URN) 创建的标识符必须包含特殊字符,它们始终为分隔标识符,并且必须包含在双引号内。
备注
如果您要指定 SharePoint Server 搜索包括查询中所有已编制索引的属性,则可以使用星号 (*) 作为特殊的列标识符。尽管它不是常规标识符,但它不需要双引号。
文字
文字是用于表示查询语句中的值的字符串。可以使用文字来比较列值或指定搜索词。SharePoint Server 搜索支持以下文字类型。
字符串
字符串文字的长度没有限制,并且可以包含美国国家标准学会 (ANSI) 字符或 Unicode 字符。您必须将字符串文字包含在单引号内。要在字符串文字内包括单引号,请使用两个单引号。将一个空字符串表示为两个连续的单引号 ('')。
数字
数字文字表示数字(包括正负整数、正负小数以及货币值),可以包含数字 0-9、句点和字母 E(或 e)。可以使用科学记数法(例如,2.3E-05)定义数字文字。不要将数字文字包含在单引号内,否则会将它解释为字符串文字并使用字符串比较技术来进行比较。货币值不能包含货币符号。
十六进制数
十六进制数文字表示以十六进制记数法指定的无符号整数,可以包含数字 0-9 和字符 A-F 以及 a-f。十六进制文字必须以 0x 开头。
备注
SQL-92 标准要求将十六进制文字包含在单引号内,但是,SharePoint Server 搜索不支持该记数法。
布尔值
布尔值文字表示逻辑值,可以为 TRUE 或 FALSE。请勿将布尔值文字包含在单引号内,否则会将它解释为字符串文字。
日期
日期文字表示特定的日期、时间戳或相对时间,并包含在单引号内。日期必须采用年/月/日格式或年-月-日格式,其中月、日和年为数字。使用四位数字值指定年份,如 2004。时间值必须采用时:分:秒格式。相对时间语法基于 SharePoint 搜索 SQL 语法中的 DATEADD 函数。
区分大小写
SharePoint Server 搜索查询不区分大小写。这包括查询关键字(SELECT 与 Select、select 和 sELect 完全相同)和搜索词。如果标识符或文字使用的 Unicode 字符具有大小写映射语义,则搜索引擎会认为所有大小写都是等效的。
不区分重音
SharePoint Server 搜索查询既不区分大小写,在使用 FREETEXT 谓词或 CONTAINS 谓词时也不区分重音。搜索词语"resume"时也会返回包含"résumé"的文档。如果标识符或文字包含带有重音符号的 Unicode 字符,则搜索查询还会匹配在标识符或文字中包含 Unicode 组合字符(使用该重音符号字符的基本字符)的条目。
备注
这种情况不适用于字符范围 0x2e81-f8ff 和 0x1100-0x11ff。
了解关联值
在关系数据库中使用时,由搜索查询返回的行必须满足该查询所要求的所有条件。相比之下,SharePoint Server 搜索查询可以返回在不同程度上满足搜索条件的文档。
例如,在关系数据库中搜索词语"program"时,将生成包含该单词的特定拼写的记录。无论一个记录包含该单词的一个实例还是一百个实例,对结果都没有影响。相比之下,SharePoint Server 搜索将返回与匹配文档关联的相关性值。标题中具有"program"的文档的相关性要高于仅在最后一段中包含该单词的文档。类似地,查询还将匹配并返回包含该搜索词的变体(如"programs"和"programming")的文档。
SharePoint Server 搜索查询在名为"排位"的列中返回相关值(整数)。
此外:
查询返回的排位值为介于 0 到 1000 之间的整数。
排位值越高,表示相应的文档比其他文档更符合搜索条件。
排位值仅适用于当前查询,因此不能跨多个查询的结果比较该值。
排位值和与查询相匹配的其他文档相关。因此,特定文档的排位值依赖于同时与查询结果相匹配的其他文档。
与纯粹关系谓词匹配的项的排位值为 1000。
使用本地化搜索
SharePoint Server 搜索支持完全 Unicode 搜索。您可以对使用 Unicode 的文档编制索引,并创建使用 Unicode 标识符和文字的搜索查询。但是,应用程序或操作系统的语言设置可以对 SharePoint Server 搜索的工作方式产生深远的影响。
文档和系统区域设置
如果操作系统(甚至应用程序)设置为使用某种特定语言和区域设置,则许多设置都会受到影响。这些设置包括数字格式、日期格式、货币格式、大写和小写映射、字典排序顺序、词汇切分及其他设置。虽然这些设置有助于 SharePoint Server 搜索提供出色的本地化支持,但是,当使用设置为一种区域设置的系统来搜索采用其他区域设置的文档时,可能会发生意外的结果。
例如,每种语言中的干扰 词(在索引编制过程中和从查询中丢弃的单词,因为这些单词不能提供实际意义或上下文)的列表都存在很大差异。在德语中,单词 die 相当于英语单词 the。如果使用英语查询系统对德语文档编制索引,然后搜索"die",则可能会返回文档(即使应忽略该单词)。而执行同一个查询的德语系统将返回错误,说明搜索查询只包含干扰词。
当 IFilter 对象处理文档的文本属性和内容时,它将向内容索引器报告该文档的语言。通过使用这一信息,SharePoint Server 搜索可以应用适当的分词系统和干扰词列表。
指定语言
您可以指定搜索查询所使用的语言。WHERE 子句的 FREETEXT 和 CONTAINS 谓词支持指定语言的功能。可以通过使用以下语法在 CONTAINS 或 FREETEXT 谓词中提供一个数字区域设置标识符 (LCID) 来指示查询语言:
CONTAINS | FREETEXT
([<column_identifier>,]'<content_search_condition>' [,LCID])
有关详细信息,请参阅 CONTAINS 和 FREETEXT 谓词的语法。
本节内容
SharePoint Portal Server 2003 的 SQL 语法更改