API запросов предоставляет методы поиска и подсказок для создания интерфейса поиска или встраивания результатов в приложение.
Для веб-приложений с минимальными требованиями рекомендуется использовать виджет поиска. См. раздел «Создание интерфейса поиска с помощью виджета поиска» .
Создайте интерфейс поиска.
Для создания минимального интерфейса поиска необходимо выполнить несколько шагов:
- Настройте приложение для поиска.
- Сгенерируйте учетные данные OAuth для приложения.
- Запрос к индексу.
- Отобразить результаты запроса.
Вы можете расширить интерфейс с помощью таких функций, как постраничная навигация, сортировка, фильтрация, фасетный поиск и автозаполнение.
Настройте приложение для поиска.
Для каждого поискового интерфейса необходимо создать как минимум одно поисковое приложение . Поисковое приложение предоставляет параметры по умолчанию, такие как источники данных, порядок сортировки, фильтры и фасеты. Эти параметры можно переопределить с помощью API запросов.
Вы не можете увеличить количество источников данных, используемых в запросе, сверх тех, которые настроены в поисковом приложении. Вы можете ограничить запрос подмножеством этих источников с помощью dataSourceRestrictions .
Для получения более подробной информации см. раздел «Настройка поиска» .
Сгенерируйте учетные данные OAuth для приложения.
В дополнение к шагам, описанным в разделе «Настройка доступа к API Cloud Search» , необходимо сгенерировать учетные данные OAuth для вашего веб-приложения.
Используйте учетные данные для запроса авторизации от имени пользователя. Используйте область действия https://www.googleapis.com/auth/cloud_search.query .
Более подробную информацию о параметрах OAuth см. на сайте Google Identity Platform .
Запрос к индексу
Используйте метод search для поиска по индексу.
Каждый запрос должен содержать текстовый query и идентификатор searchApplicationId .
В этом примере выполняется запрос к источнику данных о фильмах:
{
"query": "titanic",
"requestOptions": {
"searchApplicationId": "searchapplications/<search_app_id>"
}
}
Отобразить результаты запроса
В интерфейсе поиска должно отображаться title элемента и ссылка на исходный элемент. Для улучшения отображения также можно использовать фрагменты текста и метаданные.
Обработка дополнительных результатов
Cloud Search возвращает дополнительные результаты, если для запроса недостаточно совпадений. Это указывает поле queryInterpretation . Если возвращаются только дополнительные результаты, InterpretationType имеет значение REPLACE . Если они смешаны, значение равно BLEND .
При отображении дополнительных результатов рекомендуется информировать пользователя. Например, для оператора REPLACE можно написать: «Ваш поиск не дал результатов. Показаны результаты для похожих запросов».
Управление результатами работы с людьми.
Облачный поиск возвращает документы, содержащие информацию о людях и сотрудниках, используя функцию поиска по людям. Результаты отображаются в structuredResults поле «Результаты»:
{
"results": [...],
"structuredResults": [{
"person": {...}
}]
}
Подбор непосредственных подчиненных
Функция Direct Reports Matching позволяет пользователям видеть непосредственных подчиненных человека. В ответе содержится объект assistCardProtoHolder с cardType RELATED_PEOPLE_ANSWER_CARD .
Отключить оптимизацию
Оптимизация, например, отображение дополнительных результатов, включена по умолчанию. Вы можете отключить её:
- Поиск на уровне приложения : установите
force_verbatim_modeвtrue. - Уровень запроса : Установите
enableVerbatimModeвtrue.
Выделить фрагменты
Облачный поиск возвращает фрагмент проиндексированного текста или HTML. Если присутствуют поисковые термины, matchRanges определяет их местоположение. Используйте эти диапазоны для выделения текста.
function highlightSnippet(snippet) {
let text = snippet.snippet;
let formattedText = text;
if (snippet.matchRanges) {
let parts = [];
let index = 0;
for (let match of snippet.matchRanges) {
let start = match.start || 0; // Default to 0 if omitted
let end = match.end;
if (index < start) { // Include any leading text before/between ranges
parts.push(text.slice(index, start));
}
parts.push('<span class="highlight">');
parts.push(text.slice(start, end));
parts.push('</span>');
index = end;
}
parts.push(text.slice(index)); // Include any trailing text after last range
formattedText = parts.join('');
}
return formattedText;
}
Исходя из приведенного фрагмента:
{
"snippet": "This is an example snippet...",
"matchRanges": [
{
"start": 11,
"end": 18
}
]
}
В результате получилась следующая HTML-строка:
This is an <span class="highlight">example</span> snippet...
Отображение метаданных
Используйте поле metadata для отображения такой информации, как createTime , updateTime ) и структурированные данные. Используйте displayOptions для отображения структурированных данных.
Получить дополнительные результаты
Чтобы получить больше результатов, установите поле start на выбранное смещение. Отрегулируйте размер страницы с помощью pageSize . Используйте resultCount для отображения общего количества элементов или приблизительного количества.
Сортировать результаты
Используйте sortOptions для указания порядка сортировки:
-
operatorName: свойство, по которому выполняется сортировка. -
sortOrder:ASCENDINGorDESCENDING.
Релевантность является ключом сортировки по умолчанию и дополнительным ключом.
Добавить фильтры
Ограничьте результаты поиска с помощью фильтров в приложении поиска или запросе. Если оба запроса указывают фильтры для источника, оба должны оцениваться как истинные.
Примените фильтры в dataSourceRestrictions.filterOptions[] . Основные типы фильтров:
- Объектные фильтры : ограничивают поиск определенным типом объектов.
- Фильтры по значениям : ограничивают поиск по оператору и значению.
Составные фильтры объединяют несколько фильтров значений.
Уточните результаты с помощью фасетов.
Фасеты помогают пользователям интерактивно уточнять запросы. При запросе фасетов Cloud Search вычисляет наиболее часто встречающиеся значения для этих свойств.
Типичная схема: 1. Запрос с указанием свойств фасетов. 1. Отображение результатов поиска и фасетирования. 1. Пользователь выбирает значения фасетов. 1. Повторение запроса с фильтром на основе выбранных значений.
Результаты фасетного поиска с использованием целочисленных полей
Пометьте целочисленное свойство как параметр для фасетной фильтрации, чтобы уточнить результаты по диапазонам (например, "100-200" страниц). Установите isFacetable в true и определите параметры группировки по умолчанию в схеме.
Поиск результатов по размеру документа или дате.
Используйте зарезервированные операторы :
-
itemsize: размер файла в байтах. -
createddatetimestamp: дата создания. -
lastmodified: дата изменения.
Добавить предложения
Используйте API подсказок для автозаполнения на основе истории запросов, контактов и содержимого документа.