照会演算子
オペレーターは、照会 API を使用して Discovery にサブミットする照会を作成するときに使用できます。
サポートされる演算子のタイプは、照会タイプによって異なります。
Natural Language Query (NLQ) 演算子
natural_language_query
パラメーターは、ストリング値を受け入れます。
""
(フレーズクエリ)
一致することが最も重要な照会内の単一の単語または句を強調するには、引用符を使用します。 例えば、以下の要求では、「候補」という用語が含まれている文書がランキング調整されます。
{
"natural_language_query":"What is the process for \"nomination\" of bonds?"
}
引用符で囲んだ句を指定しても、その句のない文書は返されません。 句が含まれていない文書よりも、句が含まれている文書の方が重みが大きいだけです。 例えば、照会結果には、「結合」または「プロセス」に言及し、「ノミネーション」という語を含まない文書も含まれる場合があります。
The following request boosts the phrase “change in monetary policy” and also matches “change” or “monetary” or “policy”.
{
"natural_language_query":"\"change in monetary policy\""
}
単一引用符 (') はサポートされていません。 句照会ではワイルドカード (*) を使用できません。
ディスカバリー照会言語 (DQL) オペレーター
演算子は、照会のさまざまな部分の分離文字です。
.
(JSON 区切り文字)
この区切り文字は、JSON スキーマの階層のレベルを分離します。
例えば、以下の照会引数は、エンティティーを含む enriched_text オブジェクトのセクションと、エンティティーとして認識されるテキストを識別します。
enriched_text.entities.text
このセクションの JSON 表現は、以下のようになります。
{: caption="表現
:
(含む)
この演算子は、照会条件全体を含めることを指定します。
例えば、以下の照会は、 text
フィールドに cloud computing
という語が含まれている文書を検索します。
{
"query":"enriched_text.entities.text:\"cloud computing\""
}
includes 演算子は、照会条件の部分一致を返しません。 用語の部分一致を検索する場合は、 includes 演算子とともに ワイルドカード 演算子を使用します。 例えば、 test_results
フィールドで TP53
または p53
の出現箇所を検索する場合、以下の照会では、両方の用語の出現箇所は検出
されません。
{
"query":"test_results:P53"
}
代わりに、要求にワイルドカードを含めてください。 例えば、以下の照会要求を使用します。 ワイルドカード演算子を使用しているため、用語を小文字に変更しました。
{
"query":"test_results:*p53"
}
この構文では、 p53
、 tp53
、 P53
、または TP53
のオカレンスがすべて返されます。
""
(フレーズクエリ)
句照会は、句全体のオカレンスにのみ一致します。 句内の単語の順序は一致する必要があります。
例えば、以下の照会では、 quotation
という名前のフィールドに There's no crying in baseball
というテキストが含まれている文書のみが返されます。
{
"query":"quotation:\"There's no crying in baseball\""
}
Jimmy Dugan said there's no crying in baseball
という quotation
フィールドを持つ文書も返されます。 ただし、句全体を含まない baseball
または crying
のみを言及する文書は一致しません。 どちらも In baseball, there's no crying
の文書ではありません。
誤ったフィールドに正しいテキストが含まれている文書も一致しません。 例えば、 text
フィールドに There's no crying in baseball
というテキストが含まれている文書は返されません。
単一引用符 (') はサポートされていません。 句照会ではワイルドカード (*) を使用できません。
::
(完全一致)
この演算子は、照会用語の完全一致を指定します。 完全一致では、大/小文字が区別されます。
例えば、以下の照会は、タイプ Organization
のエンティティーを含む文書を検索します。
{
"query":"enriched_text.entities.type::Organization"
}
指定するフィールドの内容全体が、指定する句と一致する必要があります。 例えば、以下の照会では、 IBM Cloud
のエンティティー・メンションのみが検出され、 IBM Cloud Pak for Data
、 IBM cloud
、または Cloud
は検出されない文書が検出されます。
{
"query":"enriched_text.entities.text::\"IBM Cloud\""
}
長さが 256 文字を超える文書フィールドを突き合わせることはできません。
与えられた文字シンボルに対するクエリ結果を取得するには、以下の例を参照してください
curl -X POST "https://api.jp-tok.discovery.watson.cloud.ibm.com/instances/<instance-id>/v2/projects/<project-id>/query?version=2023-03-31" \
-u "apikey:<wd-api-key>" \
--header "Content-Type: application/json" \
--data '{
"query": "<field-with-symbol>::*¥*"
}'
この例のクエリは、¥を検索するものです。¥を、検索したい必要な文字記号に置き換えてください。 検索は、検索対象の記号を含むフィールドの値の長さが 256文字 未満の場合に、一致する値を返します。 また、ドキュメントのどの部分がクエリに関連しているかに関わらず、ドキュメント全体が一致します。
:!
(含まれていません)
この演算子は、クエリ用語に一致する結果が含まれないことを指定します。
例:
{
"query":"enriched_text.entities.text:!\"cloud computing\""
}
::!
(完全一致ではない)
この演算子は、結果がクエリ語句と完全に一致しないことを指定します。
例:
{
"query":"enriched_text.entities.text::!\"Cloud computing\""
}
完全一致では、大/小文字が区別されます。
フィールドの長さが 256 文字を超える場合に、照会条件に一致する文書フィールドを取得します。
\
(エスケープ文字)
後に続く演算子のリテラル値を保存するエスケープ文字。
テキスト照会内の有効なエスケープ・シーケンスの完全なリスト (句照会を除く):
\"
,\\
,\(
,\)
,\[
,\]
,\,
,\|
,\^
,\~
,\:
,\<=
,\>=
,\<
,\>
,\:!
,\::
,\::!
,\*
,\!
例えば、 message:\>=D
、method::foo\(String\)
などです。
句照会内では、有効なエスケープ・シーケンスは \"
のみです。
例えば、 name:"Shane \"Rapha\" Hendrixson"
、 method::"foo(String)"
などです。
DQL は、JSON ストリング・フィールドとして 照会 API にサブミットされます。JSON ストリング・フィールドでは、独自の追加レイヤーのエスケープが必要です。以下に例を示します。
{
"query":"name:\"Shane \\\"Rapha\\\" Hendrixson\""
}
()
, []
(入れ子グループ)
より具体的な情報を指定するために論理グループを形成できます。
例:
{
"query":"enriched_text.entities:(text:IBM,type:Company)"
}
|
(もしくは)
「or」のブール演算子。
以下の例では、Google
または IBM
がエンティティーとして識別される文書が返されます。
{
"query":"enriched_text.entities.text:Google|enriched_text.entities.text:IBM"
}
インクルード演算子 (:
、:!
) およびマッチング演算子 (::
、::!
) は、OR
演算子よりも優先されます。
例えば、以下の構文は、Google
がエンティティーとして識別される文書、またはストリング IBM
が存在する文書を検索します。
{
"query":"enriched_text.entities.text:Google|IBM"
}
次のように処理されます
(enriched_text.entities.text:Google) OR IBM
,
(そして)
「and」のブール演算子。
以下の例では、Google
と IBM
の両方がエンティティーとして識別される文書が返されます。
{
"query":"enriched_text.entities.text:Google,enriched_text.entities.text:IBM"
}
インクルード演算子 (:
、:!
) およびマッチング演算子 (::
、::!
) は、AND
演算子よりも優先されます。
例えば、以下の構文は、Google
がエンティティーとして識別され、ストリング IBM
が存在する文書を検索します。
{
"query":"enriched_text.entities.text:Google,IBM"
}
次のように処理されます
(enriched_text.entities.text:Google) AND IBM
<=, >=, >, <
(数値比較)
less than
または equal to
、 greater than
または equal to
、 greater than
、 less than
の数値比較を作成します。
数値比較演算子は、値が number
または date
の場合にのみ使用してください。
引用符で囲まれた値はすべてストリングです。 したがって、 score>=0.5
は有効なクエリであり、 score>="0.5"
は有効ではありません。
例:
{
"query":"invoice.total>100.50"
}
^x
(スコア倍率)
検索語のスコア値を増加します。
例:
{
"query":"enriched_text.entities.text:IBM^3"
}
*
(ワイルドカード)
検索式内の不明の文字を一致させます。 ワイルドカードに大文字は使用しないでください。
例:
{
"query":"enriched_text.entities.text:ib*"
}
~n
(文字列のバリエーション)
ストリングのマッチング時に許可される文字差分の数。 使用できる最大のバリエーション数は 2 です。
例えば、以下の照会では、タイトル・フィールドに car
が含まれている文書と、 cap
、cat
、can
、 sat
などが返されます。
{
"query":"title:cat~1"
}
マッチングには、正規化されたバージョンの単語が使用されます。 したがって、入力に「cat」が含まれている場合、検索では「cat」が検索されます。これは、複数猫の正規化された形式です。
句がサブミットされると、句内の各用語には、指定された数のバリエーションが許可されます。 例えば、以下の入力は、 car hog
に加えて、 cat dog
および far log
に一致します。
例:
{
"query":"title:\"car hog\"~1"
}
:*
(存在)
指定したフィールドが存在するすべての結果を返すために使用します。
例:
{
"query":"title:*"
}
:!*
(存在しません)
指定したフィールドを含まないすべての結果を返すために使用します。
例:
{
"query":"title:!*"
}
詳しくは、 Discovery API リファレンスを参照してください。
照会の概念の概要については、照会の概要を参照してください。