Here’s how you can force Spotlight to re-index your hard disk to fix search errors.
1. Open the Terminal application.
2. Type in this command:
sudo mdutil -E /
3. Type in your administrator’s password when prompted.
sudo mdutil -s /
To turn indexing on for all volumes, you enter: sudo mdutil -i on / -a
sudo mdutil -i on -a -v
Scan base time: 2012-05-29 22:08:53 -0400 (268 seconds ago), reasoning: ‘scan required – could not get mount time’
sudo mdimport -X
mdimport will not import on behalf of root user. Exiting.
Rebuilding Spotlight’s Index on OS X (Manually)
After doing a number of disk clean up and optimizations, I found myself in the circumstance of OS X’s spotlight returning no results. Whether I searched for a keyword in Mail, or by Spotlight using Command-Space, I got no results backs – just an empty list for my troubles.
It turns out there’s a neat utility out there called Rebuild Spotlight Index 2.7 that does all the grunt work for you. Problem is, it didn’t work for me.
What’s going on is actually fairly trivial, and it’s possible to simply do everything via the command line.
The metadata utilities need to run as root, so to see what your drive is up to, you’d enter something like: sudo mdutil -s /
This shows the status on the root volume.
To turn indexing on for a volume, you enter: sudo mdutil -i on /
And, to force Spotlight to rebuild its index, you simply erase the master copy of the metadata stores on the volume like this: sudo mdutil -E /
However, while I did all this, Spotlight was still not building the indexed for me.
Here’s how I solved it, using just the Terminal.
First, I wanted to see the schema file, so I printed it out using to the standard input using: sudo mdimport -X
At the bottom of the schema listing, I say a reference to a schemaLocation, and took a shot in the dark that perhaps that Spotlight’s index rebuilding needed to check data against its schema before it would start. To do that, it might need network access, if not back to the local machine.
And, for good measure, I went to check the date/timestamp on the Spotlight directory using: sudo ls -la /.Spotlight*
While most of the files had the timestamp of when I tried to delete the index, not all the files had the current date and time. Additionally, the file sizes were not growing, a good indication the index was not being rebuilt.
Thinking to myself, “what could be causing network traffic, even internally, not to be working”, I realized that I had just rebooted and PeerGuardian2 was currently active and blocking traffic. This is a great tool for blocking malware and unwanted network visitors, but occasionally it gets in the way. So, I turned it off.
Then, I did the following commands to ensure indexing was on, the spotlight metastore was really gone, and that I wanted it rebuilt:
sudo mdutil -i on /
rm -rf /.Spotlight*
sudo mdutil -E /
The moment I did the last command, this time the system sprung to life, the directory /.Spotlight-V100 was created, and the files inside it were growing quickly. Spotlight on the toolbar showed a progress bar, indicating the system would be done indexing in a bit. The big difference? I turned off the network traffic blocker for a moment.