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”)。 可以使用逻辑运算符 AND、OR或 NOT组合搜索谓词。 可选的一元运算符 NOT 只能与 AND 一起使用,并且只能否定谓词或搜索条件的逻辑值。 可以使用括号对逻辑术语进行分组和嵌套。

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

顺序(优先) 逻辑运算符
第一个 (最高) 不
第二 和
第三(最低) 或

 

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

重要

错误:WHERE NOT CONTAINS ('computer')

正确:WHERE CONTAINS ('software') 但不 CONTAINS ('computer')

 

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

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

注意

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

 

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

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

 

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

 

文件夹深度 描述
范围 执行指定路径的深入遍历,包括特定文件夹和所有子文件夹。
目录 执行指定路径的浅层遍历,仅搜索特定文件夹。

 

例子

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

参考

ReuseWhere 函数

行集属性

FROM 子句

搜索 SQL 语法 的 概述

WITH -- AS 组别名谓词

SCOPE 和 DIRECTORY 谓词

RANK BY 子句

概念

Full-Text 谓词

非Full-Text 谓词