Индексирование для быстрого поиска по базе данных
Для ускорения поиска каждая галерея должна быть проиндексирована. Для подготовки быстрого индекса вам понадобится утилита findface-tarantool-build-index (устанавливается из консольного инсталлятора). Для работы данной утилиты не требуется компонент findface-tarantool-server, поэтому она может использоваться как на сервере базы данных Tarantool, так и на удаленном сервере с доступом к базе данных.
Для подготовки быстрого индекса выполните следующие действия:
- Если вы установили ядро FindFace пошагово, установите утилиту - findface-tarantool-build-index.- sudo apt install findface-tarantool-build-index 
- Создайте быстрый индекс для вашей галереи ( - testgalв примерах ниже). Сначала подключитесь к консоли базы данных Tarantool.- Важно - Галерея не должна быть пустой. Для наполнения галереи лицами см. Прямые API-запросы к базе данных Tarantool. - Примечание - Создание быстрого индекса производится на каждом шарде - findface-tarantool-server.- tarantoolctl connect 127.0.0.1:33001 
- Выполните метод - prepare_preindex. В результате все элементы из пространства- linearв данной галерее будут перемещены в пространство- preindex:- 127.0.0.1:33001> FindFace.Gallery.new("testgal"):prepare_preindex() --- ... 
- Сохраните пространство - preindexв файл, который будет использован для генерации индекса:- 127.0.0.1:33001> FindFace.Gallery.new("testgal"):save_preindex("/tmp/preindex.bin") --- ... 
- Запустите генерацию индекса на основе файла - preindex.binс помощью утилиты- findface-tarantool-build-index(вызовите- --helpдля ознакомления с дополнительными опциями). В зависимости от количества элементов, данный процесс может занимать до нескольких часов. В этом случае индексирование лучше выполнять на отдельной, более мощной машине (для больших галерей рекомендуется использовать c4.8xlarge amazon, например, spot-instance).- sudo findface-build-index --input /tmp/preindex.bin --output /opt/ntech/var/lib/tarantool/default/index/testgal.idx --facen_size 320 Config values: .input = /tmp/preindex.bin .output = /opt/ntech/var/lib/tarantool/default/index/testgal.idx .facen_size = 320 .param_m = 12 .param_ef = 500 .limit = 4294967295 Building index: [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX] 100% ; 3 / 3 Index saved at /opt/ntech/var/lib/tarantool/default/index/testgal.idx 
- Удалите файл - preindex.bin.- sudo rm /tmp/preindex.bin 
- Включите быстрый индекс для галереи. - Примечание - Если Tarantool функционирует как набор реплик, скопируйте по такому же пути на сервер-реплику файл индекса ( - .idx) и только после этого включите быстрый индекс на мастере (- :use_index).- Совет - Рекомендуется удалять все файлы индекса на реплике, кроме последнего, во избежание промежуточных обновлений индекса в случае сильного отставания реплики от мастера. - 127.0.0.1:33001> FindFace.Gallery.new("testgal"):preindex_to_index() --- ... 127.0.0.1:33001> FindFace.Gallery.new("testgal"):use_index("/opt/ntech/var/lib/tarantool/default/index/testgal.idx") --- ... 
- После включения быстрого индекса поиск по галерее должен стать значительно быстрее. Информация об индексе остается в служебном пространстве Tarantool, поэтому когда вы перезапускаете Tarantool, индекс также подгружается. - Предупреждение - Не перемещайте файл индекса!