Плагин сравнения для 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.