FQL 标记表达式

上次修改时间: 2015年3月9日

适用范围: SharePoint Server 2010

本文内容
通配符表达式
数词表达式
保留字和特殊字符

令牌表达式是根据索引匹配的字、短语或数值。

文本令牌表达式可以为单个字或用双引号引起的短语。

数值令牌表达式可以为单个值或一个值范围表达式。

通配符表达式

通配符表达式表示包含以下一个或多个通配符的词或短语:

  • 星号("*"),表示与 0 个或多个字符匹配(不包括空白)

  • 问号("?"),表示与单个字符匹配(不包括空白)

FAST 查询语言 (FQL) 支持针对单个文本托管属性和全文本索引的通配符搜索。

通配符表达式示例

以下查询表达式可查找包含字"Shakespeare"的项:

shak?sp*r*

以下是 FQL 中有效使用的通配符表达式的列表:

  • text*

  • *text

  • *text*

  • te?t

  • *te?t

  • string("this examp*")

  • string("this *ample")

  • string("this *ampl*")

  • string("this exam?le")

  • string("thi* exam?le")

备注

前面的示例演示了有效的 FQL 通配符语法。应避免使用与索引中的许多字词匹配的表达式,例如,以通配符开头的表达式。当您使用有限的内容查询托管属性时,可能会使用此类查询,但如果您查询全文检索,则此类查询通常不会返回任何结果。

通配符无法与空白字符匹配。下表包含可能无法按预期方式匹配的通配符表达式的示例。

表 1. 通配符表达式的示例及其匹配内容的方式

查询

不匹配的查询

string("this*examp*", mode="PHRASE")

string("this?example", mode="PHRASE")

"This example text shows wildcard terms"

该通配符与空白不匹配。

string("Example?This", mode="PHRASE")

"Example:This is some text"

此通配符词与冒号不匹配。冒号将视为空白。

可以选择使用 STRING 参数(即 minexpansion 和 maxexpansion)指定通配符的扩展范围。以下表达式是等效的。

any("prefix","prefix?","prefix??","prefix???","prefix????")

string("prefix*",maxexpansion=4)

数词表达式

每个数词表达式必须包括一个可兼容的索引架构数据类型的属性规范。下表列出了 FQL 中可使用的数字数据类型。

表 2. FQL 中可使用的数字数据类型

FQL 类型

可兼容的索引架构类型

说明

Int

Integer

64 位整数。

float

Float

Decimal

64 位(双精度)浮点。

Datetime

Datetime

一个日期和时间值。

利用 FQL 中的日期/时间支持,可以对日期/时间值执行与对其他数值执行的相同的数字运算。

日期和时间查询表达式

FQL 提供了针对日期和时间的 datetime 数据类型。

查询中支持以下与 ISO 8601 兼容的 datetime 格式:

  • YYYY-MM-DD

  • YYYY-MM-DDThh:mm:ss

  • YYYY-MM-DDThh:mm:ssZ

在这些 datetime 格式中:

  • YYYY 指定四位数年份。

    备注

    仅支持四位数年份。

  • MM 指定二位数月份。例如,01 表示 1 月。

  • DD 指定二位数日期(01 到 31)。

  • T 指定字母"T"。

  • hh 指定二位数小时(00 到 23);不允许使用 A.M./P.M. 指示法。

  • mm 指定二位数分钟(00 到 59)。

  • ss 指定二位数秒钟(00 到 59)。

必须根据 UTC(协调世界时)(也称为 GMT,即格林威治标准时间)指定所有日期/时间值。

保留字和特殊字符

FQL 中会保留以下字。

and, or, any, andnot, count, decimal, rank, near, onear, int, in32, int64, float, double, datetime, max, min, range, phrase, scope, filter, not, string, starts-with, ends-with, equals, count

若要将这些字中的任一字表示为查询表达式中的词,则必须将它们用双引号引起来,如以下示例所示:

  • or("any", "and", "rank")

  • string("any and rank", mode="OR")

  • phrase(this, is, a, "phrase")

提示提示

保留字和字符不区分大小写,但为了将来兼容,建议使用小写字符。

FQL 并不总是要求用双引号将字符串引起来。例如,and(cat, dog) 是有效的 FQL,即使未用双引号将 cat 和 dog 引起来。但建议您使用双引号,以避免与保留字发生冲突。

根据区域设置对查询词进行词汇切分。词汇切分过程会删除某些特殊字符。由于删除了特殊字符,因此下列 FQL 表达式等效。

and("[king]", "<queen>")

and("king", "queen")

当查询包括用户输入或另一个应用程序中的词时,请使用 string("<query terms>", mode="AND|OR|PHRASE") 运算符,以避免与查询语言中的保留字发生冲突。还必须从用户提供的查询中删除可能存在的双引号。

请参阅

概念

FAST Search 查询集成概述

FAST 查询语言 (FQL) 语法参考

FQL 属性规范

FAST 查询语言 (FQL) 运算符

FQL 简单查询语言

FQL 语法参考 (ABNF)