A context directive calculates the context of a list of zettel identifier. It starts with the keyword CONTEXT.

Optionally you may specify some context details, after the keyword CONTEXT, separated by space characters. These are:

If no BACKWARD and FORWARD is specified, a search for context zettel will be done though backward and forward links.

The cost of a context zettel is calculated iteratively:

The maximum cost is only checked for all zettel that are not directly reachable from the initial, specified list of zettel. This ensures that initial zettel that have only a highly used tag, will also produce some context zettel.

Despite its possibly complicated structure, this algorithm ensures in practice that the zettel context is a list of zettel, where the first elements are “near” to the specified zettel and the last elements are more “distant” to the specified zettel. It also penalties zettel that acts as a “hub” to other zettel, to make it more likely that only relevant zettel appear on the context list.

This directive may be specified only once as a query directive. A second occurence of CONTEXT is interpreted as a search expression. In most cases it is easier to adjust the maximum cost than to perform another context search, which is relatively expensive in terms of retrieving effort.