I created makeindx when I prepared for several written exams at university. I had a lot of handwritten notes that I wanted to use during the tests, but I needed a fast lookup index.
For makeindx you have to prepare a simple text file with an entry in each line:
This line creates a single index term for the keyword "Compilers" at page 45. Now, for the main feature of this little application. Often you have terms like "Architecture of a Logic Cell Array", where you actually want two entries for the same page. No problem:
[Architecture] of a [Logic Cell Array], 111
will give what you need. For each word enclosed in brackets, another index entry is generated...with the rest of the string as secondary term!
This makes the creation of an exhaustive index very easy.