How to debug the cause of an enormous Spotlight index?
Working under the assumption that it is a specific file, folder or file type that triggers some kind of bug that makes the index size explode, I would take a look at the actual files that Spotlight builds up (i.e. the database itself). Tryk looking at them with any text editor or even a hex-editor.

If this is indeed caused by a bug that caused the same content to be indexed over and over again, then you might be able to see which file or file type it is. Then you can narrow down which folder to exclude from Spotlight.

Another more time consuming method is simply by trial and error doing a kind of "binary search", where you exclude half of your folders from the Spotlight index. If the problem persists, the problem is in this half - otherwise it is in the other. Repeat that process until you've found the specific folder containing the problematic file.

If you're comfortable with the Terminal, you can also take a look at which files are actually opened and read by the mdworker processes. This could again give you a hint as to why the index is so big.

First use Activity Monitor like you have already done to find the mdworker processes. Make note of the "PID" column that contains the process ID.

Open Terminal and run the following command:

lsof -n -p &lt;pid&gt;


You need to replace  with the actual process ID. This will give you a list of the files that are currently in use by that process.

You could also run:

fs_usage -p &lt;pid&gt;


Again replace  with the actual process ID. This command will show you file accesses for that process as they occur. You can stop the display by pressing Ctrl-C.