During indexing, it is possible to import metadata for each file by executing commands. This allows, for example, extracting tag data from an external application and storing 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.
For example, if you would want Recoll to use tags managed by
tmsu in a field named
tags
, you would add the following to the
configuration file:
[/some/area/of/the/fs]
metadatacmds = ; tags
= tmsu tags %f
Note
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 will 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 comma- or slash-based 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
.
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
/path/to/the/file
.