基本的なクエリ構造
<Contain> 要素には、次の要素を任意の順序でいくつでも含めることができます。
これらの各要素には、次のいずれか 1 つを含める必要があります。
<Contain> 要素には、少なくとも 1 つの <Required> 要素または <Optional> 要素が必要です。Contain 要素の属性
<Contain> タグの属性で指定できます。
MinCount 属性
MinCount 属性では、単語形の組み合わせに含まれる要素の最小数を指定します。各要素には、単語形、またはサブクエリによって返される単語形の並びを指定できます。この属性のデフォルト値は 1 です。このパラメーターの値は、単語形の組み合わせに含まれる <Required> 要素と <Optional> 要素の合計数を超えてはなりません。
このパラメーターは、単語形の組み合わせに 1 つ以上の <Optional> 要素が含まれる場合に便利です。
次のクエリは、1 番目または 2 番目のパラメーターを探します。
KeepOrder 属性
KeepOrder 属性を使用します。属性のデフォルト値は false です。
次のクエリは、アイテムの順序が固定されることを指定しています。
KeepOrder は、すべての <Except> 要素にも適用されます。クエリ内で <Except> 要素に対応する単語は、クエリ内でその要素が区切る単語同士の間に出現してはなりません。ただし、固定順序クエリ文字列以外の位置であれば、どこに出現してもかまいません。
たとえば、前のクエリを変更して、単語形「second」を <Required> ではなく <Except> 要素に入れた場合、単語形「first third second」の組み合わせを含むドキュメントはクエリに一致します (ただし、単語形「second」は結果に含まれません) 。その後 KeepOrder 属性を削除すると、単語形「first third second」の組み合わせを含むドキュメントは結果に含まれなくなります。これは、単語形「second」がドキュメントのテキスト内のどこにも出現してはならないためです。
MinDistance 属性と MaxDistance 属性
MinDistance 属性と MaxDistance 属性は、クエリ内の単語間の最小距離と最大距離を指定します。これらの属性にデフォルト値はありません。どちらか一方の属性が指定されていない場合、距離の制限は適用されません。
単語間の距離は単語数で表し、対応する 2 つの単語の位置の差として計算します。隣り合う 2 つの単語間の距離は 1 であるため、どちらの属性の最小値も 1 です。MaxDistance は MinDistance 以上でなければなりません。
2 つの複数単語から成る文字列間の距離は、次のように計算します。文字列同士が重なっていない場合、距離は右側の文字列の最も左にある単語の位置と、左側の文字列の最も右にある単語の位置との差になります。文字列同士が重なっている場合、距離は 0 と見なされます。
たとえば、語句 “The quick brown fox jumped over the lazy dog,” では、文字列 “quick fox” と “lazy dog” の間の距離は 4 で、文字列 “quick fox” と “brown lazy dog” の間の距離は 0 です。
<Except> 要素の場合、単語間の距離は次のように計算されます。
KeepOrder="true"の場合、その単語は文字列内の隣接する単語 (つまり、クエリ内でその単語を挟む単語) の指定距離内に出現してはなりません。同時に、<Except>要素の前後の単語間の距離は、指定した範囲内である必要があります。KeepOrder="false"の場合、その単語は文字列内の他のどの単語についても、指定距離内に出現してはなりません。
KeepOrder="true" と MaxDistance="2" を使用しています。
KeepOrder="false" と MaxDistance="2" を使用します。
<Except> タグ内に配置されており、“tetraborate” と “sodium” の間の最大距離が 2 単語であるためです。
Form 要素
<Form> 要素を使用して指定します。この要素には、次の要素を含めることができます。
<Attributes>— 単語形の属性に対するクエリを含むオプション要素です。詳細は、抽出スクリプトを使用する場合を参照してください。<Text>— 単語形の Unicode テキストを含むオプション要素です。テキストを指定しない場合は、属性クエリに一致する任意の単語がこのクエリに一致します。この場合、属性クエリは必須です。
<Form> タグの属性で指定できます。
SearchType 属性
<Form> タグの SearchType 属性で指定できます。この属性には、次の値を設定できます。
SearchType 属性は省略可能で、既定では AllFormsSearch に設定されています。
CaseSensitive 属性
<Form> タグの CaseSensitive 属性を使用します。この属性は省略可能で、既定値は false です。
次のクエリでは、<Form> タグの SearchType 属性と CaseSensitive 属性の使用例を示します。
Attributes 要素
<Attributes> 要素を使用します。この要素には、次の要素を含めることができます。
<Not> 要素は <Attributes> 要素と同じ方法で構成され、これらの要素のうち 1 つだけを含めることができます。
<Or> 要素と <And> 要素には、これらの要素のうち少なくとも 2 つを含める必要があります。
<Attribute> タグには、属性検索の型を指定する省略可能な SearchType 属性があります。この属性には、次の値を指定できます。
ExactSearch— クエリで指定したとおりの形式で属性を検索します。PrefixSearch— 指定したテキストをプレフィックスとして持つ属性を検索します。
SearchType 属性の既定値は ExactSearch です。
たとえば、次のものをすでに識別済みのドキュメントがあるとします。
ExtractNerObjects関数を呼び出して取得した NER オブジェクトExtractWordsFromUserDictionary関数を呼び出して取得した、dictionaryという名前のユーザー辞書の単語形ExtractRegularExpression関数を呼び出して取得した、パラメーターとして渡された正規表現に一致するすべてのオブジェクト
regExp とします。
コレクションの名前は、インデックス化されたドキュメントに対して実行される XML クエリで使用できます。結果のコレクション自体にも、その名前でアクセスできます。
date という名前の正規表現は、「May 31, 2019.」形式の日付を見つけることがあります。その場合、date1 は単語「May」に対応し、date2 は「31」に対応し、date3 は「2019」に対応します。
FormSet 要素
<FormSet> 要素を使用して指定します。
この型のクエリでは、複数の単一単語形クエリを OR で結合します。これは、すべてのサブクエリがオプションの単語形クエリである <Query> クエリと同等です。
ただし、<FormSet> クエリでは、すべての form に共通する属性クエリを指定できます。これにより、ExactSearch を使用してすべての単語形を検索し、各 form に属性クエリがあり、それらの属性クエリがすべて共通のフラグメントを持つ場合に、検索効率が向上します。
<FormSet> 要素には、次の要素が含まれます。
<Attributes>— form の属性に対するクエリを含むオプション要素。このクエリは、form の属性クエリと AND で結合されます。<Form>— 単語形に対するクエリを含む必須要素。<FormSet>要素には、少なくとも 1 つの<Form>要素が含まれている必要があります。
住所抽出クエリの XML サンプル
住所抽出クエリの結果は、国名の先頭の単語、住所の先頭の単語、市区町村名の先頭の単語、州名の先頭の単語、ZIP コードの先頭の単語を含む文字列です (この順で、かつ各単語の間隔が 5 語以内である場合) 。 構成要素 (たとえば通り名) を構成する連続した単語には、さらにインデックス内で 1 から始まる番号が付けられます。xmlQueryResult に記録されます:
