Ubuntu + Namazu + 他でWordとかExcelとかPDFとかテキストとかを日本語全文検索してみた

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Ubuntu + Namazu + 他でWordとかExcelとかPDFとかテキストとかを日本語全文検索してみた

UbuntuサーバーにNamazuの全文検索機能を導入してみた。

ゴールとしてはHTMLのインターフェースからサーバー内のテキスト、Word、Excel、PowerPoint、PDFファイルなんかを日本語全文検索できるようにすることだけど、とりあえずコマンドラインから対象のファイルを日本語全文検索できるようになったので、その過程をメモ。

日本語対応周りで嵌らなければ特に設定とかすることもなくて楽チン。

必要なパッケージのインストール

まずはNamazuのインストール。

sudo aptitude install namazu2 namazu2-index-tools

検索用のnamazu2とインデックス作成用のnamazu2-index-toolsをインストールする。

続いて、日本語のインデックス作成に使うKAKASINKFのインストール。

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なら↓のような感じ。

Tera Term

インデックス作成

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ロケールのサーバーを一台立てたほうがいいのかなとも思ったり。

スポンサーサイト

関連記事

トラックバック URL

http://liosk.blog103.fc2.com/tb.php/206-92c63ae6

トラックバック

コメント

コメントの投稿

お名前
コメント
編集キー
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。