(zettel (meta (back "00001007700000 00001007720000") (backward "00001007700000 00001007720000") (box-number "1") (created "20230707204706") (forward "00001006032500 00001007701000") (modified "20241118174741") (published "20241118174741") (role "manual") (syntax "zmk") (tags "#manual #search #zettelstore") (title "Query: Context Directive")) (rights 4) (encoding "") (content "A context directive calculates the __context__ of a list of zettel identifier.\nIt starts with the keyword ''CONTEXT''.\n\nOptionally you may specify some context details, after the keyword ''CONTEXT'', separated by space characters.\nThese are:\n* ''FULL'': additionally search for zettel with the same tags,\n* ''BACKWARD'': search for context only though backward links,\n* ''FORWARD'': search for context only through forward links,\n* ''COST'': one or more space characters, and a positive integer: set the maximum __cost__ (default: 17),\n* ''MAX'': one or more space characters, and a positive integer: set the maximum number of context zettel (default: 200).\n\nIf no ''BACKWARD'' and ''FORWARD'' is specified, a search for context zettel will be done though backward and forward links.\n\nThe cost of a context zettel is calculated iteratively:\n* Each of the specified zettel hast a cost of one.\n* A zettel found as a single folge zettel or single precursor zettel has the cost of the originating zettel, plus 0.1.\n* A zettel found as a single sequel zettel or single prequel zettel has the cost of the originating zettel, plus 1.0.\n* A zettel found as a single successor zettel or single predecessor zettel has the cost of the originating zettel, plus seven.\n* A zettel found via another link without being part of a [[set of zettel identifier|00001006032500]], has the cost of the originating zettel, plus two.\n* A zettel which is part of a set of zettel identifier, has the cost of the originating zettel, plus one of the four choices above and multiplied with roughly a linear-logarithmic value based on the size of the set.\n* A zettel with the same tag, has the cost of the originating zettel, plus a linear-logarithmic number based on the number of zettel with this tag.\n If a zettel belongs to more than one tag compared with the current zettel, there is a discount of 90% per additional tag.\n This only applies if the ''FULL'' directive was specified.\n\nThe maximum cost is only checked for all zettel that are not directly reachable from the initial, specified list of zettel.\nThis ensures that initial zettel that have only a highly used tag, will also produce some context zettel.\n\nDespite 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.\nIt 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.\n\nThis directive may be specified only once as a query directive.\nA second occurence of ''CONTEXT'' is interpreted as a [[search expression|00001007701000]].\nIn 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."))