Cloud Search의 검색어 해석은 사용자의 검색어에 있는 연산자와 필터를 자동으로 해석하여 이러한 요소를 구조화된 연산자 기반 검색어로 변환하는 기능입니다. 검색어 해석에서는 스키마에 정의된 연산자와 색인 생성된 문서를 함께 사용하여 사용자 검색어의 의미를 추론합니다. 사용자는 이 기능을 통해 최소한의 키워드로 검색하면서 정확한 결과를 얻을 수 있습니다.
사용자에게 실제로 제시되는 결과는 검색어 해석의 신뢰도에 좌우됩니다. 신뢰도는 색인 생성된 문서에서 검색어 문자열이 어디에 나오는지 등의 여러 가지 요소에 기초합니다. 문자열,
배우 '톰 행크스'의 이름으로 지속적으로
actors
라는 스키마 필드를 사용하면 신뢰도가 높아집니다. 같은 문자열('Tom Hanks')이 스키마 필드가 아닌 단락 내에 등장한다면 신뢰도가 떨어질 수 있습니다. 신뢰도가 높은 경우 검색어 해석의 결과만 사용자에게 표시됩니다. 신뢰도가 낮은 경우 검색어 해석의 결과가 일반 키워드 검색결과와 혼합됩니다.
검색어 해석의 예
데이터 소스의 예로서 영화 관련 정보를 수록한 데이터베이스가 있다고 가정해 보겠습니다. 그림 1에서는 샘플 검색어와 해석 결과를 보여줍니다.
![검색어 해석 개요](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/query-interpretation.png?authuser=5&hl=ko)
이 예에서 검색어 해석은 다음을 수행합니다.
스키마를 파싱하여 데이터 소스에 있는 최상위 객체가 있는지 확인
objecttype:movies
로 분류됩니다. 검색어 해석에서는 이제 검색어 중 'movies'가 객체 유형임을 알게 되었습니다.스키마와 연계하여 데이터 소스의 문서를 검색하고 문자열 'action'이 나오는 위치를 판단합니다. 문자열이 특정 'genre' 데이터 소스 필드에 주로 등장한다면 검색어 해석에서는 'action'이 스키마에 정의된 'genre' 속성의 속성 값이라고 확신합니다. 문자열이 콘텐츠의 단락 맥락에서 주로 등장한다면 검색어 해석의 신뢰도 수준은 하락합니다.
검색어 해석 결과는 다음과 같습니다.
actor:“tom hanks” genre:action objecttype:movies
검색어 해석은 별도의 작업 없이 모든 Cloud Search 고객에게 자동으로 사용 설정됩니다. 그러나 검색어 해석을 최적화하려면 이 문서의 안내에 따라 스키마를 구조화해야 합니다.
검색어 해석을 지원하도록 스키마 구조화
검색어 해석의 이점을 누릴 수 있도록 스키마를 구조화해야 합니다.
표시 이름 해석 사용 설정
Cloud Search의 검색어 해석에서는
objectDefinitions
및
propertyDefinitions
사용자의 검색어를 해석하고
있습니다. 이러한 스키마 요소의 이점을 극대화하려면
직관적인 표시 이름을 사용하여
displayLabel
드림
속성 이름의 경우
objectDisplayLabel
연산자의 경우 operatorName
입니다.
다음 스키마는 movie 객체의 직관적인 표시 이름을 보여줍니다.
{
"objectDefinitions": [
{
"name": "movie",
"options": {
"displayOptions": {
"objectDisplayLabel": "Films"
}
...
},
"propertyDefinitions": [
{
"name": "genre",
"isReturnable": true,
"isRepeatable": true,
"isFacetable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "genre"
}
},
"displayOptions": {
"displayLabel": "Category"
}
},
...
]
}
]
}
위 예시에 대한 설명은 다음과 같습니다.
movie 객체 정의에 'Film'
objectDisplayLabel
이 있습니다.genre propertyDefinition에는 'genre'
operatorName
와 'Category'가 있습니다.displayLabel
입니다.
Cloud Search는 이러한 표시 이름을 통해 다음과 같은 검색어 해석을 수행합니다.
- '액션 영화', '장르 액션 유형 영화', '영화 장르 액션'은
genre:action object:movies
로 해석됩니다. - '장르 액션 또는 스릴러가 포함된 영화'는
objecttype:movies genre:(action OR thriller)
- '액션 영화' 또는 '액션 영화'는
genre:action objecttype:movies
- '코미디 카테고리 영화'는
genre:comedy objecttype:movies
로 해석됩니다.
날짜, 숫자, 정렬 해석 사용 설정
lessThanOperatorName
및 greaterThanOperatorName
를 정의해야 합니다.
지정된
IntegerOperatorOptions
: 모든 날짜 및
숫자 속성입니다. 이러한 설정을 통해 날짜 및 숫자를 자동으로 해석할 수 있습니다. 또한 정렬 해석을 사용 설정하려면
날짜 및 숫자 속성의 isSortable
옵션을 설정합니다. 다음 스키마는 이러한 옵션을 사용 설정하는 방법을 보여줍니다.
{
"objectDefinitions": [
{
"options": {
"displayOptions": {
"objectDisplayLabel": "Films"
}
},
"propertyDefinitions": [
{
"name": "runtime",
"isReturnable": true,
"isSortable": true,
"integerPropertyOptions": {
"orderedRanking": "DESCENDING",
"minimumValue": {
"value": 10
},
"maximumValue": {
"value": 500
},
"operatorOptions": {
"operatorName": "runtime",
"lessThanOperatorName": "runtimelessthan",
"greaterThanOperatorName": "runtimegreaterthan"
}
},
"displayOptions": {
"displayLabel": "Length"
}
},
{
"name": "releasedate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "releasedate",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}
]
}
위 예시에 대한 설명은 다음과 같습니다.
- 숫자 속성
runtime
는 영화의 길이를 나타냅니다. 이 이 속성에는runtimelessthan
및runtimegreaterthan
가 설정되어 있습니다. - 날짜 속성
releaseDate
은 있습니다. 이 속성에는releasedbefore
및releasedafter
가 설정되어 있습니다.
Cloud Search는 이러한 설정을 통해 다음과 같은 검색어 해석을 수행합니다.
- 지금이 2019년이라고 가정하면 '올해 출시된 영화'는
objecttype: movies releasedafter:2019-1-1 releasedbefore:2019-12-31
- 지금이 3월 셋째 주라고 가정할 때 '지난주 개봉한 영화'는
다음으로 해석됨:
objecttype: movies releasedafter:2019-3-10 releasedbefore:2019-3-16
- 'movies withruntime less than 90'은
objjecttype: movies runtimelessthan:90
로 해석됩니다. - 지금이 2019년이라고 가정할 때, "올해 개봉 영화와 총 재생 시간이
120”은
releasedafter:2019-1-1 releasedbefore:2019-12-31 objecttype:movies runtimegreaterthan:120
로 해석됩니다. - 'sort movies by release date'는 'objecttype: movies'로 필터링하고 결과를 개봉일에 따라 기본 정렬 순서인 오름차순으로 정렬하여 제시합니다.
예약된 연산자 해석 사용 설정
예약된 내장 함수 type
, before
, after
, objecttype
를 사용할 수도 있습니다.
연산자를 사용하여 검색어 해석을 향상할 수 있습니다. 문서를 색인 생성할 때 다음을 수행하세요.
updateTime
필드를 채웁니다.ItemMetadata
before
및after
연산자를 사용합니다. Cloud Search는 이러한 설정을 통해 다음과 같은 검색어 해석을 수행합니다.- 'movies from last week'는 색인에서 지난 주에 업데이트된 모든 영화를 나열합니다.
- 'movies before jan 2019'는 2019년 1월 이전에 색인 생성된 모든 영화를 나열합니다.
ItemMetadata
의mimeType
필드를 채워 다음 항목 자동 감지를 사용합니다. 있습니다. '액션 동영상'이라는 검색어는 마임이 포함된 모든 액션 영화 문서를 나열합니다.application/mp4
,application/mpeg4
,application/x-shockwave-flash
video/
,application/vnd.google-apps.video
검색어 해석 제한사항
검색어 해석 기능에는 다음과 같은 제한사항이 있습니다.
- 검색어 해석은 다음 데이터 소스 ACL에서만 작동합니다.
<ph type="x-smartling-placeholder">
- </ph>
- 모든 문서가 도메인 공용임(도메인의 모든 사용자가 액세스 가능)
- 모든 문서가 데이터 소스 공용임(데이터 소스 ACL에 액세스 가능한 모든 사용자)
- 데이터 소스의 문서 중 대부분이 동일한 ACL을 가지며(모든 문서가 같은 컨테이너 항목의 ACL을 상속함) 추가적인 리더가 정의되지 않음
- 값이 동일한 여러 스키마 연산자가 있으면 검색어에서 해당 값의 연산자 인텐트 해석은 검색어 해석 시스템이 반환하는 전체적인 신뢰도 요소에 좌우됩니다. 예를 들어
연산자 이름이 동일한
priority
및severity
속성이 있음 정의할 수 있습니다 두 연산자가 0, 1, 2 또는 3 값을 가질 수 있다고 가정해 보겠습니다. 이 예에서 '0' 는priority
또는severity
이러한 값에 모호성이 있으므로 신뢰도 수준이 하락합니다. - 기본적으로 Cloud Search의 검색어 해석은 필드의 대/소문자를 소문자로 표현합니다.
사용할 수 있습니다. 단,
exactMatchWithOperator
옵션 source
연산자는 쿼리에서 지원되지 않습니다.- 연산자 기반 용어와 자유 텍스트 용어를 조합한 검색어는 해석되지 않습니다. 예를 들어 'p0 priority cases'는 자유 텍스트 용어이고 'severity:s0'은 연산자 기반 용어이므로 'p0 priority cases severity:s0'은 지원되지 않습니다.
- 검색어 해석 전략에서는 항상 해석된 결과와 일반 결과(해석 없이 관련성 순위를 적용한 결과)가 혼합되며 결과 페이지 전체를 대체하지는 않습니다.