WHERE 子句 (Windows 搜索)

确定文档是否包含在查询返回的结果中的条件由 WHERE 子句指定。 在最高级别,WHERE 子句语法有两个部分:

...WHERE [<group_aliases>] <search_condition>
...WHERE ReuseWhere(<WHEREID>)

子句的可选 <group_alias> 部分通过将别名分配给包含一个或多个列的组来简化复杂的查询。 这可以提高跨 URL 指定的多个列搜索相同信息的复杂查询的可读性。 有关组别名的详细信息,请参阅 WITH -- AS 组别名谓词

<WHERE 子句的搜索条件>部分是指定搜索匹配条件的一个或多个搜索谓词。 搜索谓词是断言某个值的某些事实的表达式。

搜索条件的结果是布尔值,如果文档满足指定的搜索条件,则为 TRUE ;如果不符合,则为 FALSE 。 如果结果为 TRUE,则返回文档。 如果结果为 FALSE,则不返回文档。 Microsoft Windows 搜索查询中返回的文档根据搜索条件的匹配程度分配排名值。 每个查询搜索条件都可以包含一个 RANKBY 子句,该子句支持修改返回的排名值。

ReuseWhere 函数使使用某些相同搜索条件的多个查询更高效。 查询中的 WHERE 子句指定在查询中匹配的项集。 后续查询可以通过在新查询 WHERE 子句中使用 ReuseWhere 函数来共享为上一个评估执行的工作。

搜索谓词

搜索条件由一个或多个谓词或搜索条件组成,这些谓词或搜索条件描述用户正在搜索的内容 (例如 WHERE System.DateCreated >'2006-04-19') 。 可以使用逻辑运算符 ANDORNOT 组合搜索谓词。 可选的一元运算符 NOT 只能与 AND 一起使用,并且只能用于否定谓词或搜索条件的逻辑值。 可以使用括号对逻辑术语进行分组和嵌套。

下表显示了逻辑运算符的优先顺序。

订单 (优先级) 逻辑运算符
第一 (最高) NOT
Second AND
第三 (最低) OR

 

同一类型的逻辑运算符是关联的,并且没有指定的计算顺序。 例如, (A AND B) AND (C AND D) 可以 (A AND D) AND (B AND C) 计算,而逻辑结果没有变化。

重要

错误:WHERE NOT 包含 ('computer')

正确:WHERE 包含 ('software') ,not contains ('computer')

 

在复杂查询中,你可能希望更强调某些列中的匹配项,而不是其他列中的匹配项。 例如,在搜索讨论“软件设计”的文档时,在文档标题中查找搜索词比在文档文本中查找单个单词更可能匹配。 为了以这种方式影响文档的排名,Microsoft Windows 搜索查询语言支持对搜索条件进行加权。 有关列权重的详细信息,请参阅 CONTAINS 谓词FREETEXT 谓词

Windows 搜索中有三组搜索谓词:全文搜索、非全文搜索和文件夹深度搜索。 全文搜索谓词通常与内容、标题和其他列的含义匹配,并支持语言匹配 (例如替代词形式、短语和邻近搜索) 。 相比之下,非全文搜索谓词与指定列的值匹配,并且不包含任何特殊的语言处理,但在某些情况下提供基于字符的模式匹配。 文件夹深度谓词将搜索范围限制为指定路径。

注意

如果查询返回文档,因为非全文谓词的计算结果为 TRUE ,则排名值计算为 1000。 使用 排名强制函数 可以修改排名值。

 

下表描述了全文、非全文和文件夹深度搜索谓词。

全文谓词 说明
CONTAINS 支持对文档文本列中的术语进行复杂搜索, (例如标题、内容) 。 可以搜索搜索词的转折形式,测试字词的邻近度,并执行逻辑比较。 搜索词可以包含通配符。
FREETEXT 搜索与搜索短语的含义匹配的文档。 相关字词和类似短语将匹配,排名列根据文档与搜索短语的匹配程度计算得出。 搜索词不能包含通配符。

 

非全文谓词 说明
LIKE 使用与通配符的简单模式匹配来比较列值。
文本值比较 列值与字符串、日期、时间戳、数值和其他文本值进行比较。 此谓词支持平等和不平等,例如大于和小于。
多值 (ARRAY) 比较 多值列与文本的多值数组进行比较。
NULL 可以使用 NULL 谓词检测文档未定义的列值。

 

文件夹深度 说明
SCOPE 对指定路径(包括特定文件夹和所有子文件夹)执行深度遍历。
目录 对指定路径执行浅表遍历,仅搜索特定文件夹。

 

示例

有关 WHERE 子句的示例,请参阅上表中链接的各个谓词主题。

参考

ReuseWhere 函数

行集属性

FROM 子句

搜索 SQL 语法概述

WITH -- AS 组别名谓词

SCOPE 和 DIRECTORY 谓词

RANK BY 子句

概念性

全文谓词

非全文谓词