高速検索 namazu を使う

検索する文書の量が増えて来るとgrepでは力不足です。namazu を使うと高速に大量の文書から検索することができます。namazuはVine Linuxでは標準でインストールされています。namazuの使いかたは非常に簡単です。まずnamazuで使うインデックスファイル群をいれるディレクトリーを作ります。次にそのディレクトリーに移動した後、mknmzでインデックス・ファイル群を作成します。それだけで検索の準備はOKです。検索は namazu <キーワード> <インデックス・ディレクトリー> で検索できます。namazu の出力はHTML形式でできるので、出力をLynxで表示できるようにすると、検索が非常に便利です。

例えば myhtml ディレクトリー内の文書を検索したい場合、まず、インデックスファイルを格納するためのディレクトリー myhtml_nmz を作ります。

$ mkdir ~/myhtml_nmz

次に、myhtml_nmz に移動します。

$ cd myhtml_nmz

mknmz でインデックス・ファイル群を作ります。

$ mknmz ~/myhtml

検索は namazu で行ないます。インデックスファイルを入れたディレクトリーを指定する必要があります。この場合は ~/myhtml_nmz です。

$ namazu <keyword> ~/myhtml_nmz

namazu は -h コマンドライン・オプションをつけると検索結果をHTML形式で出力します。これをファイルにしてLynxで閲覧するとキーワードの存在する文書に簡単に移動することができます。namazu の検索結果をファイルに保存して Lynx を起動するスクリプトを mynmz という名前にして次のように作ります。

#!/bin/sh
namazu -h $@ ~/myhtml_nmz > ~/.nmz.html
lynx ~/.nmz.html

chmod 755 mynmz として、パーミッションを実行可能にするのを忘れないようにします。検索は次のようにします。

$ mynmz keyword

このままでは1件目から20件目までの文書しか表示されません。全てを表示させたいときはキーワードの前に -a コマンドラインオプションをつけます。

$ mynmz -a keyword

また11件目から10件表示させたいときは次のようにコマンドラインオプションをつけます。

$ mynmz -w 10 -n 10 keyword

namazu は大量の文書の検索のときは非常に高速ですが、文書を更新したときはインデックスを作り直す必要があります。srch はインデックスファイルが要りませんが、低速です。また、namazu でひっかからない検索が srch で可能な場合があり、一長一短があります。