定期的に gcnmz を実行しましょう。2007年04月12日 16時33分57秒

cron 等で定期的に mknmz を動かし、インデックスを更新している方で、gcnmz を一度も実行したことがないという方はいないでしょうか?

mknmz のインデックスの更新機能は、全文書のうち、ほんの少しの文書が追加/削除/更新されることを想定したモデルとなっています。 文書の更新は(基本的に※1)ファイルのタイムスタンプで判断しますので、中身が同一でもタイムスタンプが異なれば更新されたものとみなします。

このため文書の削除や更新が頻繁に起こる場合は、定期的に gcnmz でインデックスの整理を行わないと効率が悪くなり、検索速度の低下をまねきます。

gcnmz を実行するタイミングは文書の削除/更新の頻度と全体の文書数にしめる割合により、算出するのが理想ですが、しばらく運用して gcnmz を実行する周期を適当に決める(たとえば1週間に1回とか1ヶ月に1回とか)のが一般的なようです。

wget 等で定期的にローカルファイルを更新する場合で、タイムスタンプが無効でローカルファイルのタイムスタンプが書き換わってしまう場合は、インデックスの更新 + gcnmz を実行するよりは、古いインデックスを削除して新たにインデックスを作成した方が便利な場合があります。

※1 -z オプション(--check-filesize オプション)でサイズが変わったファイルも対象にできます。