Cloud Search 검색어 해석 은 사용자의 검색어에 있는 연산자와 필터를 구조화된 연산자 기반 검색어로 자동 변환합니다. 이 기능은 스키마에 정의된 연산자와 색인이 생성된 문서를 사용하여 검색어 의도를 추론합니다. 이를 통해 사용자는 최소한의 키워드로 검색하고 정확한 결과를 얻을 수 있습니다.
결과 표시는 신뢰 수준 에 따라 다릅니다. 검색어 문자열이 특정 스키마 필드에 일관되게 표시되면 (예: actors 필드에 'Tom Hanks') 신뢰도가 높아집니다. 문자열이 일반적인 산문 내에 표시되면 신뢰도가 낮아집니다. 신뢰도가 높으면 해석된 결과만 표시되고 신뢰도가 낮으면 표준 키워드 결과와 혼합됩니다.
검색어 해석의 예시
영화 정보가 포함된 데이터베이스를 예로 들어보겠습니다. 그림 1은 샘플 검색어와 해석을 보여줍니다.
이 예에서 검색어 해석은 다음과 같습니다.
- 스키마에서 최상위 객체가
objecttype:movies임을 확인합니다. - 문서를 검사하여 'action'이 발생하는 위치를 식별합니다. '
genre' 필드에 주로 표시되면 해당 필드의 속성 값일 가능성이 높아집니다.
해석 결과는
actor:"tom hanks" genre:action objecttype:movies입니다.
검색어 해석은 모든 사용자에게 자동으로 적용되지만 다음 섹션에 설명된 대로 스키마를 구조화하여 최적화할 수 있습니다.
검색어 해석을 위한 스키마 구조화
스키마를 최적화하면 검색어 해석의 이점을 누릴 수 있습니다.
표시 이름 해석 사용 설정
검색어 해석은 objectDefinitions 및 propertyDefinitions를 사용하여 검색어를 해석합니다. 속성의 경우
displayLabel
, 객체의 경우
objectDisplayLabel, 연산자의 경우 operatorName를 사용하여 직관적인 표시 이름을 만듭니다.
다음 예에서는 영화 객체의 직관적인 표시 이름을 보여줍니다.
{
"objectDefinitions": [{
"name": "movie",
"options": {
"displayOptions": { "objectDisplayLabel": "Films" }
},
"propertyDefinitions": [{
"name": "genre",
"isReturnable": true,
"textPropertyOptions": {
"operatorOptions": { "operatorName": "genre" }
},
"displayOptions": { "displayLabel": "Category" }
}]
}]
}
이러한 표시 이름을 사용하면 다음과 같은 해석이 가능합니다.
- '액션 영화' ->
genre:action object:movies - '장르가 액션 또는 스릴러인 영화' ->
objecttype:movies genre:(action OR thriller) - '코미디 카테고리 영화' ->
genre:comedy objecttype:movies
날짜, 숫자, 정렬 해석 사용 설정
모든 날짜 및 숫자 속성에 대해
IntegerOperatorOptions
에서 lessThanOperatorName 및 greaterThanOperatorName을 정의합니다. 정렬을 사용 설정하려면 isSortable을 설정합니다.
다음 예에서는 이러한 옵션을 사용 설정합니다.
{
"objectDefinitions": [{
"propertyDefinitions": [
{
"name": "runtime",
"isSortable": true,
"integerPropertyOptions": {
"operatorOptions": {
"operatorName": "runtime",
"lessThanOperatorName": "runtimelessthan",
"greaterThanOperatorName": "runtimegreaterthan"
}
}
},
{
"name": "releasedate",
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "releasedate",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}]
}
이러한 설정을 사용하면 다음과 같은 해석이 가능합니다.
- '올해 개봉한 영화' ->
objecttype:movies releasedafter:2019-1-1 releasedbefore:2019-12-31 - '상영 시간이 90분 미만인 영화' ->
objecttype:movies runtimelessthan:90
예약된 연산자 해석 사용 설정
type, before, after, objecttype과 같은 기본 제공 연산자를 사용합니다.
before및after를 사용하려면ItemMetadata에서updateTime을 채웁니다.- 자동 감지를 위해
ItemMetadata에서mimeType을 채웁니다. 예를 들어 '액션 동영상'은 동영상 MIME 유형이 있는 문서를 나열합니다.
검색어 해석 제한사항
- 다음 데이터 소스 ACL에만 적용됩니다.
- 도메인 공개
- 데이터 소스 공개
- 대부분의 문서가 동일한 상속된 ACL을 공유합니다.
- 공유된 연산자 이름 (예:
priority및severity모두 0~3 사용)은 신뢰도를 낮춥니다. - 기본적으로 해석은
exactMatchWithOperator를 사용하지 않는 한 필드 값에 소문자를 사용합니다. source연산자는 지원되지 않습니다.- 결합된 연산자와 자유 텍스트 용어 (예: 'p0 cases severity:s0')는 해석되지 않습니다.
- 결과는 항상 관련성 순위가 적용된 결과와 혼합됩니다.