Importing external tags

During indexing, it is possible to import metadata for each file by executing commands. For example, this could extract user tag data for the file and store it in a field for indexing.

See the section about the metadatacmds field in the main configuration chapter for a description of the configuration syntax.

As an example, if you would want Recoll to use tags managed by tmsu, you would add the following to the configuration file:

      metadatacmds = ; tags = tmsu tags %f


Depending on the tmsu version, you may need/want to add options like --database=/some/db.

You may want to restrict this processing to a subset of the directory tree, because it may slow down indexing a bit ([some/area/of/the/fs]).

Note the initial semi-colon after the equal sign.

In the example above, the output of tmsu is used to set a field named tags. The field name is arbitrary and could be tmsu or myfield just the same, but tags is an alias for the standard Recoll keywords field, and the tmsu output will just augment its contents. This will avoid the need to extend the field configuration.

Once re-indexing is performed (you'll need to force the file reindexing, Recoll will not detect the need by itself), you will be able to search from the query language, through any of its aliases: tags:some/alternate/values or tags:all,these,values (the compact field search syntax is supported for recoll 1.20 and later. For older versions, you would need to repeat the tags: specifier for each term, e.g. tags:some OR tags:alternate).

You should be aware that tags changes will not be detected by the indexer if the file itself did not change. One possible workaround would be to update the file ctime when you modify the tags, which would be consistent with how extended attributes function. A pair of chmod commands could accomplish this, or a touch -a . Alternatively, just couple the tag update with a recollindex -e -i filename.