ホーム
新着サイト

ニュースサイト
ソフトウェア
フリー・シェアウェア
出版社
情報処理技術者試験
ベンダー試験
求人情報
ノンセクション
Microsoft
Windows
Windows2000
WindowsNT
Windows9x
プログラミング
Visual Basic
C
C++
Java
Delphi
COM/DCOM
Office/VBA
WebDesign
HTML/XML
JavaScript
VBScript
Servlet/JSP
JavaApplet
CGI&SSI
Perl
Active Server Pages
PHP
データベース
Oracle
PostgreSQL
MySQL
UNIX
Linux
FreeBSD
Mac
Server Software
DNS
Mail
Web
Application Server
オブジェクト指向
セキュリティ
ネットワーク

Cool Site
随時更新
ハードウェア
インターネット
テレコミ
プロバイダ
レンタルサーバ
v
検索
視力回復情報
ITNAVI.com
別冊(実用)

ITNAVI.com
ガイド



リンク切れ報告、サイト情報お待ちしています"
sawa@itnavi.com


リンクは御自由にどうぞ




Namazuで検索する


構築環境
Red Hat Linux 6.2J
Red Hat Linux 7.1
検索エンジンのようにあるキーワードを使い、サーバ内のドキュメントを検索するのに、Namazuを使うと便利だ。findやgrepと違い大量のファイルから検索する場合に事前にインデックスを作成しておくことで高速に検索できる。

Namazu以外の検索エンジンソフトについては、下記で詳細にまとめられている。
Lists of the full-text retrieval softwares which can handle japanese properly.
日本語全文検索エンジンソフトウェアのリスト

インストール編
1.Namazuをインストールする
2.各種フィルタをインストールする
3.日本語解析に茶筌を使う
運用編
1.複数のインデックスを使用する

インストール編

1.Namazuをインストールする。
今回はソースからインストールする。

    まず必要なファイルをダウンロードしよう。
    Namazu2.0.12 
    namazu-2.0.12.tar.gzをダウンロードする。
    (2006年1月29日現在 最新版は、Namazu2.0.15)
    NKF(日本語フィルタ) nkf192.sharをダウンロードする。
    (2003年5月6日現在 最新版は、nkf192)
    かかし(日本語・ローマ字変換系) kakasi-2.3.4.tar.gzをダウンロードする。
    かかし、Perlモジュール Text-Kakasi-1.05.tar.gzをダウンロードする。
    (2003年5月6日現在 最新版は、Text-Kakasi-1.05)
    下記の例は、ダウンロードしたファイルを/home/hoge/に配置している。

  1. まず、NKFをインストールする。
    $ cd /home/hoge
    $ mkdir nkf192
    $ cd nkf192
    $ sh /home/hoge/nkf192.shar
    $ make
    $ su
    # cp nkf /bin/
    # cp nkf.1 /usr/man/man1/
    

  2. かかしをインストールする。
    $ cd /usr/hoge
    $ tar xzf kakasi-2.3.4.tar.gz
    $ cd kakasi-2.3.4
    $ ./configure
    $ make
    $ su
    # make install
    

  3. かかし、Perlモジュールをインストールする。
    $ cd /usr/hoge
    $ tar xzf Text-Kakasi-1.05.tar.gz 
    $ cd Text-Kakasi-1.05
    $ perl Makefile.PL 
    $ make
    $ su
    # make install
    

  4. なまずをインストールする。
    $ cd /home/hoge
    $ tar xzf namazu-2.0.12.tar.gz
    $ cd namazu-2.0.12/File-MMagic/
    $ perl Makefile.PL
    $ make
    $ su
    # make install
    # exit
    $ cd /home/hoge/namazu-2.0.12
    $ ./configure
    $ make
    $ su
    # make install
    

  5. Webから検索をかけたい場合は、NamazuCGIをCGI実行可能ディレクトリにコピーする。
    CGIを実行したいディレクトリはapacheの場合、httpd.confのOptionsにExecCGIの記述が必要です。
    ここでは、/usr/local/apache/cgi-binで実行するものとします。
    pre> # cp /usr/local/libexec/namazu.cgi /usr/local/apache/cgi-bin

  6. なまずの設定ファイルを作成する。
    サンプルをコピーして使用する。
    # cp /usr/local/etc/namazu/namazurc-sample /usr/local/etc/namazu/namazurc
    # cp /usr/local/etc/namazu/mknmzrc-sample /usr/local/etc/namazu/mknmzrc
    

  7. namazuの設定ファイルnamazurcを編集する。
    # vi /usr/local/etc/namazu/namazurc コメントアウトを外し修正した部分を下記に示す。
    Index         /usr/local/var/namazu/index
    Template      /usr/local/var/namazu/index
    Replace       /home/hoge/  http://itnavi.com/hoge/
    Logging       on
    Lang          ja
    Scoring       tfidf
    EmphasisTags  "<strong class=\"keyword\">"   "</strong>"
    

  8. インデックスを作成するmknmzの設定ファイルmknmzrcを編集する。
    # vi /usr/local/etc/namazu/mknmzrc コメントアウトを外し修正した部分を下記に示す。
    $ADDRESS = 'webmaster@itnavi.com';
    $HTML_SUFFIX = "html?|[ps]html|html\\.[a-z]{2}";
    $ALLOW_FILE =        ".*\\.(?:$HTML_SUFFIX)|.*\\.txt" . # HTML, plain text
    $DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*";
    $DIRECTORY_INDEX = "";
    $REMAIN_HEADER = "From|Date|Message-ID";
    $SEARCH_FIELD = "message-id|subject|from|date|uri|newsgroups|to|summary|size";
    $NON_SEPARATION_ELEMENTS = 'A|TT|CODE|SAMP|KBD|VAR|B|STRONG|I|EM|CITE|FONT|U|'.
                           'STRIKE|BIG|SMALL|DFN|ABBR|ACRONYM|Q|SUB|SUP|SPAN|BDO';
    $ON_MEMORY_MAX   = 5000000;
    $FILE_SIZE_MAX   = 2000000;
    $TEXT_SIZE_MAX   =  600000;
    $WORD_LENG_MAX   = 128;
    %Weight =
        (
         'html' => {
             'title'  => 16,
             'h1'     => 8,
             'h2'     => 7,
             'h3'     => 6,
             'h4'     => 5,
             'h5'     => 4,
             'h6'     => 3,
             'a'      => 4,
             'strong' => 2,
             'em'     => 2,
             'kbd'    => 2,
             'samp'   => 2,
             'var'    => 2,
             'code'   => 2,
             'cite'   => 2,
             'abbr'   => 2,
             'acronym'=> 2,
             'dfn'    => 2,
         },
         'metakey' => 32, # for 
         'headers' => 8,  # for Mail/News' headers
    );
    $INVALID_LENG = 128;
    $MAX_FIELD_LENGTH = 200;
    $NKF = "/bin/nkf";
    $KAKASI = "/usr/local/bin/kakasi -ieuc -oeuc -w";
    $WAKATI  = $KAKASI;
    

  9. /home/hogeを検索するためのインデックスを作成する。
    mknmzをする前に下記の環境変数を設定しないと日本語での検索ができない。
    export LANG=ja_JP.ujis
    export PERL_BADLANG=0
    

    mknmzを実行することでインデックスが作成される。インデックスを更新したいサイクルでcronで実行すると良いだろう。
    /home/hogeを検索対象にするなら、下記のようになる。
    # mknmz -a -O /usr/local/var/namazu/index/ /home/hoge/
    

  10. 早速、hogeを検索してみる。
    # namazu hoge /usr/local/var/namazu/index/
    

    Webページから検索するには、さきほどコピーしたnamazu.cgiをブラウザからアクセスすると検索ページが表示される。
    例.
    http://hoge/cgi-bin/namazu.cgi

    インデックス作成時は多くのメモリを必要とします。検索対象のファイルが多い場合、"Out of memory!"で止まってしまう場合があります。その時の対処として、--checkpoint オプションを使用する方法があります。
    Namazu tips

  11. rpmからインストールしたい向きには、ftp://ftp.namazu.org/namazu/redhat-6/i386/からrpmをダウンロードする。

    # ls
    kakasi-2.3.3-1.i386.rpm            nkf-1.71-2.i386.rpm
    kakasi-devel-2.3.3-1.i386.rpm      perl-File-MMagic-1.12-1.i386.rpm
    kakasi-dict-2.3.3-1.i386.rpm       perl-NKF-1.71-2.i386.rpm
    namazu-2.0.5-5.6.x.i386.rpm        perl-Search-Namazu-0.13-1.i386.rpm
    namazu-cgi-2.0.5-5.6.x.i386.rpm    perl-Text-Kakasi-1.05-1.6.x.i386.rpm
    namazu-devel-2.0.5-5.6.x.i386.rpm
    

    # rpm -ivh perl-File-MMagic-1.12-1.i386.rpm perl-NKF-1.71-2.i386.rpm \
    kakasi-2.3.3-1.i386.rpm perl-Text-Kakasi-1.05-1.6.x.i386.rpm
    # rpm -ivh namazu-2.0.5-5.6.x.i386.rpm
    # rpm -i nkf-1.71-2.i386.rpm
    file /usr/bin/nkf from install of nkf-1.71-2 conflicts with file from
     package nkf-1.70p1-3
    file /usr/man/ja_JP.eucJP/man1/nkf.1.gz from install of nkf-1.71-2 con
    flicts with file from package nkf-1.70p1-3
    file /usr/man/man1/nkf.1.gz from install of nkf-1.71-2 conflicts with 
    file from package nkf-1.70p1-3
    # rpm -qa | grep nkf
    nkf-1.70p1-3
    # rpm -Uvh nkf-1.71-2.i386.rpm
    # rpm -ivh namazu-cgi-2.0.5-5.6.x.i386.rpm
    

    Apacheをrpmで入れていなかったため、namazu-cgiがrpmで入らなかった。
    # rpm -ivh namazu-cgi-2.0.5-5.6.x.i386.rpm
    エラー: 依存性の欠如:
            webserverは namazu-cgi-2.0.5-5.6.x に必要とされています
    


2.各種フィルタをインストールする
これにより、Excel,Word,PDFも検索対象になる。
  1. Word用のフィルタ wvWare wvWare Breaking the Hegemonyよりwv-0.7.5.tar.gzをダウンロードする。
    (2004年11月28日現在 最新版は、wv-1.0.2)
    $ tar xzf wv-0.7.5.tar.gz
    $ cd wv-0.7.5
    $ ./configure
    $ make
    $ su
    # make install
    
    Word の文書ファイルが未対応の形式になってしまう問題があります。
    msword.pl: wvWare0.7.4 未対応 (namazu-bugs-ja#535) その場合は、/usr/local/share/namazu/filter/msword.pl を修正します。

  2. LV LV Homepageよりlv4494.tar.gzをダウンロードする。
    (2004年11月28日現在 最新版は、lv451)
    $ tar xzf lv4494.tar.gz
    $ cd lv4494
    $ cd build
    $ ../src/configure
    $ make
    $ su
    # make install
    

  3. Excel用のフィルタ xlHtml The xlhtml Homepageよりxlhtml-0.5.gzをダウンロードする。
    $ tar xzf xlhtml-0.5.gz
    $ cd xlhtml-0.5
    $ ./configure
    $ make
    $ su
    # make install
    

  4. PDF用のフィルタ xpdf Xpdf A PDF viewer for Xよりxpdf-1.00.tar.gzをダウンロードする。
    (2004年11月28日現在 最新版は、xpdf-3.00)
    $ tar xzf xpdf-1.00.tar.gz
    $ cd xpdf-1.00
    $ ./configure
    $ su
    # make install
    # exit
    $ cd ..
    $ tar xzf xpdf-japanese.tar.gz
    $ cd cd xpdf-japanese
    $ su
    # mkdir -p /usr/local/share/xpdf/japanese
    # cp -R * /usr/local/share/xpdf/japanese
    # cat add-to-xpdfrc >> /usr/local/etc/xpdfrc
    
    最後に、/usr/local/etc/xpdfrc に add-to-xpdfrc の内容を追加する。
    上記のフィルタを使用する場合、mknmzrcの$ALLOW_FILEのコメントを外す。
                   "|.*\\.pdf" .                      # PDF
                   "|.*\\.tex" .                      # TeX
                   "|.*\\.doc|.*\\.xls" .             # Word, Excel
    


3.日本語解析に茶筌を使う。
    形態素解析システム茶筌は、言語処理のためのフリーソフトウェアとして奈良先端科学技術大学院 大学より公開されているシステムです。
    まず必要なファイルをダウンロードしよう。
    ChaSen Home Pageからchasen-2.3.0.tar.gz、ipadic-2.5.1.tar.gzをダウンロードする。
    (2003年5月6日現在 最新版は、chasen-2.3.0、ipadic-2.5.1)
    下記の例は、ダウンロードしたファイルを/home/hoge/に配置している。
    chasen-2.3.0 から ダブル配列ライブラリ Darts のインストールが必要になります。 ChaSen Home Pageからdarts-0.1.tar.gzをダウンロードする。

  1. まず、茶筌をインストールする。
    $ cd /home/hoge
    $ tar xvzf darts-0.1.tar.gz
    $ cd darts-0.1
    $ ./configure
    $ make
    $ make check
    $ su
    # make install
    # exit
    $ cd ..
    $ tar xvzf chasen-2.3.0.tar.gz
    $ cd chasen-2.3.0
    $ ./configure
    $ make
    $ su
    # make install
    

  2. 茶筌用の日本語辞書 IPADICをインストールする。
    $ cd /usr/hoge
    $ tar xvzf ipadic-2.5.1.tar.gz
    $ cd ipadic-2.5.1
    $ ./configure
    $ make
    $ su
    # make install
    

  3. mknmzrcを変更する。
    # vi /usr/local/etc/namazu/mknmzrc
    

    変更部分のみ以下に記述する。
    # KAKASI
    #
    # $KAKASI = "/usr/local/bin/kakasi -ieuc -oeuc -w";
    
    #
    # ChaSen 1.51 or later (simple wakatigaki)
    #
     $CHASEN = "/usr/local/bin/chasen -j -F '\%m '";
    
    #
    # ChaSen 1.51 or later (with noun words extraction)
    #
     $CHASEN_NOUN = "/usr/local/bin/chasen -j -F '\%m %H\\n'";
    
    #
    # Default Japanese processer: KAKASI or ChaSen.
    #
     $WAKATI  = $CHASEN;
    
    最後にNamazuのindexは、全て再作成したほうがいい。


    運用編

    1.複数のインデックスを使用する。
    ディレクトリ名は適宜環境に合わせてください。

    1. まずインデックスを作成する際に作成場所を指定するが、それを検索対象ごとに変える。
      # mknmz -a -O /usr/local/var/namazu/index/hoge1 /home/hoge1
      # mknmz -a -O /usr/local/var/namazu/index/hoge2 /home/hoge2
      

    2. テンプレートファイルである、NMZhead.jaを編集する。
      まず検索対象のコードがコメントになっているのを外し、下記のように変更する。
      # vi /usr/local/var/namazu/index/NMZ.head.ja
      <p>
      <strong>検索対象:</strong>
      <ul>
      <li><input type="checkbox" name="idxname" value="hoge1">ほげ1
      <li><input type="checkbox" name="idxname" value="hoge2">ほげ2
      </ul>
      </p>
      

      検索対象:

      • ほげ1
      • ほげ2


    3. ただデフォルトでチェック状態にしたい場合にこれだけでは、
      Namazu FAQ
      NMZ.head に checkbox の記述をしてもブラウザ上のチェックボックスがチェックされません
      にあるようにチェックボックスはチェックされない。
      head、body、footを連結し静的ページを作成しそれを検索ページのトップにする必要がある。
      # cd /usr/local/var/namazu/index
      # cat NMZ.head.ja NMZ.body.ja NMZ.foot.ja > search.html
      # mv search.html /usr/local/apache/htdocs/
      # chown nobody:nobody /usr/local/apache/htdocs/search.html
      

    4. 検索用ページを編集しnamazu.cgiの場所を埋め込む。
      # vi /usr/local/apache/htdocs/search.html
      <form method="get" action="{cgi}"> は、
      例えば、
      <form method="get" action="/cgi-bin/namazu.cgi"> のようにnamazu.cgiの場所に修正する。
      そしてほげ1をチェック状態したければ、
      <li><input type="checkbox" name="idxname" value="hoge1">ほげ1 を、
      <li><input type="checkbox" name="idxname" value="hoge1" checked>ほげ1 に修正する。








    オープンノースの検索エンジン Namazu


    先頭へ戻る トップページへ戻る


    2002年5月6日更新



コンピュータ関連の本なら、ここがオススメ! 東京都23区内なら同日配達、日本全国48時間以内に配達。東京都23区内なら、朝に注文して、午後に届くこともあります。送料無料サービス実施中。

改訂 Namazuシステムの構築と活用
馬場肇著。Namazu本のベストセラーの改訂。
転ばぬ先の杖。ウィルス対策!

Virus Bulletin誌で100%検出の栄誉を業界最多の33回受賞の
cover
NOD32

1,980円でできるウイルス対策。ウイルス対策、ハッカー対策、個人情報漏洩対策、スパム対策がこれ一本で
cover
ウイルスセキュリティ
Copyright(c) 1999-2017 ITNAVI.com