FQL Token Expressions
Applies to: SharePoint Server 2010
In this article
Wildcard Expressions
Numeric Term Expressions
Reserved Words and Special Characters
Token expressions are words, phrases, or numeric values that are matched against the index.
A text token expression can be a single word or a phrase enclosed in double quotation marks.
A numeric token expression can be a single value or a value range expression.
Wildcard Expressions
A wildcard expression indicates a single term or phrase that includes one or more of the following wildcard characters:
Asterisk ("*"), which indicates to match zero or more characters (not including whitespace)
Question mark ("?"), which indicates to match a single character (not including whitespace)
FAST Query Language (FQL) supports wildcard search for individual text managed properties and full-text indexes.
Wildcard Expression Examples
The following query expression finds items that contain the word "Shakespeare":
shak?sp*r*
The following is a list of valid uses of wildcard expressions in 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")
Note
The previous examples show valid FQL wildcard syntax. You should avoid using expressions that match many words in the index, such as expressions starting with a wildcard term. Such queries may be used when you query managed properties with limited amount of content, but will typically not return any results if you query a full-text index.
Wildcards cannot match whitespace characters. The following table contains examples of wildcard expressions that may not match as expected.
Table 1.Examples of wildcard expressions and how they match content
Query |
What Query Does Not Match |
---|---|
string("this*examp*", mode="PHRASE") string("this?example", mode="PHRASE") |
"This example text shows wildcard terms" The wildcard term does not match the whitespace. |
string("Example?This", mode="PHRASE") |
"Example:This is some text" The wildcard term does not match the colon. The colon is treated as a whitespace. |
Optionally, you can use the STRING parameters minexpansion and maxexpansion to specify the range of the wildcard expansion. The following expressions are equivalent.
any("prefix","prefix?","prefix??","prefix???","prefix????")
string("prefix*",maxexpansion=4)
Numeric Term Expressions
Each numeric term expression must include a property specification of a compatible index schema data type.The following table lists the numeric data types that can be used in FQL.
Table 2. Numeric data types that can be used in FQL
FQL Type |
Compatible Index Schema Types |
Description |
---|---|---|
Int |
Integer |
64 bit integer. |
float |
Float Decimal |
64-bit (double precision) floating point. |
Datetime |
Datetime |
A date and time value. The date/time support in FQL enables the same numeric operations on date/time values as on other numeric values. |
Date and Time Query Expressions
FQL provides the datetime data type for date and time.
The following ISO 8601-compatible datetime formats are supported in queries:
YYYY-MM-DD
YYYY-MM-DDThh:mm:ss
YYYY-MM-DDThh:mm:ssZ
In these datetime formats:
YYYY specifies a four-digit year.
Note
Only four-digit years are supported.
MM specifies a two-digit month. For example, 01 = January.
DD specifies a two-digit day of the month (01 through 31).
T specifies the letter "T".
hh specifies a two-digits hour (00 through 23); A.M./P.M. indication is not allowed.
mm specifies a two-digit minute (00 through 59).
ss specifies a two-digit second (00 through 59).
All date/time values must be specified according to the UTC (Coordinated Universal Time), also known as GMT (Greenwich Mean Time) time zone. The UTC time zone identifier (a trailing "Z" character) is optional.
Reserved Words and Special Characters
The following words are reserved within 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
If you want to express any of these words as terms in a query expression, you must enclose them in double quotation marks as shown in the following examples:
or("any", "and", "rank")
string("any and rank", mode="OR")
phrase(this, is, a, "phrase")
Tip
Reserved words and characters are not case-sensitive, but using lowercase characters are recommended for future compatibility.
FQL does not always require a string to be enclosed in double quotation marks. For example, and(cat, dog) is valid FQL even though cat and dog are not in double quotation marks. However, we recommend that you use double quotation marks to avoid conflicts with reserved words.
The query terms are tokenized according to your locale setting. The tokenization process removes certain special characters. Because special characters are removed, the following FQL expressions are equivalent.
and("[king]", "<queen>")
and("king", "queen")
When a query includes terms from user input or another application, use the string("<query terms>", mode="AND|OR|PHRASE") operator to avoid conflict with reserved words in the query language. You must also remove possible double quotation marks from the user-provided query.
See Also
Concepts
FAST Search Query Integration Overview
FAST Query Language (FQL) Syntax Reference
The FQL Property Specification