TAG files are generated on a client and communicated to a server. The TAGS
files are indexed and loaded into memory on the server. Search requests
are run against the index and files that contain tags that satisfy the
search request are ranked. The ranking is based on an include-tree of the
file that contains the tag, the relative directory distance of the file
containing the tag from the current context, or by using the numbers of
levels of inclusion needed to reach a tag that satisfies the query. In
some implementations, an extensible protocol is used to communicate the
search queries and files that contain tags that satisfy the search query.