Overview#
In the classic scenario of descriptor matching using the Python Matcher service, the processing of match requests can be slow for several reasons:
-
due to the large amount of data and the inability to speed up the query by any changes in the database configuration;
-
due to the way the data is stored - the descriptor and the object identifier (face_id/event_id) are stored in different database tables. Filters specified in a matching request can also be represented in a separate database table, which slows down query processing;
-
due to internal database limitations.
The additional indexing module enables you to significantly speed up the processing of matching requests by indexing descriptors. The indexing module contains the following services:
- Index Manager manages index building tasks and coordinates the Indexer service;
- Indexer creates indexes based on the list of descriptors;
- Indexed Matcher performs descriptors matching against indexes created.
To work with the module, the Python Matcher Proxy service with a matching plugin is required that enables you to send matching requests from the API service to the Indexed Matcher service.
The Index Manager and Indexed Matcher services also require a Redis database.
The Index Manager and Indexer services are scalable, which means you can use multiple instances.