Виджет поиска предоставляет настраиваемый интерфейс поиска для веб-приложений. Для его реализации требуется минимальное количество HTML и JavaScript, и он поддерживает такие распространенные функции, как фасетный поиск и пагинация. Вы также можете настроить интерфейс с помощью CSS и JavaScript.
Если вам нужна большая гибкость, используйте API запросов. См. раздел «Создание интерфейса поиска с помощью API запросов» .
Создайте интерфейс поиска.
Для создания интерфейса поиска необходимо выполнить следующие шаги:
- Настройте приложение для поиска.
- Сгенерируйте идентификатор клиента для приложения.
- Добавьте HTML-разметку для поля поиска и результатов.
- Загрузите виджет на страницу.
- Инициализируйте виджет.
Настройте приложение для поиска.
Для каждого поискового интерфейса требуется поисковое приложение, определенное в консоли администратора. Приложение предоставляет настройки запросов, такие как источники данных, фасеты и параметры качества поиска.
Для создания поискового приложения см. раздел «Создание пользовательского интерфейса поиска» .
Сгенерируйте идентификатор клиента для приложения.
В дополнение к шагам, описанным в разделе «Настройка доступа к API Cloud Search» , сгенерируйте идентификатор клиента для вашего веб-приложения.
При настройке проекта:
- Выберите тип веб-браузера .
- Укажите URI источника вашего приложения.
- Обратите внимание на идентификатор клиента. Для работы виджета секретный ключ клиента не требуется.
Для получения дополнительной информации см. OAuth 2.0 для клиентских веб-приложений .
Добавить HTML-разметку
Для работы виджета требуются следующие HTML-элементы:
- Элемент
inputдля поля поиска. - Элемент для привязки диалогового окна с подсказками.
- Элемент для отображения результатов поиска.
- (Необязательно) Элемент для управления фасетным отображением.
В этом фрагменте кода показаны элементы, идентифицированные по их атрибуту id :
Загрузите виджет
Включите загрузчик, используя тег <script> :
Предоставьте функцию обратного вызова onload . Когда загрузчик будет готов, вызовите gapi.load() для загрузки модуля API-клиента, входа в Google и модуля Cloud Search.
Инициализируйте виджет.
Инициализируйте клиентскую библиотеку с помощью gapi.client.init() или gapi.auth2.init() указав свой идентификатор клиента и область действия https://www.googleapis.com/auth/cloud_search.query . Используйте классы построителя для настройки и привязки виджета.
Пример инициализации:
Переменные конфигурации:
Настройте процесс входа в систему.
Виджет предлагает пользователям войти в систему, когда они начинают печатать. Для персонализации можно использовать функцию входа через Google для веб-сайтов .
Авторизуйте пользователей напрямую
Используйте функцию «Вход через Google» для отслеживания и управления состоянием авторизации. В этом примере используется GoogleAuth.signIn() при нажатии кнопки:
Автоматический вход пользователей
Предварительно авторизуйте приложение для пользователей вашей организации, чтобы упростить вход в систему. Это также полезно при использовании Cloud Identity Aware Proxy . См. раздел «Использование входа через Google с ИТ-приложениями» .
Настройте интерфейс
Вы можете изменить внешний вид виджета следующим образом:
- Переопределение стилей с помощью CSS.
- Декоративные элементы с помощью адаптера.
- Создание пользовательских элементов с помощью адаптера.
Переопределяйте стили с помощью CSS
Виджет включает в себя собственные CSS-стили. Для их переопределения используйте селекторы предков для повышения специфичности:
#suggestions_anchor .cloudsearch_suggestion_container {
font-size: 14px;
}
См. справочник поддерживаемых классов CSS .
Декоративные элементы с помощью адаптера
Создайте и зарегистрируйте адаптер для изменения элементов перед их рендерингом. В этом примере добавляется пользовательский CSS-класс:
Зарегистрируйте адаптер во время инициализации:
Создавайте пользовательские элементы с помощью адаптера.
Реализуйте createSuggestionElement , createFacetResultElement или createSearchResultElement для создания пользовательских компонентов интерфейса. В этом примере используются HTML-теги <template> :
Зарегистрируйте адаптер:
Пользовательские элементы фасетной фильтрации должны соответствовать следующим правилам:
- Прикрепите атрибут
cloudsearch_facet_bucket_clickableк кликабельным элементам. - Оберните каждый сегмент в контейнер
cloudsearch_facet_bucket_container. - Сохраните порядок ячеек в ответе.
Например, следующий фрагмент кода отображает фасеты с помощью ссылок вместо флажков.
Настройка поведения поиска
Переопределяйте настройки поискового приложения, перехватывая запросы с помощью адаптера. Реализуйте interceptSearchRequest для изменения запросов перед их выполнением. В этом примере запросы ограничиваются выбранным источником:
Зарегистрируйте адаптер:
Следующий HTML-код используется для отображения выпадающего списка для фильтрации по источникам:
Приведенный ниже код отслеживает изменения, устанавливает выбранный параметр и при необходимости повторно выполняет запрос.
Также можно перехватывать ответы поисковых запросов, реализовав интерфейс interceptSearchResponse в адаптере.
Версии для закрепления
- Версия API : Установите значение в
cloudsearch.config/apiVersionперед инициализацией. - Версия виджета : Используйте
gapi.config.update('cloudsearch.config/clientVersion', 1.1).
Оба параметра по умолчанию равны 1,0, если не заданы.
Например, чтобы закрепить виджет за версией 1.1:
Защитите интерфейс поиска
Применяйте лучшие практики обеспечения безопасности веб-приложений, особенно для предотвращения кликджекинга .
Включить отладку
Используйте interceptSearchRequest для включения отладки:
if (!request.requestOptions) {
request.requestOptions = {};
}
request.requestOptions.debugOptions = {enableDebugging: true};
return request;
Виджет поиска предоставляет настраиваемый интерфейс поиска для веб-приложений. Для его реализации требуется минимальное количество HTML и JavaScript, и он поддерживает такие распространенные функции, как фасетный поиск и пагинация. Вы также можете настроить интерфейс с помощью CSS и JavaScript.
Если вам нужна большая гибкость, используйте API запросов. См. раздел «Создание интерфейса поиска с помощью API запросов» .
Создайте интерфейс поиска.
Для создания интерфейса поиска необходимо выполнить следующие шаги:
- Настройте приложение для поиска.
- Сгенерируйте идентификатор клиента для приложения.
- Добавьте HTML-разметку для поля поиска и результатов.
- Загрузите виджет на страницу.
- Инициализируйте виджет.
Настройте приложение для поиска.
Для каждого поискового интерфейса требуется поисковое приложение, определенное в консоли администратора. Приложение предоставляет настройки запросов, такие как источники данных, фасеты и параметры качества поиска.
Для создания поискового приложения см. раздел «Создание пользовательского интерфейса поиска» .
Сгенерируйте идентификатор клиента для приложения.
В дополнение к шагам, описанным в разделе «Настройка доступа к API Cloud Search» , сгенерируйте идентификатор клиента для вашего веб-приложения.
При настройке проекта:
- Выберите тип веб-браузера .
- Укажите URI источника вашего приложения.
- Обратите внимание на идентификатор клиента. Для работы виджета секретный ключ клиента не требуется.
Для получения дополнительной информации см. OAuth 2.0 для клиентских веб-приложений .
Добавить HTML-разметку
Для работы виджета требуются следующие HTML-элементы:
- Элемент
inputдля поля поиска. - Элемент для привязки диалогового окна с подсказками.
- Элемент для отображения результатов поиска.
- (Необязательно) Элемент для управления фасетным отображением.
В этом фрагменте кода показаны элементы, идентифицированные по их атрибуту id :
Загрузите виджет
Включите загрузчик, используя тег <script> :
Предоставьте функцию обратного вызова onload . Когда загрузчик будет готов, вызовите gapi.load() для загрузки модуля API-клиента, входа в Google и модуля Cloud Search.
Инициализируйте виджет.
Инициализируйте клиентскую библиотеку с помощью gapi.client.init() или gapi.auth2.init() указав свой идентификатор клиента и область действия https://www.googleapis.com/auth/cloud_search.query . Используйте классы построителя для настройки и привязки виджета.
Пример инициализации:
Переменные конфигурации:
Настройте процесс входа в систему.
Виджет предлагает пользователям войти в систему, когда они начинают печатать. Для персонализации можно использовать функцию входа через Google для веб-сайтов .
Авторизуйте пользователей напрямую
Используйте функцию «Вход через Google» для отслеживания и управления состоянием авторизации. В этом примере используется GoogleAuth.signIn() при нажатии кнопки:
Автоматический вход пользователей
Предварительно авторизуйте приложение для пользователей вашей организации, чтобы упростить вход в систему. Это также полезно при использовании Cloud Identity Aware Proxy . См. раздел «Использование входа через Google с ИТ-приложениями» .
Настройте интерфейс
Вы можете изменить внешний вид виджета следующим образом:
- Переопределение стилей с помощью CSS.
- Декоративные элементы с помощью адаптера.
- Создание пользовательских элементов с помощью адаптера.
Переопределяйте стили с помощью CSS
Виджет включает в себя собственные CSS-стили. Для их переопределения используйте селекторы предков для повышения специфичности:
#suggestions_anchor .cloudsearch_suggestion_container {
font-size: 14px;
}
См. справочник поддерживаемых классов CSS .
Декоративные элементы с помощью адаптера
Создайте и зарегистрируйте адаптер для изменения элементов перед их рендерингом. В этом примере добавляется пользовательский CSS-класс:
Зарегистрируйте адаптер во время инициализации:
Создавайте пользовательские элементы с помощью адаптера.
Реализуйте createSuggestionElement , createFacetResultElement или createSearchResultElement для создания пользовательских компонентов интерфейса. В этом примере используются HTML-теги <template> :
Зарегистрируйте адаптер:
Пользовательские элементы фасетной фильтрации должны соответствовать следующим правилам:
- Прикрепите атрибут
cloudsearch_facet_bucket_clickableк кликабельным элементам. - Оберните каждый сегмент в контейнер
cloudsearch_facet_bucket_container. - Сохраните порядок ячеек в ответе.
Например, следующий фрагмент кода отображает фасеты с помощью ссылок вместо флажков.
Настройка поведения поиска
Переопределяйте настройки поискового приложения, перехватывая запросы с помощью адаптера. Реализуйте interceptSearchRequest для изменения запросов перед их выполнением. В этом примере запросы ограничиваются выбранным источником:
Зарегистрируйте адаптер:
Следующий HTML-код используется для отображения выпадающего списка для фильтрации по источникам:
Приведенный ниже код отслеживает изменения, устанавливает выбранный параметр и при необходимости повторно выполняет запрос.
Также можно перехватывать ответы поисковых запросов, реализовав интерфейс interceptSearchResponse в адаптере.
Версии для закрепления
- Версия API : Установите значение в
cloudsearch.config/apiVersionперед инициализацией. - Версия виджета : Используйте
gapi.config.update('cloudsearch.config/clientVersion', 1.1).
Оба параметра по умолчанию равны 1,0, если не заданы.
Например, чтобы закрепить виджет за версией 1.1:
Защитите интерфейс поиска
Применяйте лучшие практики обеспечения безопасности веб-приложений, особенно для предотвращения кликджекинга .
Включить отладку
Используйте interceptSearchRequest для включения отладки:
if (!request.requestOptions) {
request.requestOptions = {};
}
request.requestOptions.debugOptions = {enableDebugging: true};
return request;