...one of the most highly
regarded and expertly designed C++ library projects in the
world. — Herb Sutter and Andrei
Creating a good index is an iterative process, often the first step is just to add a header scanning rule to the script file and then generate the documentation and see:
Further rules can then be added to the script to handle these cases and the next iteration examined, and so on.
If you don't understand why a particular term is (or is not) present in the index, try adding a !debug regular-expression directive to the script file.
You can restrict which sections are indexed for a particular term. So assuming that the docbook document has the usual hierarchical names for section ID's (as Quickbook generates, for example), you can easily place a constraint on which sections are examined for a particular term.
For example, if you want to index occurrences of Lord Kelvin's name, but only in the introduction section, you might then add:
Kelvin "" ".*introduction.*"
to the script file, assuming that the section ID of the intro is "some_library_or_chapter_name.introduction".
This would avoid an index entry every time 'Kelvin' is found, something the user is unlikely to find helpful.