namazuで作る、PDF、Word、Excel全文検索システム

この記事は2013年8月15日に書かれたものです。内容が古い可能性がありますのでご注意ください。


namazuで作る、PDF、Word、Excel全文検索システム

今更感もありますが、要り用になったためトライしてみました。
使用したサーバは、Apacheインストール済みのCentOS5です。

手順1.nkfインストール

nkfは「Network Kanji Filter」のこと。
日本語文字コード変換処理に必要だそうです。

※既にnkfがインストールされていればここは不要。手順2へGo!
「# which nkf」で「/usr/bin/nkf」が返ってきたら効いてます。
私はnkfコマンドが既に有効だったのでここはスルーしました。

# cd /usr/local/src
# wget http://sourceforge.jp/projects/nkf/downloads/53171/nkf-2.1.2.tar.gz
# tar xvfz nkf-2.1.2.tar.gz
# cd nkf-2.1.2
# make
# cp nkf /usr/bin

手順2.kakasiインストール

形態素解析を行ってくれるkakasi。インデックス(単語辞書のようなもの)を作成してくれる。
他にchasenという形態素解析ツールを使う方法も有りらしいけれど、kakasiでやっている人の方が多いよう。
私も多勢に倣い、kakasiでいきました。

# cd /usr/local/src
# wget http://kakasi.namazu.org/stable/kakasi-2.3.4.tar.gz
# tar xvfz kakasi-2.3.4.tar.gz
# cd kakasi-2.3.4
# ./configure
# make
# make install

手順3.namazuインストール

いよいよnamazuです。

# cd /usr/local/src
# wget http://www.namazu.org/stable/namazu-2.0.21.tar.gz
# tar xvfz namazu-2.0.21.tar.gz
# cd namazu-2.0.21/File-MMagic
# perl Makefile.PL
# make install
# cd /usr/local/src/namazu-2.0.21
# ./configure
# make
# make install

手順4.mknmzrcの編集

mknmzコマンドは検索用のインデックス(実際はファイルが全文検索されるのではなく、このインデックスが検索される)を作成するコマンドです。
その作成オプションを定義するのがこの「mknmzrc」ファイル。
デフォルトでは存在しないのでサンプルをコピーしてから編集します。
なお、これがなくてもmknmzコマンド自体は効きますので、とりあえずデフォルトでOKという方はスルーしてください。

# cp -p /usr/local/etc/namazu/mknmzrc-sample /usr/local/etc/namazu/mknmzrc
# vi /usr/local/etc/namazu/mknmzrc
(編集が必要であれば行う)

検索対象にするファイルや検索除外ファイルの拡張子指定などができます。
私は「$FILE_SIZE_MAX」を編集しました。

手順5.mknmzの編集

手順4同様、mknmzコマンド用のファイルの編集です。
このファイルはインストール後、デフォルトで存在します。

# vi /usr/local/bin/mknmz
(1行目の「-w」を削除)

手順6.namazurcの編集

namazuコマンドは検索を行うコマンド。その時の様々な設定をするのがnamazurc。
このファイルもデフォルトではないので、サンプルをコピーしてから編集します。

# cp -p /usr/local/etc/namazu/namazurc-sample /usr/local/etc/namazu/namazurc
# vi /usr/local/etc/namazu/namazurc
(必要箇所を編集)

編集箇所は次のような感じでひとまず十分です。
・INDEX:
インデックス作成先ディレクトリ(手順7で作成しますのでそのディレクトリまでのフルパスを記載します)
・Template:
インデックスと同様でOK。検索結果などをブラウザ表示するときのテンプレートのパスです。
・Replace:
検索にヒットしたファイルのリンクを検索結果に表示するとき、サーバフルパスではなく、URLとして表示されるように置換するパスを指定しておきます。
・Lang:
サーバ環境変数LANGと合わせましょう。サーバのLANGはlocaleコマンドなどで確認できます。
但し、ja_JP.utf8はNG。どうやらnamazuはutf8に対応していないようなのです(ここの詳細は不明ですが、utf8ではうまくいきませんでした(文字化けが直らない))。
・Charset:
ブラウザ出力する際のcharsetを指定します。

ちなみに、私は次のように指定しました(XXXXXは仮)
INDEX /usr/local/var/namazu/index/XXXXX/
Template /usr/local/var/namazu/index/XXXXX/
Replace (※後述の.namazurcファイルの方に記載)
Lang ja_JP.eucjp
Charset “ja_JP.eucjp” “EUC-JP”

手順7:インデックスディレクトリ作成

# mkdir /usr/local/var/namazu/index/XXXXX

ここまできたらひとまず、コマンドライン上でmknmzコマンドを実行して、インデックスを作成しましょう。

# mknmz -O /usr/local/var/namazu/index/XXXXX/ /usr/local/apache2/htdocs/YYYYY/

YYYYYは仮です。この中に幾つかファイルを入れてみて、中身が検索されるか見てみてください。

そして検索namazuコマンド

# namazu てすと /usr/local/var/namazu/index/XXXXX

結果が表示されればよいのですが、ファイル形式によってはうまくいかないかも。
長くなってしまったので今回はここまでですが、PDF,Excel,Wordを読み込むためのモジュール組込手順は次の記事で。

  • このエントリーをはてなブックマークに追加

PAGE TOP