FAST クエリ言語 (FQL) の演算子
最終更新日: 2011年7月1日
適用対象: SharePoint Server 2010
この記事の内容
FQL 演算子の概要
AND
ANDNOT
ANY
COUNT
DATETIME
ENDS-WITH
EQUALS
FILTER
FLOAT
INT
NEAR
NOT
ONEAR
OR
PHRASE
RANGE
RANK
STARTS-WITH
STRING
XRANK
FAST クエリ言語 (FQL) 演算子は、ブール演算やその他の制約をオペランドに指定するキーワードです。FQL 演算子の構文は次のとおりです。
[property-spec:]operator(operand [,operand]* [, parameter="value"]*)
構文の詳細:
property-spec は、オプションのプロパティ指定であり、その後に "in" 演算子が続きます。
operator は、実行する演算を指定するキーワードです。
operand は、項表現または別の演算子です。
parameter は、演算子の動作を変更する値の名前です。
value は、パラメーター名で使用する値です。
演算子名、パラメーター名、パラメーター テキストの各値は大文字と小文字を区別しません。演算子の本文内に空白を含めることはできますが、二重引用符で囲まれていない場合、空白は無視されます。
FQL 演算子の概要
FQL では、以下の種類の演算子がサポートされています。
種類 |
説明 |
演算子 |
---|---|---|
文字列 |
用語の文字列に対するクエリ操作を指定できます。これはテキスト用語で使用する最も一般的な演算子です。 |
|
ブール |
クエリ内で用語とサブ式を組み合わせることができます。 |
|
近接 |
対応する一連のテキストでクエリ用語の近接を指定できます。 |
|
数値 |
クエリで数値的条件を指定できます。 |
|
関連性 |
クエリの関連性の検証に影響を与えることができます。 |
以下の表では、サポートされている演算子の一覧を示します。
演算子 |
説明 |
種類 |
---|---|---|
すべての AND オペランドに一致するアイテムのみを返します。 |
ブール |
|
1 番目のオペランドに一致し、それ以降のオペランドに一致しないアイテムのみを返します。 |
ブール |
|
OR 演算子と似ていますが、動的ランク (結果セット内の関連性スコア) は、一致するオペランド数やアイテム内の用語間の距離に影響されません。 |
ブール |
|
結果として返すアイテムに含まれている必要のあるクエリ用語の出現回数を指定できます。オペランドに指定できるのは、1 つのクエリ用語、語句、またはワイルドカード クエリ用語です。 |
ブール |
|
数値の明示的な入力を提供します。 明示的な型変換はオプションであり、通常は必要ありません。クエリ用語の型はターゲットの数値管理プロパティの型に従って検出されます。 |
数値 |
|
単語または語句が管理プロパティの末尾に出現する必要があることを指定します。 |
近接 |
|
単語、用語、または語句が、管理プロパティと完全にトークン一致する必要があることを指定します。 |
近接 |
|
メタデータまたはその他の構造化データのクエリを実行するために使用します。 |
関連性 |
|
数値の明示的な入力を提供します。 明示的な型変換はオプションであり、通常は必要ありません。クエリ用語の型はターゲットの数値管理プロパティの型に従って検出されます。 |
数値 |
|
数値の明示的な入力を提供します。 明示的な型変換はオプションであり、通常は必要ありません。クエリ用語の型はターゲットの数値管理プロパティの型に従って検出されます。 |
数値 |
|
特定の互いの距離内で N 個の用語を持つアイテムに結果セットを制限します。 |
近接 |
|
オペランドに一致しないアイテムのみを返します。オペランドに指定できるのは、任意の有効な FQL 式です。 |
ブール |
|
NEAR の順序指定付きのバリエーション。用語の順序が一致する必要があります。ONEAR 演算子を使用して、特定の互いの距離内で N 個の用語を持つアイテムに結果セットを制限できます。 |
近接 |
|
1 つ以上の OR オペランドに一致するアイテムのみを返します。OR オペランドに一致する数が多くなると、一致するアイテムの動的ランク (結果セット内の関連性スコア) が高くなります。 |
ブール |
|
トークンの完全な文字列に一致するアイテムのみを返します。 |
近接 |
|
範囲一致式を有効にします。RANGE 演算子は、数値管理プロパティおよび日時管理プロパティで使用します。 |
数値 |
|
特定の用語出現回数に基づいてアイテムの動的ランクを上げることができます。どのアイテムがクエリに一致するかに変更はありません。RANK 式には、一致する必要のある 1 つのコンポーネント、および動的ランクのみに貢献する 1 つ以上のコンポーネントが含まれます。 |
関連性 |
|
単語または語句が管理プロパティの先頭に出現する必要があることを指定します。 |
近接 |
|
テキスト文字列に対するブール型の一致条件を定義します。 |
文字列 |
|
特定の用語出現回数に基づいてアイテムの動的ランクを上げることができます。どのアイテムがクエリに一致するかに変更はありません。XRANK 式には、一致する必要のある 1 つのコンポーネント、および動的ランクのみに貢献する 1 つ以上のコンポーネントが含まれます。 この演算子は RANK 演算子と似ていますが、パフォーマンス特性と、ランク貢献度に対する制御が異なります。 |
関連性 |
AND
すべての AND オペランドに一致するアイテムのみを返します。オペランドに指定できるのは、1 つの用語か任意の有効な FQL サブ式です。
構文
and(operand, operand [, operand]*)
パラメーター
対象外。
例
例 1. 次の式は、既定のフルテキスト インデックスに "cat"、"dog"、および "fox" が含まれるアイテムに一致します。
and(cat, dog, fox)
ANDNOT
1 番目のオペランドに一致し、それ以降のオペランドに一致しないアイテムのみを返します。オペランドに指定できるのは、1 つの用語か任意の有効な FQL サブ式です。
構文
andnot(operand, operand [,operand]*)
パラメーター
対象外。
例
例 1. 次の式は、既定のフルテキスト インデックスに "cat" が含まれて "dog" が含まれないアイテムに一致します。
andnot(cat, dog)
例 2. 次の式は、既定のフルテキスト インデックスに "dog" が含まれて "beagle" と "chihuahua" が含まれないアイテムに一致します。
andnot(dog, beagle, chihuahua)
ANY
OR 演算子と似ていますが、動的ランク (結果セット内の関連性スコア) は、一致するオペランド数やアイテム内の用語間の距離に影響されません。オペランドに指定できるのは、1 つの用語か任意の有効な FQL サブ式です。
クエリのこの部分の動的ランク付けコンポーネントは、ANY 式内で最も適切に一致する用語に基づきます。
注意
OR との違いは、結果セット内でのランク付けにのみ関連します。クエリには同じアイテム セットが一致します。
構文
any(operand, operand [,operand]*)
パラメーター
対象外。
例
例 1. 次の式は、既定のフルテキスト インデックスに "cat" または "dog" が含まれるアイテムに一致します。
インデックスに "cat" と "dog" の両方が含まれ、"cat" のほうがより良い一致とみなされる場合、アイテムの動的ランクは "cat" に基づきます。"dog" は考慮されません。
any(cat, dog)
COUNT
結果として返すアイテムに含まれている必要のあるクエリ用語の出現回数を指定します。オペランドに指定できるのは、1 つのクエリ用語、語句、またはワイルドカード クエリ用語です。
構文
property-spec:count(operand [,from=<numeric value>, to=<numeric value>])
パラメーター
パラメーター |
値 |
説明 |
---|---|---|
from |
<numeric_value> |
from パラメーターの値には、指定したオペランドに一致する必要のある最小回数を示す正の整数を指定する必要があります。 from パラメーターを指定しない場合、下限がなくなります。 |
to |
<numeric_value> |
to パラメーターの値には、指定したオペランドに一致する必要のある包含的でない最大回数を示す正の整数を指定する必要があります。たとえば、to 値の 11 は、10 回以下を示します。 to パラメーターを指定しない場合、上限がなくなります。 |
例
例 1. 次の式は、単語 "cat" が 5 回以上出現する場合に一致します。
count(cat, from=5)
例 2. 次の式は、単語 "cat" が 5 回以上かつ 10 回未満出現する場合に一致します。
count(cat, from=5, to=10)
DATETIME
日時の数値の明示的な入力を提供します。オペランドは、日付と時刻のクエリ式に指定された構文に従って書式設定された日時文字列です。
明示的な型変換はオプションであり、通常は必要ありません。クエリ用語の型はターゲットの数値管理プロパティの型に従って検出されます。
構文
datetime(<date/time string>)
パラメーター
対象外。
ENDS-WITH
単語または語句が管理プロパティの末尾に出現する必要があることを指定します (境界一致)。
境界一致は数値管理プロパティでサポートされません。数値管理プロパティは、常に、完全一致または値範囲の一致に従います。
用途によっては、ユーザーが管理プロパティの完全一致を実行できることが必要になる場合があります。たとえば、これには product name 管理プロパティが考えられます。1 つの製品の完全名が別の製品名のサブ文字列になっている場合があります。
構文
ends-with(<term or phrase>)
パラメーター
対象外。
例
例 1. 次の式は、"author" 管理プロパティに値 "Mr Adam Jones" および "Adam Jones" が含まれるアイテムに一致します。値 "Adam Jones sr" が含まれるアイテムには一致しません。
author:ends-with("adam jones")
解説
境界一致は、管理プロパティのすべてのテキスト、または文字列値のリスト (名前のリストなど) を含む管理プロパティ内の個々の文字列に適用できます。この場合、各文字列の完全な内容の一致を実行したり、文字列境界を超えるクエリ一致を回避したりできます。
境界一致クエリを適用するには、関連する管理プロパティをインデックス スキーマに構成する必要があります。
管理プロパティの境界一致機能を有効にすることで、以下の処理を行うことができます。
明示的な境界一致クエリを使用する。
文字列境界を超えて語句が一致しないようにする。複数の文字列を含む管理プロパティでこの機能を使用すると、文字列は、境界指示の前または後ろで単語に一致しません。
EQUALS
単語または語句が、管理プロパティと完全にトークン一致する必要があることを指定します。
構文
equals(<term or phrase>)
パラメーター
対象外。
例
例 1. 次の例は、"author" 管理プロパティに値 "Adam Jones" が含まれるアイテムに一致します。値 "Adam Jones sr" または "Mr Adam Jones" が含まれるアイテムには一致しません。
author:equals("adam jones")
解説
「ENDS-WITH」も参照してください。
FILTER
メタデータまたはその他の構造化データのクエリを実行するために使用します。
FILTER 演算子を使用すると、指定したクエリに対して以下の処理が自動的に行われます。
言語的機能が linguistics="OFF" に設定されます。
ランク付けが無効になります。
クエリ結果において、検索語句を強調する要約でクエリの強調表示が使用されません。
ヒント |
---|
FILTER 式内で STRING 演算子を使用する場合、既定で言語的機能が無効になります。言語的処理を有効にするには、FILTER 内の各 STRING 式内でオペランド linguistics="ON" を使用します。 |
構文
filter(<any valid FQL operator expression>)
パラメーター
対象外。
例
例 1. 次の式は、"sonata" が含まれる title 管理プロパティおよびトークン "audio" のみが含まれる doctype 管理プロパティを持つアイテムに一致します。"audio" で言語的一致は実行されません。FILTER トークンが "audio" の一致に使用されるため、そのテキストは、検索語句を強調表示する要約で強調表示されません。
and(title:sonata, filter(doctype:equals("audio")))
解説
数値プロパティで、1 つ以上の大きな整数値セットを照合するようにクエリを制限する必要がある場合、機能的に等しい次の 2 つの方法でこの式を表現できます。
and(string("hello world"), filter(property-spec:or(1, 20, 453, ... , 3473)))
and(string("hello world"), filter(property-spec:int("1 20 453 ... 3473", mode="or")))
2 番目の例は、一連の数値を二重引用符で囲んだ文字列を使用して、INT 演算子を使用しています。大きな数値セットを使用してフィルター処理を行う場合は、これによりクエリのパフォーマンスが大幅に向上します。
大きな値セットをフィルター処理する必要がある場合、文字列値の代わりに数値の使用を考慮し、最適化された構文を使用してクエリを表現する必要があります。
FLOAT
浮動小数点数値の明示的な入力を提供します。オペランドは、数値用語の式に指定された構文に従う浮動小数点値です。
明示的な型変換はオプションであり、通常は必要ありません。クエリ用語の型はターゲットの数値管理プロパティの型に従って検出されます。
構文
float(<floating point value>)
パラメーター
対象外。
INT
整数値の明示的な入力を提供します。オペランドは、数値用語の式に指定された構文に従う整数値です。
明示的な型変換はオプションであり、通常は必要ありません。クエリ用語の型はターゲットの数値管理プロパティの型に従って検出されます。
INT 演算子を使用して、一連の整数値をブール型の FQL 演算子への引数として表現することもできます。これにより、パフォーマンス効率の高い方法で、一連の整数値をクエリに提供することができます。INT 演算子を使用して渡される値は、FQL クエリ パーサーで解析されず、クエリ一致コンポーネントに直接渡されるためです。
構文
int(<integer value>)
int("value, value, … , value")
1 番目の構文では、1 つの整数が指定されています。2 番目の構文では、二重引用符で囲まれた整数値のコンマ区切りのリストが指定されています。
パラメーター
対象外。
例
例 1. 数値プロパティで、1 つ以上の大きな整数値セットを照合するようにクエリを制限する必要がある場合、INT 演算子を使用してこれを表現できます。
and(string("hello world"), filter(id:int("1 20 49 124 453 985 3473", mode="or")))
NEAR
特定の互いの距離内で N 個の用語を持つアイテムに結果セットを制限します。
照合では、クエリ用語の順序は重要ではありません。重要なのは距離だけです。
任意の数の用語を NEAR 演算子と組み合わせることができます。
NEAR オペランドに指定できるのは、1 つの用語、語句、またはブール型の OR あるいは ANY 演算子式です。ワイルドカードも使用できます。
NEAR 演算子の複数のオペランドが同じインデックス付きトークンに一致する場合、それらは互いに近いとみなされます。
構文
near(arg, arg [, arg]* [, N=<numeric value>])
パラメーター
パラメーター |
値 |
説明 |
---|---|---|
N |
<numeric_value> |
用語間で出現可能な単語の最大数を指定します (明示的な近接)。 NEAR に 3 つ以上のオペランドが含まれる場合、用語間で出現可能な単語の最大数 (N) は式全体内でカウントされます。 既定値: 4 |
例
例 1. 次の式は、"cat" と "dog" の両方を含む文字列のうち、4 つ以下のインデックス付きトークン (既定) でそれらが区切られている文字列に一致します。
near(cat, dog)
例 2. 次の式は、"cat"、"dog"、"fox"、および "wolf" を含む文字列のうち、4 つ以下のインデックス付きトークンでそれらが区切られている文字列に一致します。
near(cat, dog, fox, wolf)
次の表に、管理プロパティの文字列値の例と、その文字列値が前述の例 2. の式に一致するかどうかを示します。
一致 |
テキスト |
---|---|
はい |
The picture shows a cat, a dog, a fox, and a wolf. |
はい (ステミングを使用) |
Dogs, foxes, and wolves are canines, but cats are felines. |
いいえ |
The picture shows a cat with a dog, a fox, and a wolf. |
次の式は、前述の表のすべての文字列に一致します。
near(cat, dog, fox, wolf, N=5)
例 3. 次の式は、インデックス付きのトークン "clarinet" のみが含まれる管理プロパティに一致します。"c*t" と "clarinet" の検索トークンがインデックス付きの同じトークンに一致しても、"c*t" と "clarinet" は一致しており、互いに近いとみなされるためです。
near("c*t", "clarinet")
解説
NEAR/ONEAR の用語距離についての考察
N は、アイテムの一致セグメント内のクエリ用語間で出現可能な単語の最大数を示します。NEAR または ONEAR に 3 つ以上のオペランドがある場合、クエリ用語間で出現可能な単語の最大数 (N) は、NEAR または ONEAR のすべての用語に一致するアイテムのセグメント内でカウントされます。
NEAR または ONEAR はトークン化されたテキストで動作します。つまり、コンマ (",")、ピリオド (".")、コロン (":")、セミコロン (";") など、特殊文字は空白として処理されます。用語 "距離" は、インデックス付きのテキスト内のトークンに関係します。
ONEAR または NEAR を等号オペランドと共に使用する場合、演算子は次のように機能します。
near(a, a, n=x)
1 つ以上の ''a'' のインスタンスがコンテキスト内に出現する場合、このクエリは常に true を返します。また、これは、NEAR を COUNT 演算子として使用できないことも意味します。用語の出現回数のカウント方法については、COUNT 演算子を参照してください。
語句に適用される NEAR は、テキスト内の重複する語句にも一致します。
一致セグメント内のトークンが NEAR または ONEAR 式の複数のオペランドに一致する場合は、一致セグメント内の不一致トークンの数が NEAR または ONEAR 演算子式の 'N' の値を超える場合でも、クエリは一致する場合があります。たとえば、重複は重複する語句になりえます。トークンの重複一致の数が 'O' の場合、'N+O' を超える不一致トークンがアイテムの一致セグメント内に出現しない場合、クエリは一致します。
NEAR または ONEAR** と NOT**
NOT 演算子を NEAR または ONEAR 演算子内で使用することはできません。次の FQL 構文は誤りです。
near(audi,not(bmw),n=2)
NOT
オペランドに一致しないアイテムのみを返します。オペランドに指定できるのは、任意の有効な FQL 式です。
構文
not(operand)
パラメーター
対象外。
ONEAR
NEAR の順序指定付きのバリエーション。用語の順序が一致する必要があります。ONEAR 演算子を使用して、特定の互いの距離内で N 個の用語を持つアイテムに結果セットを制限できます。
構文
onear(arg, arg [, arg]* [, N=<numeric value>])
パラメーター
パラメーター |
値 |
説明 |
---|---|---|
N |
<numeric_value> |
用語間で出現可能な単語の最大数を指定します (明示的な近接)。 ONEAR に 3 つ以上のオペランドが含まれる場合、用語間で出現可能な単語の最大数 (N) は式全体内でカウントされます。 既定値: 4 |
例
例 1. 次の式は、単語 "cat"、"dog"、"fox"、および "wolf" のすべてが順序どおりに出現するもののうち、4 つ以下のインデックス付きトークンでそれらの単語が区切られている場合に一致します。
onear(cat, dog, fox, wolf)
次の表に、管理プロパティの文字列値の例と、その文字列値が前述の式に一致するかどうかを示します。
一致 |
テキスト |
---|---|
はい |
The picture shows a cat, a dog, a fox, and a wolf. |
いいえ |
Dogs, foxes, and wolves are canines, but cats are felines. |
いいえ |
The picture shows a cat with a dog, a fox, and a wolf. |
例 2. 次の式は、前述の表の 2 番目の行のテキストに一致 (ステミングを使用) します。
onear(dog, fox, wolf, cat, N=5)
例 3. 次の式は、前述の表の 1 番目と 3 番目の行のテキストに一致します。
onear(cat, dog, fox, wolf, N=5)
解説
「NEAR」も参照してください。
OR
1 つ以上の OR オペランドに一致するアイテムのみを返します。OR オペランドに一致する数が多くなると、一致するアイテムの動的ランク (結果セット内の関連性スコア) が高くなります。オペランドに指定できるのは、1 つの用語か任意の有効な FQL サブ式です。
構文
or(operand, operand [,operand]*)
パラメーター
対象外。
例
例 1. 次の式は、既定のフルテキスト インデックスに "cat" または "dog" が含まれるすべてのアイテムに一致します。アイテムの既定のフルテキスト インデックスに "cat" と "dog" の両方が含まれる場合、そのアイテムは一致し、そのトークンの 1 つのみが含まれる場合よりも動的ランクが高くなります。
or(cat, dog)
PHRASE
トークンの完全な文字列を検索します。
PHRASE オペランドに指定できるのは、1 つの用語です。ワイルドカードも使用できます。
構文
phrase(term [, term]*)
パラメーター
対象外。
解説
「STRING」も参照してください。
RANGE
RANGE 演算子は、数値管理プロパティおよび日時管理プロパティで使用します。この演算子を使用すると、範囲一致式を指定できます。
構文
range(start, end [,from="GE"|"GT"] [,to="LE"|"LT"])
パラメーター
パラメーター |
値 |
説明 |
---|---|---|
start |
<numeric_value>|<date/time_value> |
範囲の開始値。 範囲に下限がないことを指定するには、予約語の min を使用します。 |
stop |
<numeric_value>|<date/time_value> |
範囲の終了値。 範囲に上限がないことを指定するには、予約語の max を使用します。 |
from |
GE|GT |
開かれた開始間隔または閉じられた開始間隔を示すオプションのパラメーター。 有効な値:
既定値: GE |
to |
LE|LT |
開かれた終了間隔または閉じられた終了間隔を示すオプションのパラメーター。 有効な値:
既定値: LT |
例
例 1. 次の式は、サイズが 10000 バイト以上のアイテム内に出現する語句 "olympic games" で始まる Description プロパティに一致します。
and(size:range(10000, max), description:starts-with("olympic games"))
RANK
特定の用語出現回数に基づいてアイテムの動的ランクをアップします。どのアイテムがクエリに一致するかに変更はありません。RANK 式には、一致する必要のある 1 つのコンポーネント、および動的ランクのみに貢献する 1 つ以上のコンポーネントが含まれます。
RANK 演算子と XRANK 演算子の違いは次のとおりです。
RANK オペランド内の用語が多くのヒットを生成する場合、XRANK は RANK よりもはるかに効率的です。
XRANK では、クエリ時に boost パラメーターを使用してブースト レベルを設定できます。
XRANK では、ランクの定数値が追加されます。一方、RANK では、オペランドに関連付けられたランク値が追加されます。
XRANK では、動的ランクを受け入れていないアイテムにランクが追加されます。
XRANK オペランドでも、管理プロパティ (フルテキスト インデックスだけではない) に対処できます。
RANK 演算子は、2 つ以上のオペランドを取ります。1 番目のオペランドは、照合するメインのクエリ式です。これは、その他の用語または式として、再現率または適合率に貢献します。以降のオペランドは動的ランクのアップに貢献しますが、どのアイテムがクエリに一致するかに影響しません。オペランドに指定できるのは、1 つの用語か任意の有効な FQL サブ式です。
RANK 演算子は、フルテキスト インデックスに対してのみ使用できます。
構文
rank(operand, rank-operand [, rank-operand]*)
パラメーター
対象外。
例
例 1. 次の式は、インデックスに "dog" が含まれるアイテムに一致します。インデックスに "cat" も含まれる場合、アイテムの動的ランクは上昇します。インデックスに "cat" が含まれ、"dog" が含まれない場合、そのアイテムは式に一致しません。
rank(dog, cat)
例 2. 次の式は、インデックスに "dog" が含まれるアイテムに一致します。インデックスに "boxer" または "pointer" も含まれる場合、アイテムの動的ランクは上昇します。
rank(dog, boxer, pointer)
例 3. この式は、前の式と同じアイテムに一致しますが、インデックスに "thoroughbred beagle" という語句も含まれる場合、アイテムの動的ランクは上昇します。
rank(dog, "thoroughbred beagle")
例 4. この式は、title 管理プロパティに "dog" と "beagle" の両方が含まれるアイテムに一致します。title 管理プロパティにインデックス付きトークンの "thoroughbred" も含まれる場合、アイテムの動的ランクは上昇します。
and(title:dog, rank(title:beagle, title:thoroughbred))
STARTS-WITH
管理プロパティの先頭に出現する必要がある単語または語句を指定します。
構文
starts-with(<term or phrase>)
パラメーター
対象外。
例
例 1. 次の式は、author 管理プロパティに値 "Adam Jones sr" および "Adam Jones" が含まれるアイテムに一致します。値 "Mr Adam Jones" が含まれるアイテムには一致しません。
author:starts-with("adam jones")
解説
境界一致の詳細については、「ENDS-WITH」を参照してください。
STRING
テキスト文字列に対するブール型の一致条件を定義します。
オペランドは、照合するテキスト文字列 (1 つ以上の用語) です。文字列の後にはゼロ個以上のパラメーターが続きます。
STRING 演算子を型変換として使用することもできます。たとえば、クエリ string("24.5") は、数値の "24.5" をテキスト文字列として処理します。
構文
string("<text string>"
[, mode=<mode>]
[, n=<near>]
[, weight=<n>]
[, linguistics=<on|off>]
[, wildcard=<on|off>]
[, minexpansion=<n>]
[, maxexpansion=<n>]
[, annotation_class=<annotation_string>])
パラメーター
パラメーター |
値 |
説明 |
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
mode |
<mode> |
mode パラメーターは、<text string> 値の評価方法を指定します。次の表に有効な値を示します。
既定値: "PHRASE" |
||||||||||||||||||
n |
<numeric_value> |
このパラメーターは、mode="NEAR" または mode="ONEAR" の最大用語距離を示します。 次の式は同等です。 string("hello world", mode="NEAR", n=5) near(hello, world, n=5) 既定値: 4 |
||||||||||||||||||
weight |
<numeric_value> |
このパラメーターは、動的ランク付けで使用する用語の重みを示す正の数値です。 低い値は、ランクへの用語の貢献度が低くなることを示します。高い値は、ランクへの用語の貢献度が高くなることを示します。重みパラメーターの値がゼロの場合、用語は動的ランクに影響しません。 weight パラメーターは、STRING 式のすべての用語に適用されます。
既定値: 100 |
||||||||||||||||||
linguistics |
on|off |
文字列の言語的機能 (見出し語化、類義語、スペル チェック) がクエリで有効な場合、それらのすべての機能を有効/無効にします。 このパラメーターを使用すると、ランクへの特定の用語または文字列の貢献を維持したまま、その用語または文字列の言語的処理をオフに切り替えることができます。 既定値: "ON" |
||||||||||||||||||
wildcard |
on|off |
このパラメーターは、<text string> 内で用語のワイルドカード拡張を制御します。この設定は、クエリ パラメーター内のすべてのワイルドカード設定を上書きします。また、この設定を使用して、クエリの特定の部分で、拡張されたワイルドカード文字を有効または無効にできます。 有効な値は次のとおりです。
既定値: "ON" |
||||||||||||||||||
minexpansion |
<positive_integer> |
このパラメーターは、ワイルドカード拡張でのサブ文字列の最小長を定義します。 <string> の値は、1 つのアスタリスクを含むワイルドカード式である必要があります。 既定値: 0 |
||||||||||||||||||
maxexpansion |
<positive_integer> |
このパラメーターは、ワイルドカード拡張でのサブ文字列の最大長を定義します。 <string> の値は、1 つのアスタリスクを含むワイルドカード式である必要があります。 既定値: 無限大 |
||||||||||||||||||
annotation_class |
<annotation_string> |
STRING パラメーター annotation_class="user" を使用して、STRING ノードに、このノードはユーザーが生成したことを示す注釈を付けます。 特定の関連性機能は、ユーザーが生成したクエリの一部にのみ適用されます。これには、アンカー テキストとクリックスルー クエリ ログに基づくクエリ ブーストが含まれます。 |
例
例 1. 既定の文字列モードは "PHRASE" のため、次の各式は同じ結果を返します。
"what light through yonder window breaks"
string("what light through yonder window breaks")
string("what light through yonder window breaks", mode="phrase")
phrase(what, light, through, yonder, window, breaks)
例 2. 次の文字列トークン式と AND 演算子式は同じ結果を返します。
string("cat dog fox", mode="and")
and(cat, dog, fox)
例 3. 次の文字列トークン式と OR 演算子式は同じ結果を返します。
string("coyote saguaro", mode="or")
or(coyote, saguaro)
例 4. 次の文字列トークン式と ANY 演算子式は同じ結果を返します。
string("coyote saguaro", mode="any")
any(coyote, saguaro)
例 5. 次の文字列トークン式と NEAR 演算子式は同じ結果を返します。
string("coyote saguaro", mode="near")
near(coyote, saguaro)
例 6. 次の文字列トークン式と NEAR 演算子式は同じ結果を返します。
string("cat dog fox wolf", mode="near", N=4)
near(cat, dog, fox, wolf, N=4)
例 7. 次の文字列トークン式と ONEAR 演算子式は同じ結果を返します。
string("cat dog fox wolf", mode="onear")
onear(cat, dog, fox, wolf)
例 8. 疑問符 ("?") とアスタリスク ("*") の各文字はワイルドカード文字として評価されます。したがって、次の文字列トークン式は、"cat"、"cot" など、"c" で始まり "t" で終わる 3 文字のインデックス付きトークンに一致します。
string("c?t")
string("c*t")
例 9. 次の文字列トークン式は、単語 "nobler" に一致し、言語的機能を無効にします。したがって、ステミングを使用しても、この単語の他の語形 ("ennobling" など) には一致しません。
string("nobler", linguistics="off")
例 10. 次の式は、"cat" または "dog " が含まれるアイテムに一致しますが、"dog" が含まれるアイテムの動的ランクは "cat" が含まれるアイテムよりも高くなります。
or(string("cat", weight="200"), string("dog", weight="500"))
例 11. 次の式は、"prefix" で始まり "suffix" で終わる用語のうち、"prefix" と "suffix" の間のサブ文字列が 4 文字以下のすべての用語に一致します。
string("prefix*suffix",maxexpansion=4)
例 12. 次の文字列トークン式は、単語 "microsoft corporation" に一致します。annotation_class パラメーター追加することで、アイテムを指すリンクにまったく同じアンカー テキストを持つアイテムはランクがアップします。
string("Microsoft corporation", annotation_class="user")
解説
動的ランクにおける関連性の重み
weight パラメーターの主な効果は OR クエリで発揮されます。また、AND クエリにも一部の効果が与えられます。動的ランク アルゴリズムは、アイテム内のどの場所で用語の一致が発生するかによって、用語によりランク貢献度が異なることを暗黙に示す可能性があります。
ランク貢献度の差は、用語の頻度と、逆のアイテムの頻度に基づくこともできます。次に例を示します。
クエリ: and(string("a"), string("b", weight=200))
インデックス スキーマ: title 管理プロパティは、body 管理プロパティよりも高い重みを持っている。
インデックス アイテム 1 のタイトルには用語 "a" が含まれ、本文には用語 "b" が含まれる。
インデックス アイテム 2 の本文には用語 "a" が含まれ、タイトルには用語 "b" が含まれる。
この例では、アイテム 2 の合計ランクが最高になります。高い動的ランクの貢献を持つアイテムは、ランクがさらにアップするためです。
ヒント |
---|
間連用語のブースト (正または負) は、合計ランクの動的ランク コンポーネントに適用されます。ただし、近接ブースト (単語間の距離) のランク計算は、用語の重みによる影響を受けません。関連性の重み付けは、必ずしも、特定のパーセンテージによってアイテムの合計ランクが変更されることを意味するとは限りません。 次のクエリは、用語 "peter"、"paul"、または "mary" を検索します。ここで、"peter" には、他の 2 つの用語よりも 2 倍のランク貢献度が与えられます。 or(peter, string("paul mary", mode="OR", weight=50)) |
特殊文字を含む文字列の処理
コンマ (",")、セミコロン (";")、コロン (":")、ピリオド (".")、マイナス ("-")、下線 ("_")、スラッシュ ("/") などの特殊文字は、二重引用符で囲まれた文字列式内では空白として処理されます。これは、トークン化処理に関連します。これらの文字は、これらの文字によって区切られるトークンの暗黙的な句法も意味します。
次のクエリ式は同等です。
title:string("animals birds", mode="phrase")
title:"animals/birds"
title:string("animals/birds", mode="and")
title:string("animals/birds", mode="or")
次のクエリ式は同等です。
title:or(string("animals birds", mode="phrase"),
string("animals insects", mode="phrase"))
title:string("animals/birds animals/insects", mode="or")
次のクエリ式は同等です。
body:string("help contoso com", mode="phrase")
body:string("help@contoso.com")
トークン化された語句の一致
トークンの完全な文字列を検索するには、mode="phrase" 付きの STRING 演算子、または PHRASE 演算子を使用します。
すべてのこのような語句操作は、トークン化された語句の一致を暗黙的に示します。つまり、コンマ (",")、セミコロン (";")、コロン (":")、下線 ("_")、マイナス ("-")、スラッシュ ("/") などの特殊記号は、空白として処理されます。これは、トークン化処理に関連します。
XRANK
特定の用語出現回数に基づいてアイテムの動的ランクをアップします。どのアイテムがクエリに一致するかに変更はありません。XRANK 式には、一致する必要のある 1 つのコンポーネント、および動的ランクのみに貢献する 1 つ以上のコンポーネントが含まれます。
RANK 演算子と XRANK 演算子の違いは次のとおりです。
RANK オペランド内の用語が多くのヒットを生成する場合、XRANK は RANK よりもはるかに効率的です。
XRANK では、クエリ時に boost パラメーターを使用してブースト レベルを設定できます。
XRANK では、ランクの定数値が追加されます。一方、RANK では、オペランドに関連付けられたランク値が追加されます。
XRANK では、動的ランクを受け入れていないアイテムにランクが追加されます。
XRANK オペランドでも、管理プロパティ (フルテキスト インデックスだけではない) に対処できます。
XRANK 演算子は、2 つ以上のオペランドを取ります。オペランドに指定できるのは、1 つの用語か任意の有効な FQL サブ式です。
1 番目のオペランドは、照合するメインのクエリ用語または式です。これは、その他の用語または式として、再現率または適合率に貢献します。
以降のオペランドは、一致するアイテムの合計数に影響しませんが、次のオペランド内の用語に一致するアイテムは結果セット内でランクが上昇するという点において動的ランク付けに影響します。以降のオペランドが複数ある場合、各オペランドの一致によって昇格値 n がアイテムの合計ランクに追加されます。
この演算子を使用して、検索された特定のテキスト用語に従って動的ランクをアップできます。ただし、一致を与えるために、これらの用語が検索される必要はありません。
XRANK 演算子は、フルテキスト インデックスと管理プロパティで使用できます。
XRANK は、単項ブーストをサポートします。xrank(a,boost=n) は、a に一致する各アイテムに昇格値 n を追加します。AND 演算子または ANY 演算子を使用して、複数の XRANK 式を組み合わせるときに、この構文を使用できます。
構文
xrank(operand, rank-operand [, rank-operand]* [,boost=n] [,boostall=yes])
パラメーター
パラメーター |
値 |
説明 |
---|---|---|
boost |
<numeric_value> |
指定した数値で、一致するアイテムの動的ランクを上昇することを指定します。 動的ランク コンポーネントがゼロより低くなることはありません (負の結果ランクはサポートされません)。静的ランク コンポーネントのため、正の結果ランクを得ることができます。 既定値: 100 |
boostall |
yes|no |
動的ランクの増加を動的ランクを持たないアイテムに適用するかどうかを指定します。
既定値: no |
例
例 1. 次の式は、既定のフルテキスト インデックスに "cat" または "dog" が含まれるアイテムに一致します。"thoroughbred" も含まれるアイテムについては、動的ランクが上昇します。
xrank(or(cat, dog), thoroughbred)
例 2. 次の式は、既定のフルテキスト インデックスに "cat" または "dog" が含まれるアイテムに一致します。"thoroughbred" が含まれるアイテムについては、ランクがまだなくても、動的ランクが 500 (既定値の 100 ではない) 増加します。
xrank(or(cat, dog), thoroughbred, boost=500, boostall=yes)