2009/06/27

Spotlight 検索を必要最低限にする

Spotlight は便利ですが重くなるので停止したくなることがあります。

自分の場合は、Eclipse などをいじってみたりするとworkspace に大量にファイルが出来るのでそのインデックスが重くなりがちだしMail.app はもはや使っていないのでSpotlight は要らない、と思って停止して使っていました。

====================================
Spotlight を無効にする
====================================
■ インデックスを停止(これだけでも充分です。)
$ sudo mdutil -i off /
■ Spotlight 用のプロセスの停止
$ sudo launchctl unload -w /System/Library/LaunchAgents/com.apple.Spotlight.plist
$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
■ インデックスデータを削除
$ sudo rm -rf /.Spotlight-V100

ところが停止させていると普通の検索もしてくれないし、Xcode のソース検索などもまともに動かない、など困ることが多いので再度有効にすることにしました。

====================================
Spotlight を再度有効にする
====================================
■ Spotlight 用のプロセスの開始
$ sudo launchctl load -w /System/Library/LaunchAgents/com.apple.Spotlight.plist
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
■ インデックスを再度有効にする
$ sudo mdutil -i on /
■ インデックスを再作成
$ sudo mdutil -E /

※ 上に挙げた例ではディスクが1つしか無いことを前提としていますが、複数のボリュームがある場合は /Volumes/* 毎に実行すれば同様にSpotlight の有効/無効を切り替えられます。

Spotlight を停止する方法 - EAGLE 雑記 を参考にしました。)

それから、自分のホームディレクトリを"プライバシー"に突っ込んで勝手にインデックスされないようにして、インデックスしたいファイルのみ自分のホームディレクトリ以外に置くようにしました。(/myFilesForSpotlight などを作ってそこに入れる、など)
これで大体自分の要求(重いのは嫌だけど各ソフトでの検索がきちんと動いて欲しい)は満たせたのですが、そもそもインデックス化するか否かに関してのポリシーを
SpotlightEnable ! /Users/myname
SpotlightEnable /Users/myname/myLocalFilesGoodForSpotlight
SpotlightDisable /
みたいに、細かく制御できれば良いですね。