How do I find topics not listed on a topic?
How do I find topics not listed on a topic?
Automatically generated topic indexes are great, because they do not need any maintaince. Some indexes cannot be automatically generated, e.g. because they rely on information not contained in the wiki. The problem with manually maintained indexes is that they need maintenance, and it is hard to see at a glance if the index is complete.
How do you find topics that are
not listed in the index topic?
Here is a search that does the job:
%SEARCH{"^[^X][^X]" regex="on" scope="topic" format=" * $topic"
nonoise="on" topic="%SEARCH{"." regex="on" scope="topic"
format="$percntSEARCH{\"$topic\" topic=\"%TOPIC%\" format=\"XX\"
nonoise=\"on\"}$percnt$topic" nonoise="on" separator=","}%"}%
The gory details
The outer search filters out the topics that
are listed in the current topic (given by %<nop>TOPIC% - replace %<nop>TOPIC% with the name of the index topic if the index topic is not the current topic). The outer search looks for topics whose names do not start with XX. The outer search filters out the topic names that start with XX by applying a regular expression to the topic names. The list of topics comes from the inner searches.
The inner searches supply the list of topics to be filtered. The "middle" search builds a list of all the topics in the current web using a comma-separated formatted search. (You should add a
web="..."
clause to both of the inner searches if you wish to search other webs.) The"middle" search's format consists of the innermost search followed by the topic name.
That innermost search returns an empty string for topics not in the index topic, and it returns "XX" for topics that are listed in the index topic. The "middle" search's format appends the topic name to this string (i.e. blank or "XX") joins them up as a comma-separated-list. Thus, the topics that are listed in the index have XX in front. Finally, the outer search eliminates all topic names starting with XX, which leaves the names of topics that are not in the index.
That is the list that was needed.