FQL トークン式

最終更新日: 2011年11月4日

適用対象: SharePoint Server 2010

この記事の内容
ワイルドカード式
数値用語の式
予約語と特殊文字

トークン式は、インデックスに対して照合される単語、語句、または数値です。

テキスト トークン式は、二重引用符で囲まれた 1 つの単語または語句です。

数値トークン式は、1 つの値または値の範囲の式です。

ワイルドカード式

ワイルドカード式とは、次のワイルドカード文字のうち、1 つ以上の文字を含んだ 1 つの用語または語句のことです。

  • アスタリスク ("*")。ゼロ個以上の文字 (空白を含まない) を表します。

  • 疑問符 ("?")。1 つの文字 (空白を含まない) を表します。

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 を使用して、ワイルドカードの拡大範囲を指定できます。次の 2 つの式は、同値です。

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 には、4 桁の年を指定します。

    注意

    サポートされるのは、4 桁の年だけです。

  • MM には、2 桁の月を指定します。たとえば、01 は 1 月を意味します。

  • DD には、2 桁の日 (01 ~ 31) を指定します。

  • T には、文字 "T" を指定します。

  • hh には、2 桁の時間 (00 ~ 23) を指定します。A.M. と P.M. は使用できません。

  • mm には、2 桁の分 (00 ~ 59) を指定します。

  • ss には、2 桁の秒 (00 ~ 59) を指定します。

すべての日付と時刻の値は、UTC (協定世界時) (GMT (グリニッジ標準時) とも呼ばれます) タイム ゾーンに従って指定する必要があります。UTC タイムゾーンの識別子 (末尾の "Z" 文字) はオプションです。

予約語と特殊文字

次の単語は、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) は、cat と dog は二重引用符で囲まれていませんが、有効な FQL です。ただし、予約語との競合を避けるために、二重引用符を使用することをお勧めします。

クエリの用語は、ユーザーのロケール設定に従ってトークン化されます。トークン化処理では、特定の特殊文字が削除されます。特殊文字が削除されるので、次の 2 つの FQL 式は同値です。

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

and("king", "queen")

クエリに、ユーザー入力または別のアプリケーションからの用語を追加する場合は、string("<query terms>", mode="AND|OR|PHRASE") 演算子を使用して、クエリ言語の予約語と競合しないようにする必要があります。また、ユーザー指定のクエリから可能な二重引用符を削除する必要があります。

関連項目

概念

FAST 検索クエリ統合の概要

FAST クエリ言語 (FQL) 構文のリファレンス

FQL プロパティの指定

FAST クエリ言語 (FQL) の演算子

FQL 簡単なクエリ言語

FQL 構文のリファレンス (ABNF)