Fast IndexΒΆ

To speed up search, create a fast index for each gallery, using the findface-tarantool-build-index utility. This utility is installed from the distributable package <findface-repo>.deb or automatically from the console installer, subject to your installation method. It is independent of the findface-tarantool-server component and can be installed either on a localhost or on a remote host with access to Tarantool.

To create the fast index, do the following:

  1.  (If you have installed the FindFace core step-by-step) Install the findface-tarantool-build-index utility.

    sudo apt install findface-tarantool-build-index
    
  2. Create the fast index for your gallery (testgal in the case-study). First, connect to the Tarantool console.

    Note

    You have to repeat the fast index creation on each findface-tarantool-server shard.

    tarantoolctl connect 127.0.0.1:33001
    
  3. Run prepare_preindex. Each element of the gallery will be moved from the linear space to preindex:

    127.0.0.1:33001> FindFace.Gallery.new("testgal"):prepare_preindex()
    ---
    ...
    
  4. Prepare a file for generating the index:

    127.0.0.1:33001> FindFace.Gallery.new("testgal"):save_preindex("/tmp/preindex.bin")
    ---
    ...
    
  5. Launch index generation with the findface-tarantool-build-index utility (see --help for additional options). Depending on the number of elements, this process can take up to several hours and can be done on a separate, more powerful machine (for huge galleries we recommend c4.8xlarge amazon, for example, spot-instance).

    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
    
  6. Delete the preindex.bin file.

    sudo rm /tmp/preindex.bin
    
  7. Enable the fast index for the gallery.

    Note

    If Tarantool works as a replica set, copy the index file (.idx) from the master instance to the same path on the replica before enabling the fast index for the master instance (:use_index).

    Tip

    Do not forget to remove obsolete index files on the replica in order to avoid unnecessary index transitions, should the master instance and replica be heavily out of sync.

    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")
    ---
    ...
    
  8. Search through the gallery should now be significantly faster. Information about the index remains in the service space, so when you restart Tarantool, index will also be uploaded.

    Warning

    Do not move the index file to another location!