Carpe Diem

備忘録。https://github.com/jun06t

namazuのインストール

検索エンジンnamazuのインストール方法です。 なんで公式にはコマンド系のドキュメントがないんだろう。 まずはnkfkakasiをインストール。これらを先にインストールした後じゃないと、namazuの./configureでパスが通らないため、インデックスを作成するときに sh: no: command not found と怒られる。うん、怒られた。 nkfの方は $ sudo apt-get install nkf でOK。 kakasiの方はnamazuのサイトにある kakasi-2.3.4.tar.gz をタウンロードして展開。フォルダに入って $ ./configure $ make $ sudo make install でインストール出来ます。nkfkakasiがインストール出来たら、namazuも同じように namazu-2.0.20.tar.gz をダウンロードして展開。フォルダに入って $ ./configure $ make $ sudo make install 次は設定です。この設定公式にもしっかり書いてほしい。。 ◆mknmzコマンド設定 もともとあるサンプルファイル(mknmzrc-sample)を元に、mknmzrcという名で設定ファイルを作ります。 $ cp /usr/local/etc/namazu/mknmzrc-sample /usr/local/etc/namazu/mknmzrc $ sudo emacs -nw /usr/local/etc/namazu/mknmzrc # $ALLOW_FILE = ".*\\.(?:$HTML_SUFFIX)|.*\\.txt" . # HTML, plain text # "|.*\\.gz|.*\\.Z|.*\\.bz2" . # Compressed files # "|.*\\.pdf|.*\\.ps" . # PDF, PostScript # "|.*\\.tex|.*\\.dvi" . # TeX, DVI # "|.*\\.rpm|.*\\.deb" . # RPM, DEB # "|.*\\.doc|.*\\.xls|.*\\.pp[st]" . # Word, Excel, PowerPoint # "|.*\\.j[sabf]w|.*\\.jtd" . # Ichitaro 4, 5, 6, 7, 8 # "|.*\\.sx[widc]" . # OpenOffice Writer,Calc,Impress,Draw # "|.*\\.rtf" . # Rich Text Format # "|.*\\.hdml" . # HDML # "|.*\\.mp3" . # MP3 # "|\\d+|[-\\w]+\\.[1-9n]"; # Mail/News, man $ALLOW_FILE = ".*\\.(?:$HTML_SUFFIX)"; ← 追加(HTMLを検索対象にする) #がついてるのはサンプルのテンプレートです。この書き方に習ってファイルを追加してください。上の例ではHTMLのみ検索できます。 少し下に進むと、検索ファイル対象の最大ファイルサイズの設定があるのでそこも。 # The max file size for indexing. Files larger than this # will be ignored. # NOTE: This value is usually larger than TEXT_SIZE_MAX because # binary-formated files such as PDF, Word are larger. # # $FILE_SIZE_MAX = 2000000; $FILE_SIZE_MAX = 200000000000; ← 追加 デフォルトでは2M以下のファイルしか検索対象にされないので、上の例では200Gのファイルまで検索対象に入れてます。 次はmknmzコマンド編集です。mknmzコマンドが"Use of uninitialized・・・"というエラーメッセージを出力しないようにする対処です。 $ sudo emacs -nw /usr/local/bin/mknmz #! /usr/bin/perl -w ↓ #! /usr/bin/perl ← -wを削除namazuコマンド設定 インデックスを元に検索を行うnamazuコマンドを設定します。これを設定しないと検索結果で文字化けします。 まずは先ほどと同じくサンプルファイルを元に設定ファイルを作成します。 $ cp /usr/local/etc/namazu/namazurc-sample /usr/local/etc/namazu/namazurc $ sudo emacs -nw /usr/local/etc/namazu/namazurc ## Replace: Replace TARGET with REPLACEMENT in URIs in search ## results. ## ## TARGET is specified by Ruby's perl-like regular expressions. ## You can caputure sub-strings in TARGET by surrounding them ## with `(' and `)'and use them later as backreferences by ## \1, \2, \3,... \9. ## ## To use meta characters literally such as `*', `+', `?', `|', ## `[', `]', `{', `}', `(', `)', escape them with `\'. ## ## e.g., ## ## Replace /home/foo/public_html/ http://www.foobar.jp/~foo/ ## Replace /home/(.*)/public_html/ http://www.foobar.jp/\1/ ## Replace /C\|/foo/ http://www.foobar.jp/ ## ## If you do not want to do the processing on command line use, ## run namazu with -U option. ## ## You can specify more than one Replace rules but the only ## first-matched rule are applied. ## #Replace /home/foo/public_html/ http://www.foo.bar.jp/~foo/ Replace /var/www/webdav/ https://yyyyyyy.org/ ← 追加 上の例は/var/www/webdav/をhttps://yyyyyyy.org/に置換しています。これをすると検索結果を出すときにフォルダ構造ではなくhttps://の形で返してくれます。Webページに実装するなら必須です。 さらに下で ## Lang: Set the locale code such as `ja_JP.eucJP', `ja_JP.SJIS', ## `de', etc. This directive works only if the environment ## variable LANG is not set because the directive is mainly ## intended for CGI use. On the shell, You can set ## environemtnt variable LANG instead of using the directive. ## ## If you set `de' to it, namazu.cgi use ## NMZ.(head|foot|body|tips|results).de for displaying results ## and use a proper message catalog for `de'. ## #Lang ja Lang ja_JP.eucJP ← 追加 とすれば、検索結果で文字化けしないで表示されます。 ◆インデックスの作成 まずはインデックスの作成先フォルダを作ります。searchという名前にします。 $ mkdir /usr/local/var/namazu/index/search では検索対象にしたいフォルダ(今回は/var/www/webdavとします)を指定して、インデックスを作成します。 $ mknmz /var/www/webdav -O /usr/local/var/namazu/index/search|nkf -w -O以下はオプションで、インデックスの作成先を指定しています。これがないとカレントフォルダに作成されます。 ちゃんと作成が確認できましたか?ちなみにこれ、ファイルサイズが大きいほど時間がかかりますし、マシンに負荷を与えます。プチフリになることもあるので。 ◆検索 インデックスの作成ができたら、次は実際にインデックスを参照して検索してみます。例えばtestという文字で検索したい場合は $ namazu test /usr/local/var/namazu/index/search|nkf -w と打ちます。ちゃんと検索結果が返ってくるのが分かると思います。 とりあえずターミナル上でのインデックス作成、検索のみで。 WebページにCGIとして載せるのはまた次回以降。 けどこれファイルが漫画とかだと、zipの中身のjpegまでキーワード対象になってキーワード数が異常に多くなるから使わないかもしれません。もしかして付加かかるのもそのせいなのかな?mkvとかの動画ファイルはインデックス作成するのに何時間かかかることやら…。