Перейти к содержанию

Плагин сравнения для Python Matcher Proxy#

С помощью плагина сравнения LUNA Vinder Plugin сервис Python Matcher Proxy может перенаправлять запросы на сравнение, поступающие из сервиса API, либо в сервис Python Matcher, либо в сервис Matcher модуля LUNA Vinder Module. Принцип работы плагина и описание выбора сервиса, в котором будет выполняться поиск, описаны ниже.

Плагин сравнения уже встроен в Docker-контейнер сервиса Python Matcher Proxy. Необходимо только включить его использование (см. руководство по установке).

Описание работы плагина сравнения#

Каждый запрос на поиск похожих объектов представлен в виде комбинаций кандидатов и эталонов. Плагин обрабатывает каждую такую комбинацию как отдельный подзапрос следующим образом:

  • Анализ запроса — плагин проверяет параметры запроса на совместимость с доступными проекциями и индексами LUNA Vinder Module.
  • Выбор способа обработки — определение, может ли запрос быть обработан Matcher'ом модуля LUNA Vinder Module или должен быть направлен в сервис Python Matcher. При положительном решении запрос направляется в соответствующий экземпляр Matcher модуля LUNA Vinder Module.
  • Формирование результата — при необходимости Python Matcher Proxy дополняет ответ данными из основной базы данных и возвращает пользователю.

Критерии выбора сервиса для сравнения#

Плагин сравнения анализирует каждый запрос и принимает решение о маршрутизации на основе следующих критериев:

1. Наличие подходящей проекции. Существует как минимум одна проекция с соответствующим источником данных (origin), а также совместимыми фильтрами и targets. 2. Доступность индекса. Должен существовать индекс в выбранной проекции. Если в проекции есть фильтры, но в индексе нет полей для этих фильтров, матчинг всё равно возможен по этой проекции, если фильтры в запросе совпадают с фильтрами проекции. В случае наличия составных полей в индексе, они должны охватывать все фильтры запроса. 3. Наличие полей targets. Все атрибуты из фильтров запроса, которые не совпадают с фильтрами проекции, должны присутствовать в списке полей targets выбранной проекции.

Если запрос не соответствует хотя бы одному из критериев, плагин сравнения перенаправляет его в Python Matcher для дальнейшей обработки.

В LUNA PLATFORM может использоваться несколько плагинов сопоставления. См. подробную информацию в разделе "Плагины сопоставления" руководства администратора LUNA PLATFORM.