조회 연산자
조회 API를 사용하여 Discovery 에 제출할 조회를 작성할 때 연산자를 사용할 수 있습니다.
지원되는 연산자 유형은 쿼리 유형에 따라 다릅니다.
NLQ (Natural Language Query) 연산자
natural_language_query 매개변수는 문자열 값을 허용합니다.
"" (구문 검색)
조회에서 일치시키는 데 가장 중요한 단일 단어 또는 구문을 강조하려면 따옴표를 사용하십시오. 예를 들어, 다음 요청은 "지명" 이라는 용어가 포함된 문서를 부스트합니다.
{
"natural_language_query":"What is the process for \"nomination\" of bonds?"
}
인용된 문구를 지정해도 문구가 없는 문서가 리턴되는 것을 방지하지 않습니다. 단순히 구문이 없는 문서보다 구문이 있는 문서에 더 많은 가중치를 부여합니다. 예를 들어, 조회 결과에는 "결합" 또는 "프로세스" 를 언급하고 "지명" 이라는 단어를 포함하지 않는 문서도 포함될 수 있습니다.
다음 요청은 "change in monetary policy" 구문을 강화하고 "change", "monetary" 또는 "policy" 와도 일치합니다.
{
"natural_language_query":"\"change in monetary policy\""
}
작은따옴표 (') 는 지원되지 않습니다. 구문 조회에 와일드카드 (*) 를 사용할 수 없습니다.
DQL (Discovery Query Language) 연산자
연산자는 조회의 서로 다른 파트 사이의 구분 기호입니다.
. (JSON 구분자)
이 구분 기호는 JSON 스키마에서 계층 구조의 레벨을 구분합니다.
예를 들어, 다음 조회 인수는 엔티티 및 엔티티로 인식되는 텍스트를 포함하는 enriched_text 오브젝트의 섹션을 식별합니다.
enriched_text.entities.text
이 섹션의 JSON 표시는 다음과 같습니다.
: (포함)
이 연산자는 전체 쿼리 용어의 포함을 지정합니다.
예를 들어, 다음 쿼리는 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 의 발생이 모두 리턴됩니다.
"" (구문 검색)
구문 조회는 전체 구문의 어커런스만 일치시킵니다. 구문에서 단어의 순서가 일치해야 합니다.
예를 들어, 다음 쿼리는 텍스트가 There's no crying in baseball 인 quotation 필드를 포함하는 문서만 리턴합니다.
{
"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 Pak for Data 또는 IBM cloud 또는 Cloud 가 아닌 IBM 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은 조회 API 에 JSON 문자열 필드로 제출되며, 여기에는 자체 추가 이스케이프 계층이 필요합니다. 예를 들면, 다음과 같습니다.
{
"query":"name:\"Shane \\\"Rapha\\\" Hendrixson\""
}
()``[] (중첩 그룹)
좀 더 특정한 정보를 지정하기 위해 논리 그룹화를 구성할 수 있습니다.
예를 들어,
{
"query":"enriched_text.entities:(text:IBM,type:Company)"
}
| (OR)
"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"
}
단어의 정규화된 버전이 일치에 사용됩니다. 따라서 입력에 "cats" 가 포함된 경우 검색은 "cat" 을 찾습니다. 이는 복수 고양이의 정규화된 양식입니다.
문구가 제출되면 문구의 각 용어에 지정된 수의 변형이 허용됩니다. 예를 들어, 다음 입력은 car hog 외에 cat dog 및 far log 와 일치합니다.
예를 들어,
{
"query":"title:\"car hog\"~1"
}
:* (존재)
지정된 필드가 있는 모든 결과를 반환하는 데 사용됩니다.
예를 들어,
{
"query":"title:*"
}
:!* (존재하지 않음)
지정된 필드를 포함하지 않는 모든 결과를 반환하는 데 사용됩니다.
예를 들어,
{
"query":"title:!*"
}
자세한 정보는 Discovery API 참조를 참조하십시오.
조회 개념 개요는 조회 개요를 참조하십시오.