Схема Google Cloud Search — это структура JSON, определяющая объекты, свойства и параметры для индексирования и запроса данных. Ваш коннектор контента использует зарегистрированную схему для структурирования и индексирования данных репозитория.
Схема создается путем предоставления объекта JSON-схемы в API. Перед индексированием данных необходимо зарегистрировать схему для каждого репозитория.
В этом документе рассматриваются основы создания схемы. Для оптимизации поиска см. раздел «Улучшение качества поиска» .
Создайте схему
Выполните следующие шаги, чтобы создать схему Cloud Search:
- Определите ожидаемое поведение пользователей.
- Инициализация источника данных
- Определите ваши объекты
- Определите свойства объекта
- Зарегистрируйте свою схему
- Проиндексируйте свои данные
- Проверьте свою схему
- Настройте свою схему
Определите ожидаемое поведение пользователей.
Предвидение того, как пользователи осуществляют поиск, помогает определить стратегию построения схемы. Например, в базе данных фильмов пользователи могут искать «фильмы с Робертом Редфордом в главной роли». Ваша схема должна поддерживать запросы на фильмы с конкретным актером.
Чтобы привести вашу схему в соответствие с поведением пользователей:
- Оценивайте разнообразные запросы от разных пользователей.
- Определите логические наборы данных или объекты , например, «фильм».
- Укажите свойства (атрибуты), такие как название или дата выпуска.
- Определите допустимые значения для таких свойств, как «Индиана Джонс и искатели утраченного ковчега».
- Определите потребности в сортировке и ранжировании, например, в хронологическом порядке или по рейтингу аудитории.
- Для улучшения подсказок автозаполнения необходимо учитывать такие контекстные свойства, как должность.
- Перечислите эти объекты, свойства и примеры значений. Используйте этот список для определения параметров оператора .
Инициализируйте источник данных.
Источник данных представляет собой проиндексированные данные репозитория, хранящиеся в Google Cloud. См. раздел «Управление сторонними источниками данных» . Когда пользователь щелкает по результату, Cloud Search перенаправляет его к элементу, используя URL-адрес из запроса на индексацию.
Определите ваши объекты
Объект — это фундаментальная единица схемы. Логические структуры, такие как «фильм» или «человек», являются объектами. Каждый объект имеет такие свойства , как название, продолжительность или имя.

Схема представляет собой список определений объектов в теге objectDefinitions .
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
Используйте уникальные имена для каждого объекта, например, movie . Служба схемы использует эти имена в качестве ключей. См. ObjectDefinition .
Определите свойства объекта
Определите свойства, такие как заголовок и дата выпуска, в разделе propertyDefinitions . Используйте options freshnessOptions (рейтинг) и displayOptions (метки пользовательского интерфейса).
{
"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для поисковых операторов. -
displayOptionsдля меток пользовательского интерфейса.
Вы можете повторно использовать имена свойств в разных объектах. Например, movieTitle может встречаться как в фильмографии объекта movie , так и в фильмографии объекта person .
Добавить параметры, не зависящие от типа
В PropertyDefinition есть логические параметры для настройки функциональности поиска по объекту недвижимости, независимо от его типа. По умолчанию эти параметры имеют значение false и должны быть установлены в true для использования.
-
isReturnable: Установите значениеtrue, если данные свойства должны возвращаться в результатах поиска при использовании Query API. Невозвращаемые свойства можно использовать для поиска или ранжирования без отображения в результатах. -
isRepeatable: Установитеtrueесли свойство может принимать несколько значений. Например, у фильма одна дата выхода, но несколько актеров. -
isSortable: Установите значениеtrue, если свойство можно использовать для сортировки. Не может бытьtrueеслиisRepeatableравноtrueили если свойство находится внутри повторяющегося подобъекта. -
isFacetable: Установите значениеtrueесли свойство может использоваться для генерации фасетов (атрибутов, используемых для уточнения результатов поиска).- Для корректной работы требуется, чтобы
isReturnableбылоtrue. - Поддерживается только для свойств типа перечисление (enum), логическое значение (boolean) и текстовое значение (text).
- Для корректной работы требуется, чтобы
-
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[] , чтобы определить свойство, которое фильтрует подсказки автозаполнения (например, фильтрует подсказки фильмов по предпочтительному жанру пользователя). Вы можете определить только один фильтр подсказок.
Зарегистрируйте свою схему
Зарегистрируйте свою схему в службе схем, используя идентификатор источника данных. Отправьте запрос UpdateSchema :
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Используйте validateOnly: true чтобы протестировать вашу схему без ее регистрации.
Проиндексируйте свои данные
После регистрации заполните источник данных, используя вызовы Index , как правило, с помощью коннектора .
Пример запроса на индексирование:
{
"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.
Внесите сложные изменения в схему.
Чтобы внести недопустимые изменения, перенесите свойства из старого определения в новое:
- Добавьте в схему новое свойство с другим именем.
- Зарегистрируйте схему, включив в нее как новые, так и старые свойства.
- Заполните индекс, используя только новое свойство.
- Удалите старое свойство из схемы.
- Обновите код запроса, чтобы использовать новое имя свойства.
Облачный поиск хранит удаленные элементы в течение 30 дней, чтобы предотвратить проблемы с их повторным использованием.
Ограничения по размеру
- Максимум 10 объектов верхнего уровня.
- Максимальная глубина — 10 уровней.
- Максимальное количество полей на объект — 1000 (включая вложенные поля).
Следующие шаги
- Создайте интерфейс поиска .
- Улучшить качество поиска .
- Создайте схему для оптимальной интерпретации запросов .
- Дайте определение синонимам .
Схема Google Cloud Search — это структура JSON, определяющая объекты, свойства и параметры для индексирования и запроса данных. Ваш коннектор контента использует зарегистрированную схему для структурирования и индексирования данных репозитория.
Схема создается путем предоставления объекта JSON-схемы в API. Перед индексированием данных необходимо зарегистрировать схему для каждого репозитория.
В этом документе рассматриваются основы создания схемы. Для оптимизации поиска см. раздел «Улучшение качества поиска» .
Создайте схему
Выполните следующие шаги, чтобы создать схему Cloud Search:
- Определите ожидаемое поведение пользователей.
- Инициализация источника данных
- Определите ваши объекты
- Определите свойства объекта
- Зарегистрируйте свою схему
- Проиндексируйте свои данные
- Проверьте свою схему
- Настройте свою схему
Определите ожидаемое поведение пользователей.
Предвидение того, как пользователи осуществляют поиск, помогает определить стратегию построения схемы. Например, в базе данных фильмов пользователи могут искать «фильмы с Робертом Редфордом в главной роли». Ваша схема должна поддерживать запросы на фильмы с конкретным актером.
Чтобы привести вашу схему в соответствие с поведением пользователей:
- Оценивайте разнообразные запросы от разных пользователей.
- Определите логические наборы данных или объекты , например, «фильм».
- Укажите свойства (атрибуты), такие как название или дата выпуска.
- Определите допустимые значения для таких свойств, как «Индиана Джонс и искатели утраченного ковчега».
- Определите потребности в сортировке и ранжировании, например, в хронологическом порядке или по рейтингу аудитории.
- Для улучшения подсказок автозаполнения необходимо учитывать такие контекстные свойства, как должность.
- Перечислите эти объекты, свойства и примеры значений. Используйте этот список для определения параметров оператора .
Инициализируйте источник данных.
Источник данных представляет собой проиндексированные данные репозитория, хранящиеся в Google Cloud. См. раздел «Управление сторонними источниками данных» . Когда пользователь щелкает по результату, Cloud Search перенаправляет его к элементу, используя URL-адрес из запроса на индексацию.
Определите ваши объекты
Объект — это фундаментальная единица схемы. Логические структуры, такие как «фильм» или «человек», являются объектами. Каждый объект обладает такими свойствами , как название, продолжительность или имя.

Схема представляет собой список определений объектов в теге objectDefinitions .
{
"objectDefinitions": [
{ "name": "movie" },
{ "name": "person" }
]
}
Используйте уникальные имена для каждого объекта, например, movie . Служба схемы использует эти имена в качестве ключей. См. ObjectDefinition .
Определите свойства объекта
Определите свойства, такие как заголовок и дата выпуска, в разделе propertyDefinitions . Используйте options freshnessOptions (рейтинг) и displayOptions (метки пользовательского интерфейса).
{
"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для поисковых операторов. -
displayOptionsдля меток пользовательского интерфейса.
Вы можете повторно использовать имена свойств в разных объектах. Например, movieTitle может встречаться как в фильмографии объекта movie , так и в фильмографии объекта person .
Добавить параметры, не зависящие от типа
В PropertyDefinition есть логические параметры для настройки функциональности поиска по объекту недвижимости, независимо от его типа. По умолчанию эти параметры имеют значение false и должны быть установлены в true для использования.
-
isReturnable: Установите значениеtrue, если данные свойства должны возвращаться в результатах поиска при использовании Query API. Невозвращаемые свойства можно использовать для поиска или ранжирования без отображения в результатах. -
isRepeatable: Установитеtrueесли свойство может принимать несколько значений. Например, у фильма одна дата выхода, но несколько актеров. -
isSortable: Установите значениеtrue, если свойство можно использовать для сортировки. Не может бытьtrueеслиisRepeatableравноtrueили если свойство находится внутри повторяющегося подобъекта. -
isFacetable: Установите значениеtrueесли свойство может использоваться для генерации фасетов (атрибутов, используемых для уточнения результатов поиска).- Для корректной работы требуется, чтобы
isReturnableбылоtrue. - Поддерживается только для свойств типа enum, boolean и text.
- Для корректной работы требуется, чтобы
-
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[] , чтобы определить свойство, которое фильтрует подсказки автозаполнения (например, фильтрует подсказки фильмов по предпочтительному жанру пользователя). Вы можете определить только один фильтр подсказок.
Зарегистрируйте свою схему
Зарегистрируйте свою схему в службе схем, используя идентификатор источника данных. Отправьте запрос UpdateSchema :
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Используйте validateOnly: true чтобы протестировать вашу схему без ее регистрации.
Проиндексируйте свои данные
После регистрации заполните источник данных, используя вызовы Index , как правило, с помощью коннектора .
Пример запроса на индексирование:
{
"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.
Внесите сложные изменения в схему.
Чтобы внести недопустимые изменения, перенесите свойства из старого определения в новое:
- Добавьте в схему новое свойство с другим именем.
- Зарегистрируйте схему, включив в нее как новые, так и старые свойства.
- Заполните индекс, используя только новое свойство.
- Удалите старое свойство из схемы.
- Обновите код запроса, чтобы использовать новое имя свойства.
Облачный поиск хранит удаленные элементы в течение 30 дней, чтобы предотвратить проблемы с их повторным использованием.
Ограничения по размеру
- Максимум 10 объектов верхнего уровня.
- Максимальная глубина — 10 уровней.
- Максимальное количество полей на объект — 1000 (включая вложенные поля).
Следующие шаги
- Создайте интерфейс поиска .
- Улучшить качество поиска .
- Создайте схему для оптимальной интерпретации запросов .
- Дайте определение синонимам .