全文検索 namazu

2005/05/06

Vine3.1の環境で、namazuを使って全文検索できるようにしてみましたので、そのときのメモです。

なお、この「釣ったよ!」では使っていません。作りかけのページが点在しているためです。お恥ずかしいページまで検索されてしまうので、あえてnamazuを使っていません。
でも、社内では以下で使えているので参考にはなると思います。


このメモの目標

単純にVine付属のnamazuで検索するだけでしたらとても簡単なので、ここでは以下の目標で構築することにします。

  • namazu.cgiを使ってWebブラウザで検索できるようにする。
  • 出来る限りの文書を検索対象にする。たとえばWordやExcelの文書も検索できるとイントラ環境では便利なためです。
  • SAMBAで共有している文書も検索対象にする。検索結果から、すぐにファイルを編集できるようにします。

namazuのインストールと設定

Vine3.1付属のnamazuでは、一部の文書が検索対応になりません。 ここでは色々な種類の文書に対応できるようにnamazuをインストールしましょう。
以下のようにインストールすると次の種類の文書を検索対象にできます。(Vine標準で対応しているものも含む)

  • 通常のテキスト・ファイル
  • gzipで圧縮されたファイル
  • bzip2で圧縮されたファイル
  • compressで圧縮されたファイル
  • MS-Excel, MS-Word, MS-PowerPointの文書
  • OpenOffice.orgのWriter,Calc,Impress,Draw文書
  • 一太郎 バージョン5〜13までのファイル
  • PDF文書
  • HTML文書
  • HDML文書
  • RTF (Rich Text Format) 形式の文書
  • TeXのファイル
  • manのファイル
  • RPMパッケージ
  • Mail/News のファイル
  • RFCのファイル
  • DIVファイル
  • ハイパー日記システムのファイル
  • MHonArcのファイル
  • Apacheのキャッシュファイル
  • MP3ファイルのID3タグ内データ

これらのファイルに対応させるには、対応する文書フィルタをインストールする必要があります。以下のようにすると上記の文書すべてに対応します。

私自身、聞いたこともないものも含まれているんですが、ほとんどはVine標準パッケージで対応しています。

  1. Vine標準で対応しているパッケージをインストールします。
    $ su -
    # apt-get update
    # apt-get install namazu libwmf wv lv xpdf detex perl-IO-stringy dvi2tty
  2. うちで作ったパッケージをインストールします。
    # rpm -Uvh http://tsuttayo.sytes.net/apt/vine3.1/RPMS.i386/rtf2html-0-0vl0.i386.rpm
    # rpm -Uvh http://tsuttayo.sytes.net/apt/vine3.1/RPMS.i386/xlhtml-0.4.9.2-0vl0.i386.rpm
    # rpm -Uvh http://tsuttayo.sytes.net/apt/vine3.1/RPMS.noarch/perl-MP3-Info-1.13-0vl0.noarch.rpm
    # rpm -Uvh http://tsuttayo.sytes.net/apt/vine3.1/RPMS.noarch/perl-OLE-Storage_Lite-0.14-0vl0.noarch.rpm
    # exit

インデックスの生成

namazuは事前にインデックスを生成しておき、それを使って検索します。

ここでは、例として「sg」というユーザーのホームディレクトリに保存してあるファイルを検索できるようにインデックスを作ってみます。

インデックスは/home/sg/namazu/以下に保存することとします。

  1. sgでログインします。
  2. 初回はインデックス用のディレクトリを作ります。
    $ mkdir ~/namazu
  3. インデックスを生成します。 最初の1回目は時間がかかりますが、2回目以降は変更されたファイルのみインデックスの更新をするため、さほど時間はかからないと思います。
    $ mknmz -a --exclude=\/namazu\/ -U -O ~/namazu ~

    上記オプションの意味は、

    • -a = すべての文書を対象にする
    • -U = URLのエンコードを行わない (SAMBA管理下のファイルを利用するため、指定しています)
    • -O = インデックスの出力先ディレクトリを指定する
    • --exclude = 除外するパターンを指定する (上記では/namazu/という文字列が含まれるものは処理しなくなる)


namazu.cgiの設置

ここでは、 http://SERVER/~sg/namazu.cgi でCGIが動作するように、すでにApacheが設定済みとして書きます。

  1. namazu.cgiをインストールします。
    $ su -
    # apt-get install namazu-cgi
    # exit
  2. namazu.cgiと設定ファイル(.namazurc)をコピーします。
    $ cp /home/httpd/cgi-bin/namazu.cgi ~/public_html/namazu.cgi
    $ cp /home/httpd/cgi-bin/.namazurc ~/public_html/.namazurc
  3. .namazurcを編集します。
    $ emacs ~/public_html/.namazurc
    # インデックスのディレクトリを指定
    Index         /home/sg/namazu
    
    # テンプレートのディレクトリを指定
    Template      /home/sg/namazu
    
    # SambaファイルはURLを書き換える
    # SERVER_NAMEはSamba接続時のサーバ名を指定します
    Replace        /home/           file://SERVER_NAME
    

これで、http://SERVER/~sg/namazu.cgi にアクセスすると検索ページが開くと思います。

ただし、これでは全ユーザーが検索結果を見れてしまいますので、.htaccessなどによりアクセス制御するほうがいいと思います。


参考にした資料

Namazu User's Manual

Namazu 2.0 入門/namazurc

Copyright©2001-2019 釣ったよ! All Right Reserved.    sg@tsuttayo.jpn.org