조회 연산자

조회 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 표시는 다음과 같습니다.

JSON source that shows the enriched_text.entities.text object structure
JSON representation of the enriched_text.entities.text field

: (포함)

이 연산자는 전체 쿼리 용어의 포함을 지정합니다.

예를 들어, 다음 쿼리는 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 baseballquotation 필드를 포함하는 문서만 리턴합니다.

{
  "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"의 부울 연산자입니다.

다음 예제에서는 GoogleIBM이 둘 다 엔티티로 식별되는 문서가 리턴됩니다.

{
  "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 dogfar log 와 일치합니다.

예를 들어,

{
  "query":"title:\"car hog\"~1"
}

:* (존재)

지정된 필드가 있는 모든 결과를 반환하는 데 사용됩니다.

예를 들어,

{
  "query":"title:*"
}

:!* (존재하지 않음)

지정된 필드를 포함하지 않는 모든 결과를 반환하는 데 사용됩니다.

예를 들어,

{
  "query":"title:!*"
}

자세한 정보는 Discovery API 참조를 참조하십시오.

조회 개념 개요는 조회 개요를 참조하십시오.