全文検索システム「namazu」 2000.8.12

■はじめに

     最近、数ヶ月前の雑誌「日経パソコン」みながらWORDやEXCELの使い方を覚えています。そこにはフリーのPC-UNIXであるLinuxのコーナーも在り、ちょうど2ページに渡って全文検索システムのNamazuについて紹介していました。全文検索をLANサーバーに導入することでちょっとした知識データベースが作成出来ます。もちろん検索するデータが在ればの話ですが。HTML形式、テキスト形式で作成したデータがキーワードを入力して瞬時に検索出来る訳ですから、パソコンのサポートなどを行う場合に威力を発揮するでしょう。
     良く読んだら非常にインストールが簡単そうです。そこで今回は全文検索システムのNamazuのインストールに挑戦してみました。参考にしたのは日経パソコンのNo.354とアスキーLinuxマガジン4月号です。

        本体:FMV-5150DPS モデルSP5
        使用Linux:書籍に付属していたTurboLinux4.2
         ※Linuxはサーバーとしてインストールし、
          WEBサーバー「Apache 1.3.6」と
          ファイルサーバー「Samba 2.0.5a」が
          インストール済みでWIN98マシンよりアクセス可能の
          状態になっています。
    【Linux】
     WINDOWS98などの様なOS(オペレーティングシステム)です。ネットワークでの運用で安定した動作をすると言われています。無償で提供されているOSでそれほどお金をかけずに、LANで良く利用されるWEBサーバー(ホームページ)、ファイルサーバーなどが構築できます。

    【全文検索】
     ホームページの検索には、言葉を入力して検索するとその言葉を入力してるホームページを表示するものがしするものが在りますが、ちょうどあのようなものです。今回のnamazuは実際に多くのホームページで情報を検索する為に利用されています。

    【Namazu】
     有名な全文検索システムです。詳しくは次のURLをご覧ください。
     http://www.namazu.org/index.html.ja

    【テキストファイル】
     ワープロのような文字の大きさや種類を文字毎に変えるような事は出来ないが、その代わりに処理を行うソフトが速い。テキストファイルを主に処理するソフトをテキストエディターなどと呼びます。WINDOWSのメモ帳で作成するファイルがテキストファイルです。ファイル名の最後が「.TXT」となっています。

■とにかくやってみる
    □sambaの設定
     検索の対象とするフォルダをWINDOWSのPCからネットワーク経由で読み書き出来るようにしておくと、テキストやHTML形式のファイルをドラッグアンドドロップでコピーしインデックスを作成することでデータベースとして使用出来るようにすると雑誌には書いてありました。説明では/home/httpd/publicを共有名publicで使うようにありましたが、publicは既に利用していたので、先ず、/home/httpd/databaseフォルダをwindowsマシンから書き込み出来るように公開の設定をしました。

    /etc/smb.confに以下の内容を追加
    [database]
      comment = namazu
      path = /home/httpd/html/database
      writable = yes
      public = yes

    これにより\\fox\databaseとしてwindowsからは共有可能となりました。


    □必要なファイルをダウンロード
     Namazuを使用するには、通常、KAKASIという漢字→かな(ローマ字)変換プログラムが必要なので、ホームページから最新版のKAKASI(kakasi-2.3.2.tar.gz)とNamazu(namazu-2.0.4.tar.gz)のソースをダウンロードしました。
     ・NamazuのHP http://www.namazu.org/index.html.ja
     ・KAKASIのHP http://kakasi.namazu.org/

    □KAKASIのインストール
     【注意】#で始まる行はLinuxで入力するコマンドです。
    # su -
    でrootになって(当然パスワードは入力します)からkakasi-2.3.2.tar.gzファイルを適当なフォルダ(今回はrootフォルダへtmpフォルダを作成)へコピーし
    # tar zxvf kakasi-2.3.2.tar.gz
    # cd kakasi-2.3.2
    # ./configure
    # make install

    とやったがcコンパイラが入ってなかったので、
    # turbopkg
    でパッケージの選択画面が表示されたら、「Development - C/C++」グループを選択して でCコンパイラをインストールしてkakasiを ./configure からやり直した。

    □Namazuのインストール
    KAKASIと同様にnamazu-2.0.4.tar.gzも/root/tmpへコピーし、
    # tar zxvf namazu-2.0.4.tar.gz
    # cd namazu-2.0.4
    本を見ると説明が少し違う、よく見たら本の説明はNamazuのバージョンは1.3.0.10。実際にコンパイルしてもlinuxの基本ライブラリが違うためかコンパイル出来なかった。namazu-1.3.0.11.tar.gzをダウンロードし、再び以下の様にしてコンパイルしインストールする。
    # tar zxvf namazu-1.3.0.11.tar.gz
    # cd namazu-1.3.0.11
    # cd src
    # ./configure
    # make install
    # cp namazu.cgi /home/httpd/cgi-bin
    この入力で、上書きして良いかの確認が表示された。既にインストールされている様な感じだった。後でこの辺を適当にしていたため正しく動かず手こずることになったのですが、取りあえず、
    # cp /home/httpd/cgi-bin/namazu.cgi /home/httpd/cgi-bin/namazu.cgi.org
    としてバックアップし、再びコピーを行いました。


    □WEBの時に、ファイルの名前が・・・
    次に設定ファイル修正を説明を見ながら行う。
    # cd /usr/local/namazu/lib
    # cp namazu.conf-dist namazu.conf
    INDEX /usr/local/namazu/index
    REPLACE /home/httpd/html/database http://192.168.0.1/database
    LANG ja
     namazu.confファイルの最後に以上の三行を追加しました。説明には行頭に#が付いている部分などを修正する様になっていました。また、パラメータが[TAB]記号によって区切られていないと設定が有効にならないとか。

     これで動くだったのですが、なぜが動きません。インデックスは作成するのですが、そのインデックスが検索を行う時に見えていない様です。インデックスファイルが開けないとメッセージが表示されました。今度はTurboLinuxの説明書などを確認したら、TurboLinux4.2をインストールした時点でKAKASIの2.2.5、Namazuの1.2.0.6がインストールされていたのでそのセッティングが一部有効になっていて。mknmzで作成したインデックスの場所と、Namazuで検索するインデックスの場所が違っていた為に動かなかったようです。
     確認の為、
    # namazu -C
    として設定を確認すると、インデックスは/usr/local/namazu/indexに作成していますが、namazuの実行時には、/usr/share/namazu/indexを使っていた様です。
    # mknmz -O /usr/share/namazu/index /home/httpd/html/database
    として、再度インデックスを作成し、Linuxで検索すると条件に一致するものが表示されました。今度はインターネットエクスプローラからCGIで検索し、URLをクリックするとそのデータが表示される様に出来るはずでしたが、URLの表示が設定ファイルの内容を正しく反映しません。namazu.confの書き方に問題があったのか、インストールを違うところへ二回した様な形になっているのがやっぱり原因なのか分からず・・・。

■再インストール
    □パッケージの削除
    どうせ動かないし、大体感じがわかったので、KAKASIとNamazuのパッケージを削除し、残っている関連ファイルをfindにて以下のように検索して大方削除してから
    # find / -name namazu
    # find / -name namazu.*
    再びソースを展開してインストールを実行しました。/root/tmpのkakasi-2.3.2とnamazu-1.3.0.11もフォルダ(ディレクトリ)毎削除しておきました。
    kakasi-2.3.2.tar.gzもnamazu-1.3.0.11.tar.gzも/root/tmpに保存してあるので、

    □KAKASIのインストール
    # su -
    # cd tmp
    # tar zxvf kakasi-2.3.2.tar.gz
    # cd kakasi-2.3.2
    # ./configure
    # make
    # make install

    □Namazuのインストール
    # tar zxvf namazu-1.3.0.11.tar.gz
    # cd namazu-1.3.0.11
    # cd src
    # ./configure

    Makefileを編集
      (1) OPT_ADMIN_EMAIL =
        を自分のメールアドレスにしました。
      (2) CGIDIR = /home/httpd/cgi-bin
        としました。

    # make
    # make install
    # make install_cgi
    (最後の一行でnamazu.cgiが/home/httpd/cgi-binへコピーされます)

    □設定ファイルの変更
    # cd /usr/local/namazu/lib
    # cp namazu.conf-dist namazu.conf
    namazu.confの#LANGの#を取り、#REPLACEも#を取り以下のように修正しました。
    REPLACE /home/httpd/html/database/ http://fmv.komazo.com/database/
    LANG ja

■動作テスト
    □インデックスの作成
    # /usr/local/bin/mknmz -O /usr/local/namazu/index/ /home/httpd/html/database/
    と入力しインデックスファイルを作成します。30個ほどしかファイルが在りませんでしたが、5分程掛かったとおもいます。

    □検索してみる
    (1)コマンド入力
    # /usr/local/namazu/bin/namazu test
    として検索してみました。testが含まれている文章が3つありました。
    (2)ホームページから
    URLを http://fmv.komazo.com/cgi-bin/namazu.cgi
    としました。検索ページが表示され、検索式(キーワード)を'test'と入力して検索し、結果が表示されました。今度はちゃんと動きました。


    □インデックスを自動でアップデート
    いちいちインデックスを手作業で更新するのは面倒なので、「namazuupdate」を/etc/cron.hourlyに以下の内容で作成し、ファイルの属性を755とすることで一時間毎にファイルを確認しファイルが新しくなっているならばインデックスを自動更新するように変更しました。

    namazuupdateの内容
    echo namazu update
    /usr/local/bin/mknmz -O /usr/local/namazu/index/ /home/httpd/html/database/ >/root/namazuupdate.log

    ちなみに、crontabには、
    01 * * * * root run-parts /etc/cron.hourly
    となっているので、namazuupdateは、毎時1分過ぎに起動されるはずです。


■その他
     WindowsのIE5.0で名前を付けて保存の時にhtml形式で保存すると、ファイルで使用している画像ファイルも一緒に保存される。これをdatabaseへドラッグアンド、ドロップで\\fox\databaseへコピーし、インデックスが自動アップデートされてから検索してみる。メインのhtmlファイルは検索表示可能だが、画像が表示されないものがある。srcでリンクしている場合に、ファイルの名前(フォルダ名)にスペースなどが含まれると表示されないようです。
by SmallBrother

  [TopPage] [New] [SB's Room] [Linux]