Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

객체 집합의 V2 검색 조건

ObjectSet의 filter.where는 SearchJsonQueryV2로 조건을 지정합니다. 각 조건은 type으로 구분합니다. 속성을 대상으로 하는 조건은 field 문자열 또는 PropertyIdentifier 객체 중 하나를 제공하며 두 필드를 함께 지정하지 않습니다. field에는 속성 API 이름을 넣습니다.

논리 조건인 and, or, not은 하위 검색 조건을 받습니다. 비교값은 객체 속성값의 JSON 표현을 따릅니다.

비교, 배열과 논리 조합

type의미추가 필드
lt값 미만필수 value: any
lte값 이하필수 value: any
gt값 초과필수 value: any
gte값 이상필수 value: any
eq값과 같음필수 value: any
in주어진 값 중 하나와 같음선택적 value: list<PropertyValue>
contains배열에 값 포함필수 value: any
isNull속성의 null 여부필수 value: boolean
not하위 조건을 충족하지 않음필수 value: SearchJsonQueryV2
and모든 하위 조건 충족선택적 value: list<SearchJsonQueryV2>
or하위 조건 중 하나 이상 충족선택적 value: list<SearchJsonQueryV2>

문자열의 eq와 in에서 전체 용어 일치를 사용하려면 Ontology Manager에서 해당 속성의 Selectable 설정을 켜야 합니다. in에 빈 값 배열을 제공하면 객체 집합의 모든 객체에 일치합니다. 일반적인 SQL의 빈 IN 목록과 같은 조건으로 바꾸어 해석하지 않습니다.

isNull의 값이 true이면 null인 객체를, false이면 null이 아닌 객체를 선택합니다.

{
  "type": "and",
  "value": [
    {
      "type": "gte",
      "propertyIdentifier": {"type": "property", "apiName": "age"},
      "value": 18
    },
    {
      "type": "isNull",
      "propertyIdentifier": {"type": "property", "apiName": "address"},
      "value": false
    }
  ]
}

문자열 조건

아래 조건은 모두 필수 문자열 value와 속성 선택 필드를 사용합니다.

type일치 조건추가 선택 필드
containsAllTerms공백으로 구분한 용어를 순서와 관계없이 모두 포함fuzzy: boolean
containsAnyTerm공백으로 구분한 용어 중 하나 이상 포함fuzzy: boolean
containsAllTermsInOrder모든 용어를 주어진 순서로 인접하여 포함없음
containsAllTermsInOrderPrefixLastTerm모든 용어를 주어진 순서로 인접하여 포함하며 마지막 용어는 접두사 일치 허용없음
wildcard와일드카드 패턴과 일치. 예: fo*o없음
regex정규식 패턴과 일치. 예: .*fo?o*없음
startsWithcontainsAllTermsInOrderPrefixLastTerm의 사용 중단 권고 별칭(Deprecated)없음

containsAllTerms와 containsAnyTerm은 fuzzy: true로 근사 일치를 허용합니다. 용어 입력 예시는 foo bar입니다. startsWith는 이름이 의미를 오해하게 할 수 있으므로 새 요청에는 containsAllTermsInOrderPrefixLastTerm을 사용합니다. 기존 요청의 별칭은 이 동일한 조건으로 해석합니다.

정규식

regex는 분석기를 거치지 않은 텍스트 표현에 적용합니다. 지원 연산자는 다음과 같습니다.

연산자의미
.임의 문자 한 개
?앞 문자를 0회 또는 1회 반복
+앞 문자를 1회 이상 반복
*앞 문자를 0회 이상 반복
{2}앞 문자를 정확히 2회 반복
{2,}앞 문자를 최소 2회 반복
{2,4}앞 문자를 2회 이상 4회 이하 반복
|OR
()표현식을 그룹으로 묶어 하나의 문자처럼 취급
[abc]a, b, c 중 한 문자
[a-c]a부터 c까지의 문자 범위
[^abc]a, b, c가 아닌 문자
"문자열 리터럴 그룹
\이스케이프
\d, \D숫자 문자, 숫자가 아닌 문자
\s, \S공백 문자, 공백이 아닌 문자
\w, \W단어 문자, 단어 문자가 아닌 문자

대괄호 안의 -는 맨 앞에 있거나 역슬래시로 이스케이프하면 일반 문자이며, 그 외에는 범위를 만들 수 있습니다. ^는 대괄호 내용의 첫 문자일 때 집합을 부정하고 그 외에는 일반 문자입니다. JSON 문자열에 역슬래시를 넣을 때는 JSON 이스케이프도 적용합니다.

{
  "type": "regex",
  "propertyIdentifier": {"type": "property", "apiName": "code"},
  "value": "\\d{2}"
}

상대 날짜 범위

relativeDateRange는 날짜 또는 시각 속성을 실행 시점에 상대적인 범위로 조회합니다. 경계는 실행 시점을 기준으로 계산하며 지정한 시간대의 자정으로 맞춥니다.

필드자료형필수 여부의미
field 또는 propertyIdentifier속성 선택둘 중 하나조회할 속성
relativeStartTimeRelativeTime선택시작 경계 포함
relativeEndTimeRelativeTime선택끝 경계 제외
timeZoneIdstring필수자정 계산에 사용할 시간대 ID

시간대 예시는 America/New_York, Europe/London, Etc/UTC입니다. RelativeTime은 type: relativePoint와 필수 integer value, 필수 timeUnit을 갖습니다. 단위는 DAY, WEEK, MONTH, YEAR입니다. 음수는 과거, 양수는 미래입니다. value: -7, timeUnit: DAY는 7일 전이며 value: 1, timeUnit: MONTH는 다음 달의 시작을 뜻합니다.

{
  "type": "relativeDateRange",
  "propertyIdentifier": {"type": "property", "apiName": "createdAt"},
  "relativeStartTime": {"type": "relativePoint", "value": -7, "timeUnit": "DAY"},
  "relativeEndTime": {"type": "relativePoint", "value": 0, "timeUnit": "DAY"},
  "timeZoneId": "Etc/UTC"
}

분석된 텍스트의 interval 조건

interval은 분석기를 거친 텍스트에서 하위 규칙이 일치하는 구간을 찾습니다. 속성 선택과 필수 rule: IntervalQueryRule을 지정합니다. 규칙은 다음 다섯 형태를 재귀적으로 조합합니다.

rule.type필드와 필수 여부의미
allOf선택적 rules 목록, 선택적 integer maxGaps, 필수 boolean ordered모든 하위 규칙을 충족하는 구간
anyOf선택적 rules 목록하위 규칙 중 하나 이상을 충족하는 구간
match필수 string query, 선택적 integer maxGaps, 필수 boolean ordered입력 용어가 있는 구간
prefixOnLastToken필수 string query용어 순서를 유지하며 마지막 용어만 접두사 일치, 나머지는 정확히 일치
fuzzy필수 string term, 선택적 integer fuzziness허용 편집 거리 안에서 비슷한 용어 일치

rules의 항목은 IntervalQueryRule입니다. allOf.maxGaps는 하위 규칙이 만든 구간 사이의 간격을, match.maxGaps는 용어 사이의 간격을 제한합니다. 생략하면 간격을 고려하지 않습니다. 예를 들어 quick brown fox에서 quick과 fox 사이에는 한 용어의 간격이 있습니다. ordered: true이면 일치하는 구간이나 용어의 순서를 유지해야 합니다.

fuzziness는 0, 1, 2 중 하나이며 기본값은 2입니다. 편집 한 번은 문자 삽입, 삭제, 치환 또는 인접한 두 문자의 순서 교환입니다.

{
  "type": "interval",
  "propertyIdentifier": {"type": "property", "apiName": "description"},
  "rule": {"type": "match", "query": "quick fox", "maxGaps": 1, "ordered": true}
}

공간 조건

나머지 여덟 조건인 withinDistanceOf, withinBoundingBox, intersectsBoundingBox, doesNotIntersectBoundingBox, withinPolygon, intersectsPolygon, doesNotIntersectPolygon, geoShapeV2는 공간 필터의 좌표와 도형 계약을 사용합니다.