Сервис глобального
поиска
Сервис глобального поиска (Global Search Service) нужен для обеспечения функции поиска в BPMSoft. Для обеспечения быстрого поиска используется индексация с применением сторонней поисковой системы OpenSearch (далее – Search Engine), которая устанавливается отдельным компонентом.
Ключевые возможности сервиса:
- Поиск по любому разделу приложения;
- Поиск по пользовательским полям и разделам;
- Результат поиска не зависит от раздела, в котором был запущен поиск.
Для стабильной и корректной работы сервиса в фоновом режиме (с запуском по событиям в системе) выполняются следующие задачи:
- Подписка — передача в Search Engine информации о разделе для поиска с сохранением связи с приложением;
- Отписка (отключение) — удаление из Search Engine информации по требованию приложения;
- Индексация — индексирование разделов для поиска.
При использовании сервиса глобального поиска необходимо учитывать следующие особенности:
- Поисковый запрос не чувствителен к регистру;
- Поиск выполняется по всем полям объекта вне зависимости от их типа;
- При поиске дополнительно используется информация из деталей адресов, средств связи и платежных реквизитов;
- Поиск вложений осуществляется по названию и описанию;
- Поиск выполняется с учетом распространенных опечаток и морфологии;
- На результаты поиска влияют права доступа пользователя.
Параметры поиска
Параметры поиска можно настроить с помощью системных настроек приложения.
Таблица 1 — Системные настройки для конфигурации сервиса глобального поиска
| Код системной настройки | Описание |
| GlobalSearchDefaultEntityWeight | Настраивают отображение результатов поиска |
| GlobalSearchDefaultPrimaryColumnWeight | |
| UseInexactGlobalSearch | Настраивает поиск с учетом опечаток и морфологии |
| GlobalSearchShouldMatchPercent | Настраивает неточный поиск |
Компоненты сервиса
Сервис глобального поиска состоит из следующих компонентов:
Таблица 2 — Инфраструктурные компоненты сервиса
| Компонент | Название в поставке | Описание | Версия компонента в последнем релизе микросервиса (Docker) | Версия компонента в последнем релизе микросервиса (Helm) |
| Search Engine | opensearch | Поисковая система | opensearch:latest | Устанавливаются отдельно |
| RabbitMQ | rabbitmq | Брокер сообщений | rabbitmq:4.0.7-management | |
| GS Database Server | postgres | Системная база данных сервиса | postgres:latest | |
| GS Caching Server | dragonfly | Хранилище кэшированных данных для обеспечения быстродействия | dragonfly:latest |
Таблица 3 — Специфичные компоненты сервиса
| Компонент | Название в поставке | Описание |
| Web.Api | web-api | Web API приложения. Отвечает за создание и обслуживание индекса в OpenSearch для BPMSoft |
| Search.Web.Api | search-web-api | Web API приложения. Отвечает за обработку поисковых запросов, получаемых BPMSoft, и преобразует их в запросы для OpenSearch |
| Indexing.Web.Api | indexing-web-api | Web API приложения. Отвечает за обработку запросы, получаемых от BPMSoft на добавление, изменение или удаление одиночных записей в процессе работы с ними в BPMSoft. Создает сообщения для SingleTask.Executer.Api и QueriedSingleTask.Executer.Api |
| Executer.Api | executor-api | Worker приложения. Отвечает за планирования полной индексации сайтов по внутренней базе данных глобального поиска. Запускается по расписанию с заданным периодом (обычно 30 секунд) и сканирует внутреннюю БД глобального поиска. Подготавливает данные для первичной индексации сущности и отправляет сообщения во входную очередь Executer.Api |
| QueriedSingleTask.Executer.Api | queriedsingletask-executor-api | Worker приложения. Отвечает за обработку сообщения от Index.Web.Api, выполняет поиск по шаблону в поисковом движке и отравляет найденные строки как отдельные запросы для SingleTask.Executer.Api |
| Reply.Executer.Api | replay-executor-api | Worker приложения. Отвечает за получение результата первичной индексации сущности и обновляет внутреннюю базу данных глобального поиска |
| Sheduler.Api | scheduler-api | Worker приложения. Отвечает за планирование полной индексации сайтов по внутренней базе данных глобального поиска. Запускается по расписанию с заданным периодом (обычно 30 секунд) и сканирует внутреннюю базу данных глобального поиска. Подготавливает данные для первичной индексации сущности и отправляет сообщения во входную очередь Executer.Api |
| Single.Executer.Api | single-executor-api | Worker приложения. Отвечает за индексацию одной строки при выполнении в BPMSoft операций добавления или изменения данных |
| Single.Reply.Execute.Api | single-replay-executor-api | Worker приложения. Отвечает за получаение результата первичной индексации строк, при ошибке возвращает дату индексации во внутренней базе данных глобального поиска с целью дальнейшей первичной индексации за последний период |
| SingleTask.Executer.Api | singletask-executor-api | Worker приложения. Отвечает за подготовку на основании внутренней базы данных глобального поиска данных, нужных для индексации одной строки, и передает его во входную очередь Single.Executer.Api |
Рисунок 1 — Схема работы сервиса
Способы развертывания
Сервис глобального поиска возможно развернуть как для on-site, так и для cloud решения.
В зависимости от целевого назначения системы допускаются следующие варианты развертывания:
- Продуктивная (PROD) — допускается развертывание сервиса строго с использованием ПО Kubernetes. Для высоконагруженных сред рекомендуется использовать кластер;
- ПредПродуктивная (STAGE) — рекомендуется развертывание сервиса с использованием ПО Kubernetes; допускается развертывание с использованием ПО Docker;
- Тестовая (TEST) — допускается развертывание сервиса как с использованием ПО Kubernetes, так и с использованием ПО Docker;
- Среда разработки (DEV) — допускается развертывание сервиса как с использованием ПО Kubernetes, так и с использованием ПО Docker.
Рекомендуем изучить
Развертывание сервиса глобального поиска через Kubernetes
Развертывание сервиса глобального поиска через Docker
Настройка дополнительных параметров сервиса глобального поиска
Системные требования BPMSoft
Калькулятор системных требований