Ubuntu + Namazu + 他でWordとかExcelとかPDFとかテキストとかを日本語全文検索してみた
UbuntuサーバーにNamazuの全文検索機能を導入してみた。
ゴールとしてはHTMLのインターフェースからサーバー内のテキスト、Word、Excel、PowerPoint、PDFファイルなんかを日本語全文検索できるようにすることだけど、とりあえずコマンドラインから対象のファイルを日本語全文検索できるようになったので、その過程をメモ。
日本語対応周りで嵌らなければ特に設定とかすることもなくて楽チン。
必要なパッケージのインストール
まずはNamazuのインストール。
sudo aptitude install namazu2 namazu2-index-tools
検索用のnamazu2とインデックス作成用のnamazu2-index-toolsをインストールする。
続いて、日本語のインデックス作成に使うKAKASIとNKFのインストール。
sudo aptitude install libtext-kakasi-perl libnkf-perl
どちらもPerlモジュール。日本語文の形態素解析をやってくれる。
加えて、Word、Excel、PDF等に対応するためのフィルターをインストールする。
sudo aptitude install wv xlhtml xpdf
これらのパッケージをインストールしておけば、特に設定しなくてもとりあえずWordとかのファイルを検索対象に含めてくれるようになっている。
さらに、今までUbuntuを英語で使っていたので、日本語ロケールをインストールする。
sudo aptitude install language-pack-ja language-support-ja
EUC-JPロケールの作成
Namazuはインデックス作成の時にロケールを見て文書の言語を判断しているらしい。Ubuntuで標準的に使われる日本語ロケールはja_JP.utf8だが、NamazuはUTF-8に対応していないため、ja_JP.EUC-JPロケールを作成して対応する必要がある。
↓ja_JP.EUC-JPロケールを作成するコマンド。
sudo locale-gen ja_JP.EUC-JP
あっけないほどあっという間に終わる。locale -a
を実行してみて、ja_JP.eucjpが追加されていればOK。
ロケールの変更
mknmzコマンドでインデックスを作成することができるが、その前にロケールをja_JP.eucjpに変更する。
個人的に、システムのロケールを日本語に変更してしまうのはいろいろとトラブルの恐れがあって怖いので、↓のようにロケールを変更したシェルを立ち上げてその中で作業する。
LANG=ja_JP.eucjp zsh
後はターミナルの文字コードをEUC-JPに変更すればOK。TeraTermなら↓のような感じ。
インデックス作成
mknmzコマンドでインデックスを作成する。
mknmz -O /path/to/index/directory /path/to/target/directory
インデックスファイルの置き場所を-Oオプションで指定し、インデックス対象のディレクトリを引数で指定する。
しばらく時間がかかるけど、とりあえず良きに取り計らってくれている様子。
インデックス作成は定期的に実行しなければいけないので、とりあえずcrontab -e
して次のように設定しておいた。
30 2 * * * LANG=ja_JP.eucjp zsh -c 'mknmz -O /path/to/index/directory /path/to/target/directory'
毎日午前2時半にインデックス作成を実行する設定だけど、ちゃんと実行されるかどうかはまだ確認してない。
検索
namazuコマンドで検索を実行。
namazu 検索語句 /path/to/index/directory
とりあえず↓のような感じで検索結果が出力される。例ではExcelファイルがヒットしている。
% namazu 現金 .index 検索結果 参考ヒット数: [ 現金: 1 ] 検索式にマッチする 1 個の文書が見つかりました。 1. book.xls (スコア: 8) 著者: LiosK 日付: Wed, 03 Nov 2010 22:42:31 +0900 TrialBalance Ledger 勘定 データ 現金 預金口座 クレジットカード 借入金 全体の 入金 全体の 出金 全体の 残高 区分 費目 入金 出金 残高 入金 出金 残高 入金 出金 残高 入金 出金 残高 前 期末残高 前期繰越 30 /home/liosk/Desktop/book.xls (17,920 bytes) 現在のリスト: 1 - 1
まだ、PDFファイルのプロテクトの影響でインデックスされてないPDFが結構多かったり (Unable to convert pdf file (maybe copying protection)っていうエラーが出まくる)、ファイルサイズの上限設定をいじってないせいでインデックスされずにはじかれてるファイルが結構あったり (デフォルトではテキストファイルで600KB、バイナリファイルで2MB)、検索結果に含まれるファイルパスがUTF-8エンコードされてて文字化けしたり (日本語ファイル名のファイルが全滅)、という感じで問題点が噴出しまくってるけど、とりあえず初めの一歩としては上出来なのではないか。ここまでなら悩まなければ30分でできる。
後はWebサーバーを立てなきゃいけないし、ロケール問題は今後も悩まされそうだから、仮想化してja_JP.eucjpロケールのサーバーを一台立てたほうがいいのかなとも思ったり。
関連記事
- KeeperでKeePass 2.xのファイルを読むためのXSLファイルを更新しました
- iPhone用KeeperでKeePass 2.xのファイルを読むためのXSLTを更新しました
- Ubuntu + Namazu + 他でWordとかExcelとかPDFとかテキストとかを日本語全文検索してみた
- Kindle 3 + BOOKSCANの組み合わせが最強すぎる件
- 手挽きのコーヒーミルを買ってみた
トラックバック URL
- http://liosk.blog103.fc2.com/tb.php/206-92c63ae6