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

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

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

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

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

Каждый запрос на сравнение представлен в виде всех возможных комбинаций кандидатов и эталонов, затем каждая такая комбинация обрабатывается как отдельный подзапрос следующим образом (дополнительный подзапрос означает комбинацию эталонов и кандидатов):

  • Получение сложности подзапроса (см. "Сложность запроса на сравнение").

  • Выбор способа обработки подзапроса: с помощью плагина сравнения или сервиса Python Matcher.

    • Если на предыдущем шаге был выбран сервис Python Matcher, он обработает подзапрос и вернет ответ сервису Python Matcher Proxy.

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

  • Если запрос был успешно обработан плагином сравнения, но у него нет доступа ко всем полям объекта, указанным в подзапросе в поле "target" для сравнения, то сервис Python Matcher Proxy получит эти данные перед следующим шагом.

  • Сервис Python Matcher Proxy собирает результаты от всех подзапросов, сортирует их в правильном порядке, и выдает ответ пользователю.

Сложность запроса на сравнение#

Matching cost — это число с плавающей запятой, определяющее сложность запроса на сравнение с использованием плагина.

Определение сложности сравнения необходимо для выбора наилучшего способа обработки запроса на сравнение: с помощью сервиса Python Matcher или с помощью плагина сравнения.

Значение сложности запроса на сравнение для сервиса Python Matcher равно бесконечности. Если в БД Redis загружена метка для сравнения, то будет рассчитана определенная сложность запроса и будет использован плагин сравнения. Если же метка не загружена, то будет использован сервис Python Matcher.

Поля target, выступающие в качестве сравнения#

Сервис Python Matcher имеет доступ ко всем данным сущностей сравнения, поэтому он может обрабатывать запросы на сравнение со всеми полями target. В свою очередь, плагин сравнения может не иметь доступ к данным, указанным в поле target запроса. В этом случае сервис Python Matcher Proxy дополнит ответ плагина сравнения отсутствующими данными о полях target, например:

  • ответ на сравнение содержит следующие поля target: face_id , user_data и similarity, а плагин сравнения не имеет доступа к полю user_data, тогда:

    • плагин сравнения сравнивает эталон с указанными face_id и возвращает результат сравнения сервису Python Matcher Proxy, который содержит только пары face_id и similarity.

    • для каждого кандидата на сравнение в результате сервис Python Matcher Proxy получит user_data из основной базы данных по face_id и объединит face_id и similarity с user_data.

    • плагин сравнения вернет пользователю расширенный ответ с указанными полями target.

  • ответ на сравнение содержит следующие поля target: age и gender, а выбранный плагин сравнения имеет доступ только к полям event_id , descriptor и age.

    • плагин сравнения сравнивает эталон и возвращает соответствующий ответ в сервис Python Matcher Proxy, который содержит только пары event_id , age и similarity.

    • для каждого кандидата на сравнение в результате сервис Matcher Proxy получит gender из основной базы данных по event_id и объединит event_id с age, а также после этого удалит ненужные event_id и similarity из ответа.

    • плагин сравнения вернет пользователю подготовленный ответ с указанными полями target.

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