Google Cloud Search 스키마는 데이터 색인 생성 및 쿼리를 위한 객체, 속성, 옵션을 정의하는 JSON 구조입니다. 콘텐츠 커넥터는 등록된 스키마를 사용하여 저장소 데이터를 구조화하고 색인을 생성합니다.
JSON 스키마 객체를 API에 제공하여 스키마를 만듭니다. 데이터의 색인을 생성하기 전에 각 저장소의 스키마를 등록해야 합니다.
이 문서에서는 스키마 생성의 기본사항을 다룹니다. 검색 환경을 최적화하려면 검색 품질 개선을 참고하세요.
스키마 만들기
다음 단계에 따라 Cloud Search 스키마를 만드세요.
예상되는 사용자 동작 식별
사용자가 검색하는 방식을 예상하면 스키마 전략을 정의하는 데 도움이 됩니다. 영화 데이터베이스의 경우 사용자가 '로버트 레드포드가 출연한 영화'를 검색할 수 있습니다. 스키마는 특정 배우가 출연하는 영화에 대한 쿼리를 지원해야 합니다.
스키마를 사용자 행동에 맞추려면 다음 단계를 따르세요.
- 다양한 사용자의 다양한 쿼리 평가
- 논리적 데이터 세트 또는 객체(예: '영화')를 식별합니다.
- 제목이나 출시일과 같은 속성 (특성)을 식별합니다.
- '레이더스'와 같은 속성의 유효한 값을 식별합니다.
- 시간순 또는 시청자 평가와 같은 정렬 및 순위 지정 요구사항을 파악합니다.
- 자동 완성 추천을 개선하기 위해 직무와 같은 컨텍스트 속성을 식별합니다.
- 이러한 객체, 속성, 예시 값을 나열합니다. 이 목록을 사용하여 연산자 옵션을 정의합니다.
데이터 소스 초기화
데이터 소스는 Google Cloud에 저장된 색인이 생성된 저장소 데이터를 나타냅니다. 서드 파티 데이터 소스 관리를 참고하세요. 사용자가 검색 결과를 클릭하면 Cloud Search는 색인 생성 요청의 URL을 사용하여 항목으로 안내합니다.
객체 정의
객체는 스키마의 기본 단위입니다. '영화' 또는 '사람'과 같은 논리적 구조는 객체입니다. 각 객체에는 제목, 재생 시간, 이름과 같은 속성이 있습니다.

스키마는 objectDefinitions 태그의 객체 정의 목록입니다.
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
movie와 같은 각 객체에 고유한 이름을 사용합니다. 스키마 서비스는 이러한 이름을 키로 사용합니다. ObjectDefinition을 참고하세요.
객체 속성 정의
propertyDefinitions 섹션에서 제목 및 개봉일과 같은 속성을 정의합니다. freshnessOptions(순위) 및 displayOptions(UI 라벨)에는 options을 사용합니다.
{
"objectDefinitions": [{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": { "operatorName": "title" }
},
"displayOptions": { "displayLabel": "Title" }
},
{
"name": "releaseDate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
}
}
]
}]
}
PropertyDefinition에는 다음이 포함됩니다.
name문자열입니다.- 유형에 구애받지 않는 옵션 (예:
isReturnable) - 유형 및 유형 관련 옵션 (예:
textPropertyOptions) operatorOptions검색 연산자- UI 라벨의 경우
displayOptions
여러 객체에서 속성 이름을 재사용할 수 있습니다. 예를 들어 movieTitle는 movie 객체와 person 객체의 필모그래피에 모두 표시될 수 있습니다.
유형에 구애받지 않는 옵션 추가
PropertyDefinition에는 유형에 관계없이 속성의 검색 기능을 구성하는 불리언 옵션이 포함됩니다. 이러한 옵션은 기본적으로 false로 설정되며 사용하려면 true로 설정해야 합니다.
isReturnable: 속성 데이터를 Query API를 사용하여 검색 결과에 반환해야 하는 경우true로 설정됩니다. 반환이 불가능한 속성은 결과에 표시되지 않고 검색하거나 순위를 매기는 데 사용될 수 있습니다.isRepeatable: 속성에 여러 값이 있을 수 있는 경우true로 설정합니다. 예를 들어 영화의 개봉일은 하나이지만 배우는 여러 명입니다.isSortable: 속성을 정렬에 사용할 수 있는 경우true로 설정합니다.isRepeatable이true이거나 속성이 반복 가능한 하위 객체 내에 있는 경우true일 수 없습니다.isFacetable: 속성을 패싯 (검색 결과를 세부적으로 조정하는 데 사용되는 속성)을 생성하는 데 사용할 수 있는 경우true로 설정합니다.isReturnable이true이어야 합니다.- 열거형, 불리언, 텍스트 속성에만 지원됩니다.
isWildcardSearchable: 사용자가 이 속성에 대해 와일드 카드 검색을 실행할 수 있도록true로 설정합니다. 이 옵션은 텍스트 속성에서만 사용할 수 있으며 동작은exactMatchWithOperator설정에 따라 달라집니다.exactMatchWithOperator이true인 경우: 텍스트 값이 단일 토큰으로 처리됩니다.science-*와 같은 쿼리는science-fiction값과 일치합니다.exactMatchWithOperator이false인 경우: 텍스트 값이 토큰화됩니다.sci*또는fi*과 같은 쿼리는science-fiction와 일치하지만science-*는 일치하지 않습니다.
유형 정의
적절한 속성 옵션 객체 (예:
textPropertyOptions)을 사용합니다. 가능한 값을 모두 알고 있다면 열거형 (enumPropertyOptions)을 사용하세요. 속성에는 데이터 유형이 하나만 있을 수 있습니다.
연산자 옵션 정의
operatorOptions 속성이 검색 연산자로 작동하는 방식 설명
모든 operatorOptions에는 operatorName이 필요합니다 (예: title)입니다. 이는 사용자가 검색어에 입력하는 매개변수입니다 (예: title:titanic)을 사용하고 사용자에게 노출합니다.
동일한 유형의 속성 간에 operatorName를 공유할 수 있습니다. 해당 이름을 사용하는 쿼리는 일치하는 모든 속성에서 결과를 검색합니다.
정렬 가능한 속성에는 비교 쿼리의 lessThanOperatorName 및 greaterThanOperatorName이 포함될 수 있습니다. 텍스트 속성은 exactMatchWithOperator를 사용하여 전체 값을 단일 토큰으로 처리할 수 있습니다.
표시 옵션 추가
선택사항인 displayOptions 섹션에는 displayLabel이 포함됩니다. 검색 결과에 표시되는 사용자 친화적인 라벨입니다.
추천 필터링 연산자 추가
suggestionFilteringOperators[]를 사용하여 자동 완성 추천을 필터링하는 속성을 정의합니다 (예: 사용자가 선호하는 장르별로 영화 추천 필터링). 추천 필터는 하나만 정의할 수 있습니다.
스키마 등록
데이터 소스 ID를 사용하여 스키마 서비스에 스키마를 등록합니다. UpdateSchema 요청을 실행합니다.
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
validateOnly: true를 사용하여 스키마를 등록하지 않고 테스트합니다.
데이터 색인 생성
등록 후 색인 호출을 사용하여 데이터 소스를 채웁니다(일반적으로 커넥터 사용).
색인 요청 예시:
{
"name": "datasource/<data_source_id>/items/titanic",
"metadata": {
"title": "Titanic",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [{
"name": "movieTitle",
"textValues": { "values": ["Titanic"] }
}]
}
},
"itemType": "CONTENT_ITEM"
}
스키마 테스트
프로덕션 전에 소규모 저장소로 테스트합니다. 결과를 테스트 사용자로 제한하는 ACL을 만듭니다.
- 일반 쿼리: 문자열 (예: 'titanic')을 입력하여 일치하는 모든 항목을 확인합니다.
- 연산자 쿼리: 연산자 (예:
actor:Zane)를 사용하여 결과를 제한합니다.
스키마 미세 조정
사용자 의견을 모니터링하고 스키마를 조정합니다. 새 필드를 색인하거나 연산자 이름을 더 직관적으로 바꿀 수 있습니다.
스키마 변경 후 색인 재생성
다음과 같은 변경사항에는 색인을 다시 생성할 필요가 없습니다.
- 연산자 이름
- 숫자 제한
- 순위가 지정된 순서입니다.
- 최신 상태 또는 표시 옵션
다음을 위해 색인을 다시 생성해야 합니다.
- 속성 또는 객체 추가 또는 삭제
isReturnable,isFacetable,isSortable를true로 변경- 속성을
isSuggestable로 표시합니다.
허용되지 않는 속성 변경
색인을 손상시키거나 일관성 없는 결과를 초래하는 변경사항은 허용되지 않습니다. 예를 들면 다음과 같습니다.
- 속성 데이터 유형 또는 이름입니다.
exactMatchWithOperator또는retrievalImportance설정
복잡한 스키마 변경 수행
허용되지 않는 변경사항을 적용하려면 이전 정의에서 새 정의로 속성을 이전하세요.
- 이름이 다른 새 속성을 스키마에 추가합니다.
- 새 속성과 이전 속성을 모두 사용하여 스키마를 등록합니다.
- 새 속성만 사용하여 색인을 백필합니다.
- 스키마에서 이전 속성을 삭제합니다.
- 새 속성 이름을 사용하도록 쿼리 코드를 업데이트합니다.
Cloud Search는 재사용 문제를 방지하기 위해 삭제된 항목을 30일 동안 기록합니다.
크기 제한사항
- 최상위 객체는 최대 10개입니다.
- 최대 깊이는 10개 수준입니다.
- 객체당 최대 1,000개의 필드 (중첩 필드 포함)