Функция интерпретации запросов Cloud Search автоматически преобразует операторы и фильтры в запросе пользователя в структурированный запрос на основе операторов. Для определения цели запроса используются операторы, определенные в схеме и индексированных документах. Это позволяет пользователям искать с минимальным количеством ключевых слов и получать точные результаты.
Представление результатов зависит от уровня достоверности . Достоверность повышается, когда поисковые запросы последовательно встречаются в определенных полях схемы (например, "Том Хэнкс" в поле " actors "). Достоверность снижается, когда строки встречаются в общем тексте. Высокий уровень достоверности отображает только интерпретированные результаты, тогда как низкий уровень достоверности смешивает их со стандартными результатами по ключевым словам.
Пример интерпретации запроса
Рассмотрим базу данных, содержащую информацию о фильмах. На рисунке 1 показан пример поискового запроса и его интерпретация.

В данном примере используется интерпретация запроса:
- Определяет по схеме, что объекты верхнего уровня имеют
objecttype:movies. - Сканирует документы для определения места, где происходит «действие». Если оно преимущественно встречается в
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
Включить интерпретацию даты, чисел и сортировки.
Определите значения lessThanOperatorName и greaterThanOperatorName в IntegerOperatorOptions для всех свойств, связанных с датами и числами. Чтобы включить сортировку, установите значение 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 :
- Укажите значение
updateTimeвItemMetadata, чтобы использовать егоbeforeиafter. - Укажите
mimeTypeвItemMetadataдля автоматического определения. Например, "action videos" отображает документы с MIME-типами, относящимися к видео.
Ограничения интерпретации запросов
- Работает только со следующими списками контроля доступа (ACL) для источников данных:
- Общедоступное доменное имя.
- Источник данных — общедоступный.
- Большинство документов имеют одинаковый унаследованный список контроля доступа (ACL).
- Использование общих имен операторов (например,
priorityиseverityиспользуются значения от 0 до 3) снижает достоверность. - По умолчанию при интерпретации значения полей используются в нижнем регистре, если только вы не используете
exactMatchWithOperator. - Оператор
sourceне поддерживается. - Сочетание операторов и терминов свободного текста (например, "p0 cases severity:s0") не интерпретируется.
- Результаты всегда объединяются с результатами, ранжированными по релевантности.